CMVC FREQUENTLY ASKED QUESTIONS:
               MISCELLANEOUS TOPICS (USERS, DEFECTS/FEATURES, ACCESS, ETC.)
 
 
                                                 Document Number TR 29.2329
 
 
                                                   Angel Rivera, Lee Perlov
 
 
                                            CMVC/TeamConnection Development
                                                     IBM Software Solutions
                                     Research Triangle Park, North Carolina
                                               Copyright (C) 1997 IBM Corp.
                                                       All rights reserved.
 
 
          ii  CMVC FAQ: end user tasks
 
 
                                                                   ABSTRACT
 
 
          This technical report provides answers to frequently asked
          questions made by CMVC users with respect to miscellaneous
          topics:
 
          o   End user tasks
          o   Defects and features
          o   Administration of users
          o   Components and authority access
          o   Special reports
          o   Notification
          o   Miscellaneous
 
 
          ITIRC KEYWORDS
 
          o   CMVC
 
          o   components
 
          o   defects
 
          o   features
 
          o   users
 
          o   access
 
          o   notification
 
          o   reports
 
 
                                                              ABSTRACT  iii
 
 
          iv  CMVC FAQ: end user tasks
 
 
                                                          ABOUT THE AUTHORS
 
 
          ANGEL RIVERA
 
          Mr. Rivera is an Advisory Software Engineer and team lead for the
          development of CMVC 2.3.  He joined IBM in 1989 and since then
          has worked in the development and support of library systems.
 
          Mr. Rivera has an M.S. in Electrical Engineering from The Univer-
          sity of Texas at Austin, and B.S. in Electronic Systems Engi-
          neering from the Instituto Tecnologico y de Estudios Superiores
          de Monterrey, Mexico.
 
 
          LEE R. PERLOV
 
          Mr. Perlov is a Staff Software Engineer in the
          TeamConnection/CMVC development group.  He started working for
          IBM in 1985 in Gaithersburg, Md, working in the Federal Systems
          Division on various projects for the United States intelligence
          community.  He then moved to RTP to work on library development
          and support.
 
          Mr. Perlov received a B.S.Acc degree in Accounting from the Uni-
          versity of Florida in 1983.  He also completed two years of grad-
          uate work in the Department of Computer Science at the University
          of Florida.
 
 
                                                       ABOUT THE AUTHORS  v
 
 
          vi  CMVC FAQ: end user tasks
 
 
                                                                   CONTENTS
 
 
          ABSTRACT   . . . . . . . . . . . . . . . . . . . . . . . . .  III
            ITIRC KEYWORDS   . . . . . . . . . . . . . . . . . . . . .  iii
 
          ABOUT THE AUTHORS  . . . . . . . . . . . . . . . . . . . . . .  V
            Angel Rivera   . . . . . . . . . . . . . . . . . . . . . . .  v
            Lee R. Perlov  . . . . . . . . . . . . . . . . . . . . . . .  v
 
          FIGURES  . . . . . . . . . . . . . . . . . . . . . . . . . .   IX
 
          1.0  INTRODUCTION  . . . . . . . . . . . . . . . . . . . . . .  1
            1.1  Acknowledgements  . . . . . . . . . . . . . . . . . . .  1
 
          2.0  GENERAL   . . . . . . . . . . . . . . . . . . . . . . . .  3
            2.1  Brief history of deliverables for CMVC 2.3  . . . . . .  3
            2.2  Is CMVC going to work with the Year 2000?   . . . . . .  4
            2.3  Does CMVC support encryption between the client and the
            server?  . . . . . . . . . . . . . . . . . . . . . . . . . .  4
            2.4  Does CMVC comply with military specifications?  . . . .  5
            2.5  Are CMVC and TeamConnection compatible between each
            other?   . . . . . . . . . . . . . . . . . . . . . . . . . .  5
             2.5.1  The big differences for users  . . . . . . . . . . .  6
             2.5.2  The big differences for family administrators  . . .  7
             2.5.3  The big differences for tools integrators  . . . . .  7
            2.6  What are the known incompatibilities within the CMVC
            versions?  . . . . . . . . . . . . . . . . . . . . . . . . .  8
            2.7  Clarification of sizes in Chapters 6 and 7, CMVC User's
            Reference  . . . . . . . . . . . . . . . . . . . . . . . . .  8
            2.8  Using different time zones with the CMVC client and
            server   . . . . . . . . . . . . . . . . . . . . . . . . . .  9
             2.8.1  Other tricks with time   . . . . . . . . . . . . . .  9
            2.9  What is the authentication mechanism for CMVC?  . . .   10
            2.10  Why a long family name (with port number) has
            priority over short name?  . . . . . . . . . . . . . . . .   11
            2.11  Clarification of Flag Arguments, in page 3 of
            Commands Reference   . . . . . . . . . . . . . . . . . . .   11
 
          3.0  END USER TASKS  . . . . . . . . . . . . . . . . . . . .   13
            3.1  Sample profile for a CMVC client  . . . . . . . . . .   13
            3.2  How to get the first baseline in CMVC   . . . . . . .   13
            3.3  Usage of NULL to reset 0 characters in certain
            attributes in CMVC   . . . . . . . . . . . . . . . . . . .   17
            3.4  Imbedding newline characters into comments  . . . . .   18
             3.4.1  Unix   . . . . . . . . . . . . . . . . . . . . . .   18
             3.4.2  OS/2 and Windows   . . . . . . . . . . . . . . . .   20
            3.5  How to delete an object in CMVC   . . . . . . . . . .   20
            3.6  Can the test records be assigned to someone other than
            the environment person?  . . . . . . . . . . . . . . . . .   21
            3.7  What are the prerequisites for enabling/disabling
            subprocesses?  . . . . . . . . . . . . . . . . . . . . . .   22
 
 
                                                              Contents  vii
 
 
            3.8  Using Unix alias and wrappering CMVC Commands   . . .   24
 
          4.0  DEFECTS AND FEATURES  . . . . . . . . . . . . . . . . .   27
            4.1  Cannot use a binary file as input to the remarks for a
            defect   . . . . . . . . . . . . . . . . . . . . . . . . .   27
            4.2  Cannot modify old remarks in a defect   . . . . . . .   27
            4.3  Is it normal to have duplicate verification records?    27
            4.4  How to list all the defects of a component and its
            children   . . . . . . . . . . . . . . . . . . . . . . . .   28
            4.5  Proposed workarounds for common complaints about
            defects and features   . . . . . . . . . . . . . . . . . .   28
 
          5.0  ADMINISTRATION OF USERS   . . . . . . . . . . . . . . .   31
            5.1  Suggestion that every CMVC superuser should have at
            least 2 user ids   . . . . . . . . . . . . . . . . . . . .   31
            5.2  How to modify an email through the backdoor that has
            more than 15 characters  . . . . . . . . . . . . . . . . .   32
            5.3  Error 0010-655 when trying to delete a userid   . . .   34
            5.4  Broadcasting a message to all active CMVC users   . .   34
 
          6.0  AUTHORITY ACCESS  . . . . . . . . . . . . . . . . . . .   35
            6.1  Component owner cannot give obvious authority to other
            users  . . . . . . . . . . . . . . . . . . . . . . . . . .   35
            6.2  Confusion about component owner authority   . . . . .   36
            6.3  Cannot look at the contents of a file with general
            authority  . . . . . . . . . . . . . . . . . . . . . . . .   36
            6.4  How to specify a read-only access to files in a
            component structure  . . . . . . . . . . . . . . . . . . .   37
            6.5  What is the role of the CMVC user id
            "InheritedAccess"?   . . . . . . . . . . . . . . . . . . .   38
            6.6  How do I know if the authority has been restricted in
            a component?   . . . . . . . . . . . . . . . . . . . . . .   38
            6.7  Example of inherited access in a component hierarchy    39
            6.8  Can the base authorities be restricted?   . . . . . .   40
            6.9  Additional details on restricting authority access  .   40
            6.10  Clarification on FileCheckIn and FileUndo authority
            actions  . . . . . . . . . . . . . . . . . . . . . . . . .   41
            6.11  Can I specify for files: RO Access to all  . . . . .   42
 
          7.0  SPECIAL REPORTS   . . . . . . . . . . . . . . . . . . .   43
            7.1  Hint when using % in queries in REXX files  . . . . .   43
            7.2  How to list all files checked in between 2 dates  . .   43
            7.3  How to get a list of all components that have files in
            a given release  . . . . . . . . . . . . . . . . . . . . .   44
            7.4  To get numeric sorting, use versionid instead of
            versionSID   . . . . . . . . . . . . . . . . . . . . . . .   44
            7.5  Where do the numbers for defects and features come
            from?  . . . . . . . . . . . . . . . . . . . . . . . . . .   45
            7.6  Why does "field <> 'value'" not include null?   . . .   46
            7.7  Sorting defect/feature names  . . . . . . . . . . . .   46
            7.8  Use of 1=1 as argument to query for all instances of
            an object  . . . . . . . . . . . . . . . . . . . . . . . .   47
            7.9  How to specify dates in a query   . . . . . . . . . .   48
            7.10  How do I use a Report command in a shell script?   .   48
 
 
          viii  CMVC FAQ: end user tasks
 
 
          8.0  NOTIFICATION  . . . . . . . . . . . . . . . . . . . . .   51
            8.1  Who gets notified when a CMVC action occurs?  . . . .   51
            8.2  How to remove specific notification messages from CMVC  51
            8.3  Suggestion of using another account to receive
            messages in CMVC   . . . . . . . . . . . . . . . . . . . .   52
 
          APPENDIX A.  BIBLIOGRAPHY  . . . . . . . . . . . . . . . . .   53
            A.1  How to get electronic copies of manuals and TRs   . .   54
             A.1.1  IBM Intranet   . . . . . . . . . . . . . . . . . .   54
             A.1.2  Internet   . . . . . . . . . . . . . . . . . . . .   54
 
          APPENDIX B.  COPYRIGHTS, TRADEMARKS AND SERVICE MARKS  . . .   57
 
 
                                                                    FIGURES
 
 
           1.  Prerequisites for disabling a subprocess.   . . . . . .   22
           2.  Prerequisites for enabling a subprocess.  . . . . . . .   23
           3.  Example of inherited access   . . . . . . . . . . . . .   40
 
 
                                                               Contents  ix
 
 
          x  CMVC FAQ: end user tasks
 
 
                                                          1.0  INTRODUCTION
 
 
          This technical report provides answers to frequently asked
          questions made by CMVC users with respect to miscellaneous topics
          (users, defects/features, access)
 
          This technical report covers the following topics:
 
          o   General
 
          o   End user tasks
 
          o   Defects and features
 
          o   Administration of users
 
          o   Components and authority access
 
          o   Special reports
 
          o   Notification
 
 
          1.1  ACKNOWLEDGEMENTS
 
          Many of the questions and answers that are compiled in this tech-
          nical report were obtained from the CMVC forum in the IBMPC con-
          ferencing disk, and from the CMVC6000 forum in the IBMUNIX
          conferencing disk.
 
          We want to thank the main participants in these electronic forums
          for their support!
 
          Also, we want to thank Dodde Stark for editing this technical
          report.
 
 
                                                            Introduction  1
 
 
          2  CMVC FAQ: end user tasks
 
 
                                                               2.0  GENERAL
 
 
          2.1  BRIEF HISTORY OF DELIVERABLES FOR CMVC 2.3
 
          This is a brief history of the deliverables for CMVC 2.3:
 
          1.  CMVC 2.3.0.0: December 30, 1994
 
              The GA for CMVC 2.3 (2.3.0.0) was in a standalone CD-ROM The
              actual level from our CMVC family was 2.3.0.12, but this fact
              was not visible to the users.
 
          2.  CMVC 2.3.0.14: June 30, 1995
 
              The next public delivery of CMVC was with another standalone
              CD-ROM called version 2.3.0.14.  From this moment on, we
              started using the 3rd number to indicate the modification and
              the 4th number to indicate the level.  This was the last time
              that we issued a standalone CD-ROM for CMVC.
 
          3.  CMVC 2.3.0.18: December 1, 1995
 
              The next public delivery of CMVC was with level 2.3.0.18 and
              we participated with the AIX Version 3 Software Solutions
              Showcase CD-ROMs.
 
          4.  CMVC 2.3.0.22: June 11, 1996
 
              The next public delivery of CMVC was with level 2.3.0.22 and
              we participated with the AIX Version 4 Software Solutions
              Showcase CD-ROMs, 5th edition.
 
          5.  CMVC 2.3.0.25: June 30, 1997
 
              In May 1997, from our level 2.3.0.24 (version 2.3.0 uses 2
              digits to represent the year) we branched to another release,
              called 2.3.1 which uses 4 digits to represent the year and
              which is Year 2000 compliant.
 
              Then we proceeded to release 2.3.0.25 (2 digits for the year)
              to the public through the external ftp site.  We need to keep
              working in this release because there are old platforms and
              databases that we still need to support and which we do not
              think is worthy to support for CMVC 2.3.1, such as AIX 3, DB2
              V1, Informix 5, SunOS 4.1, HP-UX 9.
 
          6.  CMVC 2.3.1.1: June 30, 1997
 
 
                                                                 General  3
 
 
              Finally, at the end of June we are releasing 2.3.1.1 (4
              digits for the year) to the external ftp site; only the
              latest platforms and databases are handled: AIX 4, DB2 V2,
              HP-UX 10, Informix 7, Solaris 2.5, Oracle 7.1/7.2 (we cannot
              run on Oracle 7.3).  Not all the combinations are ready yet,
              but we are working on them.
 
 
          2.2  IS CMVC GOING TO WORK WITH THE YEAR 2000?
 
          QUESTION:
 
          Is CMVC going to work with the Year 2000?
 
          ANSWER:
 
          CMVC 1.x and 2.3.0.x store dates with only two digits for the
          year.  Thus, the sorting of objects by date may give incorrect
          results, because the year "1997" is represented as "97" but the
          year "2000" is represented as "00".  CMVC does not manipulate in
          any way the year information and relies on the underline database
          for the sorting.
 
          In mid-1997, the release 2.3.1.1 was branched from 2.3.0.25 in
          order to use 4 digits to represent the year, and thus, 2.3.1.x is
          Year 2000 Compliant.
 
 
          2.3  DOES CMVC SUPPORT ENCRYPTION BETWEEN THE CLIENT AND THE
          SERVER?
 
          QUESTION:
 
          Does CMVC support encryption between the client and the server?
 
          ANSWER:
 
          CMVC does not explicitly support any encrypting mechanism.
 
          However, as long as the CMVC server and CMVC client are not aware
          of any data encryption, it would be possible to do encryption
          (probably by hardware) in the communications channel.
 
 
          4  CMVC FAQ: end user tasks
 
 
          2.4  DOES CMVC COMPLY WITH MILITARY SPECIFICATIONS?
 
          QUESTION:
 
          Does CMVC comply with military specifications, such as MIL-2167
          and MIL-0937?
 
          ANSWER:
 
          CMVC does not have to conform to military specifications, but the
          organization using CMVC needs to do it.  In order for the organ-
          ization to comply with these specifications, the organization
          must collect certain information and follow a certain process.
 
          Through its configurable fields, user exits, selectable processes
          and e-mail notification, CMVC can support an organization that
          needs to operate according to military standards.  In installa-
          tions like this, you most certainly need a consultant that knows
          how to configure CMVC to use the labels and definitions from the
          military specifications.  Also, the development organization of
          the customer usually decides to what extent they must follow the
          military specifications and which processes to use during various
          development phases.  Here, the configurability of the software CM
          tool is essential, as it needs to support their process and
          collect the information they need.
 
 
          2.5  ARE CMVC AND TEAMCONNECTION COMPATIBLE BETWEEN EACH OTHER?
 
          QUESTION:
 
          Are CMVC and TeamConnection compatible between each other?
 
          ANSWER:
 
          Although TeamConnection is the successor product to CMVC and
          there is a lot of common functionality between these products,
          there is NO compatibility between CMVC and TeamConnection.  That
          is, a CMVC client cannot work with a TeamConnection server, nor
          can a TeamConnection client work with a CMVC server.
 
          TeamConnection provides migration tools to help migrate a CMVC
          family to TeamConnection.
 
          For more information on CMVC/TeamConnection, please see the fol-
          lowing technical reports:
 
            29.2253  Comparison between CMVC 2.3 and TeamConnection 2
 
            29.2254  Migrating CMVC 2.3 to TeamConnection 2
 
 
                                                                 General  5
 
 
          The big differences between TeamConnection and CMVC are shown in
          the next subsections, which were extracted from the TR 29.2253
          mentioned above.
 
 
          2.5.1  The big differences for users
          ____________________________________
 
          Here are a few things that will be significant changes for CMVC
          users migrating to TeamConnection.
 
          o   The names of several objects have changed.  For example,
              tracks are now workareas and levels are now drivers.
 
          o   The versioning scheme is different:
 
              -   Files (parts) are NOT versioned by checkout/checkin, but
                  by the number of freezes in a workarea.
 
              -   Version numbers are named relative to the workarea (for
                  example, the part a.c can have a version number work1:3).
 
              -   Drivers and releases are essentially specialized
                  workareas, and therefore versioned.
 
          o   Workareas are much more important than tracks and behave dif-
              ferently.
 
              -   A workarea needs to be specified in all teamc part
                  -checkin and -checkout commands.  Even if you are just
                  using TeamConnection to store parts in a single release
                  without any defects or features, you need to create a
                  workarea and periodically integrate and commit your
                  changes.
 
              -   You will periodically be required to refresh your
                  workarea before you perform actions like integrating the
                  workarea, or checking parts in or out.  For example, if
                  you try to check out a file that another user has updated
                  in a different workarea, but has not committed, you will
                  need to refresh from that workarea.
 
              -   You must freeze a workarea (explicitly or implicitly) to
                  create new versions of parts changed in that workarea.
 
          o   When performing queries, like filling in a filter window, you
              are often querying within a context instead of the entire
              family.  You need to specify that context by entering
              release, driver or workarea.  If you do not provide enough
              context you will get an error or not be able to press the OK
              button.
 
 
          6  CMVC FAQ: end user tasks
 
 
          2.5.2  The big differences for family administrators
          ____________________________________________________
 
          Here are a few things that will be significant changes for CMVC
          Family Administrators migrating to TeamConnection.
 
          o   There is a single installation for the TeamConnection soft-
              ware and the ObjectStore database (which is used by
              TeamConnection).  You do not need to be an expert at a data-
              base before administering TeamConnection families.
 
              NOTE:  Object Design Inc. provides courses on the adminis-
              tration of ObjectStore.
 
          o   All of the data is stored in the database, including files.
              You will not need to know SCCS in order to keep the database
              and file versions synchronized.  This also makes backup much
              easier.
 
          o   Most of the administration commands have changed.  See the
              TEAMCONNECTION ADMINISTRATOR'S GUIDE for more details.
              Further, a separate GUI is provided for family administration
              on the Intel operating systems.  It is planned to port the
              GUI to the Unix operating systems.
 
          o   TeamConnection build administration requires maintaining
              pools of build machines so that TeamConnection can properly
              perform release builds.  This means that TeamConnection
              requires more extensive planning and management for the
              network.
 
          o   The migration facility is different in TeamConnection than in
              CMVC.  Further, we recommend you follow the process docu-
              mented in the Technical Report, MIGRATION FROM CMVC 2.3 TO
              TEAMCONNECTION 2.0.
 
 
          2.5.3  The big differences for tools integrators
          ________________________________________________
 
          CMVC relied on framework tools such as SDE/WORKBENCH to provide
          tool integration.  SDE/Workbench provided build integration
          through "make", GUI integration and messaging, etc.
 
          TeamConnection is actually a point of integration, and it pro-
          vides:
 
          o   A generic build interface that allows for traditional builds,
              as well as packaging and distribution.
 
          o   A client cache that allows client applications to extract and
              update data in the TeamConnection family without calling
              client commands.
 
 
                                                                 General  7
 
 
          o   An API to allow client applications to perform TeamConnection
              tasks using function calls instead of client line commands.
 
 
          2.6  WHAT ARE THE KNOWN INCOMPATIBILITIES WITHIN THE CMVC
          VERSIONS?
 
          QUESTION:
 
          What are the known incompatibilities within the CMVC versions?
 
          ANSWER:
 
          CMVC version 2 is not compatible with CMVC Version 1 nor with any
          version of TeamConnection.
 
          Any CMVC V2 client can work with any CMVC V2 server, the
          exceptions are the OS/2 and Windows client that require at least
          a CMVC 2.2 server.
 
          There are no other restrictions with respect to operating
          systems.  For example, a CMVC V2.1 client in HP-UX can work with
          a CMVC V2.3 server on AIX.
 
 
          2.7  CLARIFICATION OF SIZES IN CHAPTERS 6 AND 7, CMVC USER'S
          REFERENCE
 
          QUESTION:
 
          Clarification of sizes in Chapters 6 and 7, CMVC User's Refer-
          ence.
 
          ANSWER:
 
          The sizes for most of the fields in the Chapter 6 (Views for
          Queries) and Chapter 7 (Tables for Queries) of the CMVC User's
          Reference manual show a number that is higher than the one actu-
          ally used by the CMVC server which works with a number of charac-
          ters that is half that original number.
 
          This means that if Release Name has a size of 31 (characters) it
          can only accept 15 bytes.
 
          This method forces a limitation of Single Byte Character Set
          (SBCS) and Double Byte Character Set (DBCS) strings to the number
          of characters.  This means that although the Release Name has the
          field length of 31 bytes, it can accommodate only 15 SBCS charac-
          ters and 7 DBCS characters.
 
 
          8  CMVC FAQ: end user tasks
 
 
          NOTE:  The reason for a 31 bytes is that the field allows 2 bytes
          for each character, plus 1 byte for the NULL to terminate the
          string.
 
 
          2.8  USING DIFFERENT TIME ZONES WITH THE CMVC CLIENT AND SERVER
 
          QUESTION:
 
          Without actually changing the time zone used on the host, is
          there any way to convert dates by time zones within CMVC?
 
          ANSWER:
 
          The Date and Time is a field obtained from the database (it is a
          string), and it is the date and time of the CMVC server.
 
          There are no functions in CMVC that will change the value of this
          string to accommodate for the different time zones between the
          server and the client.
 
 
          2.8.1  Other tricks with time
          _____________________________
 
          There are several other cases where it is useful to change the
          system time temporarily in order to do something in CMVC.  We do
          not strongly recommend these, but some of our customers have
          found these steps useful.
 
          o   Checking out a file that has not been changed in over a year.
 
              SCCS returns a warning when checking out a file that has not
              been changed in over a year.  This is distracting for CMVC.
              If you have lots of such files to change, it is better to
              backdate your system while checking out, then set the system
              back to current time to check in.
 
          o   Restoring from an archive.
 
              If you need to restore from an old archive, that is, create a
              new family from an archive.  Rolling back the date of the
              system will give a consistent date for all restored objects,
              including the database.
 
 
                                                                 General  9
 
 
          2.9  WHAT IS THE AUTHENTICATION MECHANISM FOR CMVC?
 
          QUESTION:
 
          What is the authentication mechanism for CMVC?  How could I
          become another CMVC user?
 
          ANSWER:
 
          The authentication mechanism for CMVC is as follows:
 
          o   You need to be authorized to access CMVC from a known host
              and as a known CMVC user id.  For example, in the case of
              user Angel Rivera that logs in as "rivera" to the host
              "cordoba" (a UNIX host) and wants to interact with CMVC with
              the CMVC userid "rivera".
 
          o   However, if we rely only on those 2 variables, then anybody
              that has access to the host "cordoba" could login into a CMVC
              family as a superuser, and possibly cause havoc in the
              family.
 
          o   Therefore, a third variable comes into play: because CMVC
              does not have passwords for users, but the UNIX operating
              system does, then CMVC forces to you login into the operating
              system (and thus, you have to provide a password for
              authentication to the operating system).
 
              When you do this login action, you have to use a name; in
              this example is the system login "rivera".  We called it the
              system login id, and this is the 3rd variable that is needed.
 
              Because the OS/2 and Windows operating systems do not have a
              login mechanism, the CMVC_USER and USER variables are used as
              the system login.
 
          o   So you need to have an authorized set of these 3 variables
              registered with CMVC in order to be authenticated as a valid
              user.
 
              This scheme allows to have multiple roles with CMVC.  Contin-
              uing with the example, the user has both a CMVC normal user
              id "rivera" and a CMVC superuser id "su_angel", but only one
              system login:  "rivera".  Notice that this user does not have
              a special UNIX account called "su_angel".  Thus, the user has
              2 hosts lists, both of which have the same system login
              (rivera) and host, and one host list has the CMVC user id of
              "rivera" and the other has the user id of "su_angel"
 
          o   Unfortunately, CMVC is NOT consistent with the usage of Login
              and Userid.  Sometimes they are mixed up, and this causes
              confusion, specially with the line commands, which were
              created first in the history of the evolution of CMVC.  For-
 
 
          10  CMVC FAQ: end user tasks
 
 
              tunately, the GUI tries to alleviate this problem and it is
              more consistent with the terms.
 
 
          2.10  WHY A LONG FAMILY NAME (WITH PORT NUMBER) HAS PRIORITY OVER
          SHORT NAME?
 
          QUESTION:
 
          Why a long family name (such as familyName@hostName@4321) has
          priority over short name (such as familyName or
          familyName@hostName?
 
          ANSWER:
 
          o   The long family name format is:
 
                familyName@hostName@portNumber
 
              When you specify the hostName and port number, CMVC does not
              do any name resolution and thus, this format has precedence
              over the short family name (see next paragraph).  Thus, you
              can put anything you want as the "familyName" and you will
              still connect to the specified port on the specified host.
 
          o   The short family name format is:
 
                familyName
 
              When you specify just the family name without the @'s, CMVC
              uses the name to find the host name and port number from the
              nameserver (or the local /etc/hosts file) and the
              /etc/services file.
 
 
          2.11  CLARIFICATION OF FLAG ARGUMENTS, IN PAGE 3 OF COMMANDS
          REFERENCE
 
          QUESTION:
 
          Clarification of Flag Arguments, in page 3 of Commands Reference
 
          ANSWER:
 
          The "Name" value that follows a flag of a CMVC command has
          another restriction besides the ones mentioned in the table in
          page 3 of the CMVC Commands Reference:
 
          The Name cannot begin with a + (plus) or a - (minus) character.
          This limitation is needed to avoid confusion with other Flags,
          which always begin with any of these 2 characters.
 
 
                                                                General  11
 
 
          12  CMVC FAQ: end user tasks
 
 
                                                        3.0  END USER TASKS
 
 
          3.1  SAMPLE PROFILE FOR A CMVC CLIENT
 
          QUESTION:
 
          Is there a sample profile ready-to-use for a CMVC client?
 
          ANSWER:
 
          Starting with CMVC 2.3.0.18, we are providing an excellent sample
          profile for a CMVC client.  We strongly recommend that every
          client, regardless of the expertise of the user, should use the
          CMVC client sample profile as the profile for the CMVC client (or
          at least to be used as the basis for the profile).  We are con-
          stantly adding new environment variables and adding new hints and
          tips.
 
          The client sample profile has variables that are dependent on the
          operating system and which are commented out; it is the responsi-
          bility of the CMVC user to review the entire profile and uncom-
          ment those variables that are appropriate.
 
          The CMVC client sample profile is located in:
 
            /usr/lpp/cmvc/samples/profile.user
 
 
          3.2  HOW TO GET THE FIRST BASELINE IN CMVC
 
          QUESTION:
 
          Now that CMVC is installed and ready to be used, what should I do
          to get the first baseline of the files that I have in my work-
          station and that I want to store in CMVC?
 
          ANSWER:
 
          If you are a novice user, it is recommended to use the CMVC GUI
          for now. This example will emphasize it.  If you are using the
          CMVC GUI for OS/2 or Windows, then you will find everything you
          need in the "selected" menu.  In UNIX, use the "actions" and
          "show" menus.
 
          Here are the steps to follow to obtain your first baseline of the
          files to be stored in CMVC by using tracks and levels, which are
          strongly recommended for normal production work.
 
 
                                                         End user tasks  13
 
 
          1.  The CMVC family administrator or a superuser needs to create
              the following:
 
              o   Users and their host list entries.
              o   The component hierarchy.
              o   The release or releases.
              o   The authority for the users to access the component hier-
                  archy.
 
          2.  Ensure that the process configuration for the main component
              where you will open the initial feature has the following
              subprocesses:
 
              o   dsrFeature is probably on but not necessary for you right
                  now
 
          3.  Ensure that the process configuration for your release has
              the following subprocesses:
 
              o   "track" should be "yes".
              o   "approval" is probably "yes" but is not necessary for you
                  right now.
              o   "fix" should be "yes".
              o   "level" should be "yes".
              o   "test" is probably "yes" but is not necessary for you
                  right now.
 
          4.  To exploit the values from the Options (UNIX) or Settings
              (OS/2 and Windows) window, you could setup the following
              default values:
 
              For UNIX, OS/2 and Windows:
 
              o   Relative directory:
 
                  Specify the full path name of the directory that is the
                  top one that has the beginning of your file structure.
                  For example, let's suppose that you have the following
                  files in your workstation and you want to create them in
                  CMVC:
 
                    /home/user1/src/cat/file1
                    /home/user1/src/file2
                    /home/user1/makefile
 
                  Later on when you extract the files from CMVC you want to
                  preserve the original meaningful directory path:
 
                    src/cat/file1
                    src/file2
                    makefile
 
                  In this case you need to specify that the relative direc-
                  tory is:
 
 
          14  CMVC FAQ: end user tasks
 
 
                    /home/user1
 
 
              For OS/2 and Windows only:
 
              a.  Component.
 
              b.  Release.
 
          5.  Bring up the Features window.
 
              From the pull down menu, create a feature which will be used
              to create the files into CMVC from the files in your work-
              station to obtain your first baseline.
 
          6.  Refresh the list of the Features window in order to see the
              entry for the new feature.
 
          7.  If dsrFeature is on, you need to perform the "design, size,
              and review" steps, by highlighting the feature and selecting
              the proper action from the pull down menu.
 
              You need to provide a value for the remarks when doing the
              design step.  However, for the other steps, you may not need
              to specify remarks.
 
          8.  Accept the feature.  This action moves the feature to the
              Working state.
 
          9.  Create a track for your feature and the desired release.
 
              If the approval subprocess is active for the release, then
              the track is created in the Accept state.  Otherwise, the
              track is created in the Fix state (we are assuming that this
              subprocess is active for this example).
 
          10. From the Features window, highlight the desired feature and
              select the action Show Tracks.  This will bring up the Tracks
              window.
 
          11. From the Tracks window then you could select to show the
              Approval Records (if using the approval subprocess) or the
              Fix Records.
 
          12. If the approval subprocess is on, then you need to show the
              Approval records for your track and accept them; you could
              also abstain.
 
              Any of the above actions will move the track to the Fix
              state.
 
              However, if you reject the approval records, then the track
              does not move to the Fix state.
 
 
                                                         End user tasks  15
 
 
          13. Once a track is in the Fix state, then you can now handle
              files.
 
              From the CMVC Task window you could bring up the Files window
              and select the Create action from the pulldown menu.
 
              You could use the Choices button next to the path name field.
              This will show you all the files that are available from the
              relative directory specified in the settings.
 
              NOTE:  When using OS/2 and Windows, the file names are shown
              IN UPPERCASE (they are provided in this format by the Oper-
              ating System, though).  However, if you want to develop in
              multiple platforms such as UNIX (which is case sensitive),
              then we recommend that the files should be created in lower-
              case.
 
              If you care about the permissions of your files, then create
              at the same time those files that have the same permissions.
 
              When handling a list that has multiple files in the same
              action, CMVC takes the file permissions from the first file
              and uses them for the rest of the files in the list.
 
          14. Because each file in CMVC is associated with a component,
              then whenever a file change is done (create, checkin, delete,
              rename) then a fix record is created for each affected compo-
              nent.
 
              The idea behind this concept is that the component owner
              should be aware of the file changes and
              approve/abstain/reject them.
 
          15. After you have finished creating and checking in the files
              from your workstation, then you are ready to complete the fix
              records.
 
              From the Track window, highlight the desired track and select
              the action that shows the Fix records.
 
              The owner for each component involved in the track should
              handle the fix record and complete it.
 
              This actions moves the track to the Integrate state.
 
              NOTE:  You need to have level process on at this point, or
              the track will move all the way to complete.
 
          16. From the CMVC Tasks window select the Levels window.  Then
              from the Levels window create a new level for the desired
              release.
 
 
          16  CMVC FAQ: end user tasks
 
 
              A level is a very useful object in CMVC and is used to gather
              tracks (and the associated file changes) that need to be
              built together.
 
          17. Create a level member for the track.
 
              One way to accomplish this action is by highlighting the
              desired level and then performing the action Add Level
              Member.
 
          18. Perform a "delta" level extract to a new directory in order
              to verify that everything is checked in correctly.
 
          19. If you discover that a file is missing, then do the fol-
              lowing:
 
              a.  Delete the level member.
              b.  Change the track to the fix state.
              c.  Change the fix record to active.
              d.  Go back to 13 on page 16
 
          20. If all the files are now in the level, then commit and com-
              plete the level.
 
              That should give you a permanent baseline to start from.  You
              can do later a full extract of this level in order to obtain
              this baseline.
 
 
          3.3  USAGE OF NULL TO RESET 0 CHARACTERS IN CERTAIN ATTRIBUTES IN
          CMVC
 
          QUESTION:
 
          Usage of NULL/null to reset 0 characters in certain attributes in
          CMVC.
 
          ANSWER:
 
          Currently it is possible to specify the NULL or null keyword to
          reset to null (that is, to 0 characters) certain attributes in
          CMVC, but this is possible only under the following circum-
          stances:
 
          o   Only from the line command (it is not possible to do it from
              the GUI) and using the flag -modify.
 
          o   Only values that can have free-text can be changed to null,
              such as the reference field in defect/feature by using the
              keyword null (or NULL) such as:
 
                Defect -modify 247 -reference null
 
 
                                                         End user tasks  17
 
 
              The use of "null" in this instance will actually change the
              contents to zero characters, and will not use the word "null"
              in the reference field: that is, the field will be blank.
 
          The exceptions to the use of keyword "null" to make null an
          attribute are:
 
          o   Cannot use for configurable fields, such as "target" in
              defect/feature.
          o   Cannot use for fields that expect a configurable value (that
              have a "choices" button in the GUI), such as "severity" in
              defect/feature.
          o   Cannot use for required fields, such as "abstract" in
              defect/feature.
          o   Cannot reset to null a free-text field that accepts blank
              spaces.
 
          If you need to 'blank' an attribute, it is possible to use the
          line command with the -modify flag to reset the attribute to a
          single blank character by using " " as shown in the following
          example:
 
              Defect -modify 247 -reference " "
 
          However, this procedure does not actually reset the contents of
          the attribute to 0 characters.  Any searches that use this field,
          should look for " " instead of using the SQL operators 'is null'
          or 'is not null'.
 
 
          3.4  IMBEDDING NEWLINE CHARACTERS INTO COMMENTS
 
          The CMVC GUI makes it easy to imbed newline characters into
          remarks, but the command line leaves you to figure this out on
          your own.  Here are some useful techniques:
 
 
          3.4.1  Unix
          ___________
 
          Unix makes it very easy to imbed newline characters into a
          string:
 
          o   Escaping the newline:
 
              You can escape a newline character with a backslash, '/'.
              For example:
 
                Defect -open ... -remarks "This is line one \
                and this is line two"
 
 
          18  CMVC FAQ: end user tasks
 
 
          o   You can also redirect from standard input:
 
              You define an "end-of-file" character string (such as !EOF),
              then redirect from standard input.  This uses a feature of
              the CMVC command line interface to support redirection of
              standard input.  Here is an example:
 
                Defect -open ... -remarks - -family octo <<!EOF
                This is line one
                and this is line two
                !EOF
 
 
          3.4.1.1  Quoting rules in Unix shell scripts
 
          In the above examples, quotes (") were used.  There are some
          important quoting rules to keep in mind when using Unix:
 
          o   No quotes allows the shell do anything it wants.
 
              There is a very long list of operations performed on the com-
              mands you type in a command shell.  The most obvious are the
              ones listed below.  In only a few cases is the order really
              important.  If the two examples below are not sufficient,
              look at a book on Unix shell scripts.
 
          o   Quotes delay interpretation until after filenames are
              expanded.
 
              This is a subtlety, but in order for many commands to inter-
              pret a string like "*.c", it is necessary to avoid letting
              the shell convert the string to something like: a.c b.c c.c
              That is what quotes do for you.
 
              However, quotes do not prevent the shell from value substi-
              tution.  For example, "$HOME" will be substituted for some-
              thing like: /home/guest
 
              Quotes are usually what you want to use.
 
          o   Nothing that begins with a dollar sign ($) is interpreted in
              the current shell.
 
              A string like '$HOME' will print exactly as seen, without
              $HOME being replaced with the value for the environment vari-
              able.  This is useful when you want to pass something to a
              shell script for interpretation unaltered.  If you pass
              '$HOME' as an argument to a shell script, it will arrive as
              $HOME and be subject to interpretation there.
 
 
                                                         End user tasks  19
 
 
          3.4.2  OS/2 and Windows
          _______________________
 
          This should also work in the Windows operating system variations.
 
          OS/2 is very stubborn when it comes to imbedded cr/lf characters,
          but it is possible.
 
          o   Escape character: &caret.
 
              In OS/2, the escape character is a caret, &caret..  In order
              to continue a remarks you must do the following:
 
                defect -open -remarks "this is a long"&caret.
                More? "description of my problem"
 
              You will be prompted with "More?", but the line will con-
              tinue.
 
              You will find that the escape feature in OS/2 is more limited
              than the one in UNIX, but the basic capability is there.
 
          o   Redirecting standard input.
 
              -   Just like Unix, you can use '-' as the value for remarks
                  in a CMVC line command, then redirect the value from a
                  file.
 
                    Defect -open ... -remarks "This is line one &caret.
                    and this is line two"
 
              -   OS/2 has different syntax for redirecting from standard
                  input.  Start by redirecting from the console, "<con:",
                  then conclude the input string with Ctrl-Z in the first
                  column of a line.  Here is an example:
 
                    Defect -open ... -remarks - -family octo <con:
                    This is line one
                    and this is line two
                    <Ctrl-Z>
 
 
          3.5  HOW TO DELETE AN OBJECT IN CMVC
 
          QUESTION:
 
          As a test, I created a component named test1, and then imme-
          diately deleted it.
 
          I did a Show All Components query and the test1 component still
          shows up.  How do I delete a component such that it will no
          longer be listed on a Show All Components query?
 
          ANSWER:
 
 
          20  CMVC FAQ: end user tasks
 
 
          When you "delete" most of the objects in CMVC, they are not
          really deleted, but instead, the Drop Date (or similar field) is
          filled in.  This indicates to CMVC that the object is conceptu-
          ally deleted.  Then, if you want to recreate the "deleted" object
          later on, CMVC will just erase the value of the Drop Date.
 
          If you do not want to see the "deleted" items, you will need to
          specify the following in the query:
 
            and dropDate is null
 
          For example, to list all the components, except the deleted ones,
          you can issue the following query from the Components window:
 
            name like '%' and dropDate is null order by name
 
          However, there are other objects for which the delete action
          means to be completely deleted from the database, because these
          objects do not have a dropDate field.  These objects are the
          lists, such as host list, fix record list, etc.
 
 
          3.6  CAN THE TEST RECORDS BE ASSIGNED TO SOMEONE OTHER THAN THE
          ENVIRONMENT PERSON?
 
          QUESTION:
 
          We are using the test subprocess and we have a large number of
          testers.  The test records are created with the environment
          person as the owner.  We do not want to assign all the test
          records to only one person and then ask that person to reassign
          them to the other testers.
 
          If we do not manually change the owner of the test records, is
          there a way for tester A to see what is their waiting workload
          (defects they opened which have unmarked test records)?
 
          ANSWER:
 
          One suggestion is to use the Notification Lists.
 
          The CMVC family administrator could create a new notification
          group which will include the TrackTest action, and then the
          testers could subscribe to that notification group for the compo-
          nent in which the release was created.
 
          NOTE:  The only purpose for creating a release in a given compo-
          nent is to inherit the access lists and the notification lists
          for that component.
 
 
                                                         End user tasks  21
 
 
          3.7  WHAT ARE THE PREREQUISITES FOR ENABLING/DISABLING
          SUBPROCESSES?
 
          QUESTION:
 
          What are the prerequisites for enabling/disabling subprocesses?
 
          ANSWER:
 
          Because of the asynchronous relationship between the predefined
          CMVC process configuration and the CMVC process being used by
          releases and components, the family administrators should prop-
          erly manage the update of these predefined CMVC process (espe-
          cially for deleting and modifying existing predefined CMVC
          processes).  If it is mismanaged, user confusion may result but
          the integrity of the CMVC configuration will not be impacted in
          any way.
 
          The prerequisites for disabling a subprocess are shown below:
 
          +---------------------------------------------------------------+
          | Figure 1. Prerequisites for disabling a subprocess.           |
          +-------------------------+-------------------------------------+
          | SUBPROCESS              | PREREQUISITE                        |
          +-------------------------+-------------------------------------+
          | dsrDefect, dsrFeature   | No defect or feature owned by the   |
          |                         | component is in design, size or     |
          |                         | review state.                       |
          +-------------------------+-------------------------------------+
          | verifyDefect,           | No verification record owned by the |
          | verifyFeature           | component is in ready state.        |
          +-------------------------+-------------------------------------+
          | approve                 | No track associated with the        |
          |                         | release is in the approve state.    |
          +-------------------------+-------------------------------------+
          | fix                     | All fix records associated with the |
          |                         | release are in complete state.      |
          +-------------------------+-------------------------------------+
          | level                   | All levels are either in complete   |
          |                         | or working state, and, no track is  |
          |                         | in integrate state.                 |
          +-------------------------+-------------------------------------+
          | test                    | No test associated with the release |
          |                         | is in ready state.                  |
          +-------------------------+-------------------------------------+
 
          The prerequisites for enabling a subprocess are shown below:
 
 
          22  CMVC FAQ: end user tasks
 
 
          +---------------------------------------------------------------+
          | Figure 2. Prerequisites for enabling a subprocess.            |
          +-------------------------+-------------------------------------+
          | SUBPROCESS              | PREREQUISITE                        |
          +-------------------------+-------------------------------------+
          | dsrDefect, dsrFeature   | None                                |
          +-------------------------+-------------------------------------+
          | verifyDefect,           | None                                |
          | verifyFeature           |                                     |
          +-------------------------+-------------------------------------+
          | approve                 | An approver list(4) must exist for  |
          |                         | the release.                        |
          +-------------------------+-------------------------------------+
          | fix                     | None                                |
          +-------------------------+-------------------------------------+
          | level                   | No track is in fix or integrate     |
          |                         | state.                              |
          +-------------------------+-------------------------------------+
          | test                    | An environment list(4) must exist   |
          |                         | for the release.                    |
          +-------------------------+-------------------------------------+
 
          1.  In general, the prerequisite is checked on a component when
              the process of the component is being modified.  However, in
              case a defect or feature is assigned to a new component, the
              prerequisite is checked on a defect (or feature).
 
          2.  When the 'verify' subprocess is disabled and after the CMVC
              server successfully validates the prerequisites, the CMVC
              server will remove all the 'notReady' verification record
              associated with the component.  If a defect (or feature) is
              re-assigned from a component with 'verify' subprocess to
              another component without this subprocess, then CMVC server
              will remove all the 'notReady' verification record for that
              defect (or feature).
 
              Those deleted verification records will not be recreated at
              the time the 'verify' subprocess is enabled or the defect (or
              feature) is re-assigned to a component with 'verify' sub-
              process, but are recreated at the time when the defect and/or
              feature are ready for verification.
 
          3.  When 'test' subprocess is disabled and after successfully
              validating the prerequisite, CMVC server will remove all the
              'notReady' test record associated with the release.
 
              Those deleted test records will not be recreated at the time
              the 'test' subprocess is enabled but are recreated at the
              time when the track are ready for testing.
 
          4.  Flags are provided in the RELEASE -CREATE command to allow
              the user to create the approver list and environment list.
              Example:
 
 
                                                         End user tasks  23
 
 
                Release -create releaseName -process processName -environment envName
                -tester testerName -approver approverName
 
 
          3.8  USING UNIX ALIAS AND WRAPPERING CMVC COMMANDS
 
          For some CMVC users, a specialized client interface makes more
          sense than the current, very flexible and complex, command line
          interface.  For many users, they need to interface with such a
          small part of CMVC (for example, only opening defects and proc-
          essing verification records) that the GUI is also more than they
          need.  These customers can do two relatively simple changes
          outside of CMVC:
 
          1.  Aliasing commands.
 
              Unix provides a simple aliasing tool for Korn shell.  There
              is also one for C-Shell, but we will only demonstrate the
              Korn shell here.  All the 'alias' Korn shell command does is
              to replace the first word typed by the user with a string
              that can be more than one word long.  Here is an example:
 
                alias NewDef="Defect -open -family ${CMVC_FAMILY} -sev 3 ... -remarks"
 
              Now, when a user types "NewDef "A new problem ..."", a defect
              is opened with the remarks specified, and everything else
              hardcoded or taken from environment variables.
 
          2.  Wrappering a command.
 
              This is a very simple concept, and if you need to do this you
              probably already have.  However, if you are new to CMVC you
              might not have gotten around to it yet.
 
              Here are some reasons to wrapper a command:
 
              o   Save typing, such as when certain parameters are always
                  the same
              o   When users need to "become" several different CMVC users,
                  based on the task they are performing.
              o   When starting the GUI or running commands for several
                  different families.
 
              Since your users are already pointing to the cmvc/bin and
              cmvc/samples directories, there is no reason to not add shell
              scripts of your own to the samples directory.  If you are
              worried about overwriting your tools when you do a CMVC
              upgrade, then put your tools in another directory and symbol-
              ically link the files into the samples directory.  If you
              look closely at the CMVC installation, you will see we make
              use of symbolic links.
 
 
          24  CMVC FAQ: end user tasks
 
 
              As for the actual tools, just pick a name (such as NewDef),
              put the file into the samples directory and make it execut-
              able.  By the way, we provide many samples with CMVC.  The
              following is a simple but effective start:
 
                #!/usr/bin/ksh
                echo Executing $0:
                echo parameters: $*
 
 
                                                         End user tasks  25
 
 
          26  CMVC FAQ: end user tasks
 
 
                                                  4.0  DEFECTS AND FEATURES
 
 
          4.1  CANNOT USE A BINARY FILE AS INPUT TO THE REMARKS FOR A
          DEFECT
 
          QUESTION:
 
          While opening a defect, when entering remarks, there is an option
          to insert the contents of an existing file.  However, when trying
          to insert a file that has binary characters in it, we get a
          partial file of the ascii up to the binary character.  In other
          words the text is cut at the binary character.  Does the remarks
          field take only ascii characters?
 
          ANSWER:
 
          Yes, only non-control characters are allowed in the remarks.
 
 
          4.2  CANNOT MODIFY OLD REMARKS IN A DEFECT
 
          QUESTION:
 
          I discovered a typo in the remarks that I used to open a defect.
          Now I would like to fix the typo, but I cannot modify these old
          remarks.
 
          ANSWER:
 
          The remarks are part of the audit trail for a defect or feature;
          this audit trail cannot be modified, it can only be appended,
          that is, you can only add new text to it, but you cannot delete
          or modify old text.
 
 
          4.3  IS IT NORMAL TO HAVE DUPLICATE VERIFICATION RECORDS?
 
          QUESTION:
 
          When showing verification records of a defect, we got multiple
          entries with the same defect number but different originators.
          Is this normal?  What is the best way to close these defects?
 
          ANSWER:
 
 
                                                   Defects and features  27
 
 
          Assuming that other defects or features were returned as dupli-
          cates of the defect with the duplicate verification records, this
          is normal behavior.
 
          Each owner of a verification record has to accept, reject or
          abstain on his/her record for the defect to get closed.  This
          allows submitters of defects or features that were returned as
          duplicates to verify that the change they wanted actually got
          implemented.
 
 
          4.4  HOW TO LIST ALL THE DEFECTS OF A COMPONENT AND ITS CHILDREN
 
          QUESTION:
 
          How to do I list the defects of a component and its children?
 
          ANSWER:
 
          Anyplace where you can specify compName='xyz', you can substitute
          it with the following:
 
            compid in
               (select childId from CompMemberView where parentCompName='xyz')
 
          You will have to do this from the entry field at the bottom of
          the query window, but you can save the query to the task list or
          as a default query.
 
          NOTE:  Some databases are case sensitive.  The correct case for
          each database field is shown in the manual CMVC USER'S REFERENCE.
 
 
          4.5  PROPOSED WORKAROUNDS FOR COMMON COMPLAINTS ABOUT DEFECTS AND
          FEATURES
 
          o   What to do when a verification record is rejected?
 
              One design problem of CMVC with respect to defects is that
              when a verification record is rejected, then the defect is
              moved to the state 'closed' instead of reopening the defect
              or opening a new defect.
 
              You can use the user exit cloneDefectSilent as explained in
              /usr/lpp/cmvc/samples/server.samples to clone the existing
              defect when the verification is rejected.
 
          o   A better way to use verification records
 
 
          28  CMVC FAQ: end user tasks
 
 
              Set authorities so that every user can accept/reject their
              own verification records, then abstain everyone else's ver-
              ification records.  In that way, only one person verifies a
              defect/feature.  This could also benefit from a user exit.
 
          o   Showing relationship between defects and features during
              development.
 
              Use the reference field on defects to point to related fea-
              tures.
 
              Use naming conventions to show relationships.  For example,
              if the feature is 1410, then the defects start with 1410.1
              and continue by incrementing the last digit: 1410.2, 1410.3,
              etc.
 
 
                                                   Defects and features  29
 
 
          30  CMVC FAQ: end user tasks
 
 
                                               5.0  ADMINISTRATION OF USERS
 
 
          5.1  SUGGESTION THAT EVERY CMVC SUPERUSER SHOULD HAVE AT LEAST 2
          USER IDS
 
          QUESTION:
 
          Suggestion that every CMVC superuser should have at least 2 user
          ids.
 
          ANSWER:
 
          It is strongly recommended that every CMVC superuser in your
          family should have at least 2 CMVC user ids: one as a normal user
          and another as a superuser.  Furthermore, only when doing CMVC
          tasks that require superuser authority should the CMVC superuser
          id be used; for all other CMVC activities, the non-superuser id
          should be used.
 
          The reason for this recommendation is to avoid that, by accident,
          a CMVC superuser could bypass the normal safeguards of CMVC and
          cause problems or confusion with other users.  For example, John
          is at the same time a CMVC superuser, a releaseLead for rel-A and
          a normal developer for rel-B; he can add level members to a level
          in rel-A, but he should not do it for rel-B.  However, if John is
          always using CMVC as a superuser, then it could be possible that
          John could successfully add, by accident, a level member in
          rel-B.  If John only uses the CMVC superuser id for superuser-
          related tasks, and uses a normal userid for the majority of his
          CMVC tasks, then John would be prevented by CMVC to add a level-
          member for rel-B.
 
          Based on our experience, we recommend that all the CMVC superuser
          ids should be easily identifiable, such as by adding the prefix
          "su_" to the normal CMVC user id.  In this example, John would
          have his normal userid "john" and his CMVC superuser id
          "su_john".  In that way, John can easily known when he is working
          as a superuser with CMVC.
 
 
                                                Administration of users  31
 
 
          5.2  HOW TO MODIFY AN EMAIL THROUGH THE BACKDOOR THAT HAS MORE
          THAN 15 CHARACTERS
 
          QUESTION:
 
          I am trying to enter an email address that has more than 15 char-
          acters and I get the error message 0010-149.
 
          Is there a fix for this problem?  Is there a workaround?
 
          ANSWER:
 
          In CMVC 2.3.0.18 we fixed a limitation in the handling of the
          userid of the email address (the field before the @ "at" sign).
          The problem was that only the first 15 characters were accepted,
          and if this field had more than 15 characters, the message
          0010-149 was shown.
 
          o   Solution:
 
              To upgrade to the CMVC version 2.3.0.18 or later.
 
          o   Workaround:
 
              If the migration to the latest CMVC release is not feasible
              at this time, then in some cases, it might be necessary to
              modify the address field for a user that has more than 15
              characters (such as: 12345678901234567890@host) and it is
              possible to do that by bypassing CMVC and directly using the
              SQL statements.  By the way, this is the method used by the
              'mkdb' when creating the CMVC database.
 
              NOTE:  Warning: before you follow the steps below, make sure
              that you have a backup of your database and of your CMVC
              family.  If you make a mistake in the SQL statements, you may
              corrupt the database, and you will need to restore the latest
              backup.
 
              1.  Logon as the CMVC family administrator.
 
              2.  Connect to the database, such as:
 
                       db2 connect to <family>
 
              3.  Go into interactive SQL; in DB2 (command line processor)
                  type:
 
                       db2
 
              4.  Find out the internal userid for the CMVC user whose
                  address needs to be modified (example is shown below)
 
 
          32  CMVC FAQ: end user tasks
 
 
                    db2 => select id,name,address from Users where login='doe'
                                                                          ***
                                                       put the user name here
 
                  A sample output is shown below; you need to validate the
                  name and address fields.
 
                    ID      NAME                    ADDRESS
                    ------- ----------------------- -----------------------------
                    10      John Doe                short@carvm3
 
                  Note that the current example complies with the limit of
                  15 characters in the first field of the address (before
                  the @, "at" sign).
 
              5.  Issue the following modify command (one single line),
                  where the id field is the id found in step 4 (first
                  field; in the example is 10):
 
                    update Users set address='12345678901234567890@carvm3' where id=10
                                              ********************                  **
                                              place here your value            user id
 
                  You can specify a value that has more than 15 characters
                  in the first field (before the @ "at" sign); in the
                  example there are 16 characters.
 
              6.  Commit the transaction (otherwise the value will not be
                  seen by CMVC), by doing:
 
                       commit work
 
              7.  Repeat step 4, and verify that the data is correct:
 
                    db2 => select id,name,address from Users where login='doe'
                                                                          ***
 
                    ID      NAME                    ADDRESS
                    ------- ----------------------- ----------------------------
                    10      John Doe                12345678901234567890@carvm3
 
                  Note that the new value has more than 15 characters in
                  the first field of the address.
 
              8.  Terminate the DB session:
 
                       terminate
 
 
                                                Administration of users  33
 
 
          5.3  ERROR 0010-655 WHEN TRYING TO DELETE A USERID
 
          QUESTION:
 
          I am trying to delete some userids and I am getting the message:
 
            0010-655 You cannot delete user xxx.  This user currently has
                     access.  You must delete all access for this user
                     before this user can be deleted.
 
          ANSWER:
 
          The problem is that the user is a member of one or more authority
          access groups, and you have to first delete the user from these
          groups:
 
          1.  Using the GUI, from the Authority Access window, use the Open
              List or Filter dialog to find out all the access groups that
              the desired userid is a member of.
 
          2.  Using the GUI, from the list of items returned by the pre-
              vious step, highlight the items and invoke the delete action.
 
          3.  Then you may try to delete the user again.
 
 
          5.4  BROADCASTING A MESSAGE TO ALL ACTIVE CMVC USERS
 
          QUESTION:
 
          Is there an easy way to send a message to all active CMVC
          clients?
 
          It could be necessary in case of an unplanned shutdown or to
          announce that a general problem has been solved.
 
          ANSWER:
 
          You may want to use the sample /usr/lpp/cmvc/samples/sendMailTo.
 
 
          34  CMVC FAQ: end user tasks
 
 
                                                      6.0  AUTHORITY ACCESS
 
 
          6.1  COMPONENT OWNER CANNOT GIVE OBVIOUS AUTHORITY TO OTHER USERS
 
          QUESTION:
 
          Component owner cannot give obvious authority to other users
 
          ANSWER:
 
          In CMVC 2.3.0.0 we updated the access authority groups to fill a
          gap.  The componentlead is now a superset of developer+, and the
          releaselead is a superset of builder.
 
          Originally, the shipped authority groups had some holes in the
          authorities which caused confusion, such as the fact that a
          developer+ has more FixYZ actions than the componentlead, which
          causes an error when a component owner tries to give authority of
          developer+ to a new user (the error says that the componentlead
          cannot give an authority that the component lead does not have,
          such as the FixYZ).
 
          To correct this problem the following actions were added and are
          applied automatically in new families, but which need to be added
          manually into existing families.
 
          1.  Add to componentlead the following actions in authority.ld:
 
                DefectModify
                FixActive
                FixComplete
                FixDelete
 
          2.  Add to the releaselead the following actions in authority.ld:
 
                LevelAssign
                LevelCheck
                LevelCommit
                LevelComplete
                LevelCreate
                LevelDelete
                LevelModify
                MemberCreate
                MemberDelete
                SizeCreate
 
 
                                                       Authority access  35
 
 
          3.  Stop the cmvc daemons and run chauth to reload the contents
              of the authority.ld file into the appropriate table in the
              database.
 
 
          6.2  CONFUSION ABOUT COMPONENT OWNER AUTHORITY
 
          QUESTION:
 
          I am confused about what a component owner can do.  The CMVC User
          Reference states that the component owner can do many things
          implicitly, such as AccessCreate.  That does not seem to be true.
          I have to give the component owner componentlead before she can
          add access for someone else.  Am I reading something wrong or
          have we got something set up wrong?
 
          ANSWER:
 
          A non-superuser with AccessCreate authority may not grant any
          authority that includes any action that she/he does not explic-
          itly have themself.  In short, you ca not give a CMVC authority
          that you do not have.
 
          The thing that makes this confusing is that as an owner you have
          certain implicit authorities but you cannot give these to someone
          else unless they are also granted to you explicitly.
 
 
          6.3  CANNOT LOOK AT THE CONTENTS OF A FILE WITH GENERAL AUTHORITY
 
          QUESTION:
 
          I am trying to view the contents of a file under general
          authority and I am getting the error:
 
            0010-183 You are not authorized to perform action FileExtract
                     on the specified file.
            0010-184 You are not authorized to extract a copy of file
                     x (x = file name) associated with release
                     y (y = release name)
 
          ANSWER:
 
          In the default access authority groups shipped by IBM, the
          FileExtract action, which is the one that you need to look at the
          contents of a file, is not part of the general authority group.
 
          However, the FileView action is part of the general authority
          group and this action will give you the meta-data that CMVC has
          about that file (such as version number, date last updated, etc).
 
 
          36  CMVC FAQ: end user tasks
 
 
          You have some alternatives:
 
          o   Use an access authority group that has the FileExtract
              action, such as "developer".
 
              This is the recommended solution.
 
          o   Add a new access authority group, such as "extractor", that
              will have this FileExtract action.
 
              Then, you can add this access group to those users who need
              to view the contents of files, even if their authority is
              general.  CMVC handles the union of all the cumulative access
              groups for a user for a given component.
 
          o   You could add the FileExtract to the "general" access group.
 
              The drawback is that you may dilute the granularity of the
              access by components; that is, you may give too much
              authority to all the CMVC users.
 
 
          6.4  HOW TO SPECIFY A READ-ONLY ACCESS TO FILES IN A COMPONENT
          STRUCTURE
 
          QUESTION:
 
          Has anyone created an authority group which allows a user read-
          only access to files in a component structure?
 
          ANSWER:
 
          CMVC adds up all the authority actions from all the authority
          groups for a user.  The result is list of all the authority
          actions that are valid for that user.  For example, if a user
          belongs to two access lists (general and componentlead) in a
          given component, then the authority actions from general are com-
          bined with the authority actions from componentlead to provide
          the complete list of the authority actions for that user.
 
          This means that a user could have very few authority actions in
          the root component (such as general) and then more authority
          actions in children components.
 
          A corollary of the above is that you could define a new authority
          group such as "viewer" which would have ONLY few authority
          actions, such as "FileView" (to view the details) and
          "FileExtract" (to view the contents).  Then you could add this
          authority group to any use and this will allow the user to ONLY
          view files.  Of course, if the user has more FileXXX authority
          actions, then the user could create/modify files.
 
 
                                                       Authority access  37
 
 
          The nice thing about this approach is that you do NOT need to
          modify the existing authority groups.
 
          Another possibility is add the desired action to the "general"
          authority group, and ensure that all users belong to this group.
 
 
          6.5  WHAT IS THE ROLE OF THE CMVC USER ID "INHERITEDACCESS"?
 
          QUESTION:
 
          The "InheritedAccess" userID is created automatically when a new
          CMVC family is created.  What is the role for this userID?  Could
          I delete it?
 
          ANSWER:
 
          Please, do not delete nor change the names of the following CRIT-
          ICAL objects in CMVC, which are automatically created during the
          mkdb (the creation of the CMVC family database):
 
            Component: root
            User:      InheritedAccess
 
          The "root" component is the top component for all active compo-
          nents.
 
          The "InheritedAccess" user id is the visible aspect of the imple-
          mentation (in CMVC Version 2) of the function to restrict the
          access in children components.
 
          NOTE:  Without these objects, the CMVC family will not work prop-
          erly.
 
 
          6.6  HOW DO I KNOW IF THE AUTHORITY HAS BEEN RESTRICTED IN A
          COMPONENT?
 
          QUESTION:
 
          How do I know if the authority has been restricted in a compo-
          nent?
 
          ANSWER:
 
          Use Report -view accessView to view access for a component or
          user.  The TYPE column indicates the type of access (granted or
                     ____
          restricted).
 
 
          38  CMVC FAQ: end user tasks
 
 
          The userLogin INHERITEDACCESS indicates that the authority group
                        _______________
          is restricted for all users inheriting this access.
 
          Example output from Report -view accessView
 
             compName userLogin       userName   userArea authorityName type
             -------- --------------- ---------  -------- ------------- ----------
             demotest jan             Jan Eaton  Testing  componentlead granted
             demotest dave            Dave Iyers Develmt  developer+    granted
             demotest pat             Pat Anders Mgmt     manager       granted
             demotest pat             Pat Anders Mgmt     projectlead   restricted
             demotest InteritedAccess                     projectlead   restricted
 
 
          6.7  EXAMPLE OF INHERITED ACCESS IN A COMPONENT HIERARCHY
 
          QUESTION:
 
          Example of inherited access in a component hierarchy
 
          ANSWER:
 
          An example of inherited access in a component hierarchy is shown
          below:
 
          In the above diagram, pat is the project leader for objects
          managed by the code component and jan is the project leader for
          objects managed by the docs component.  The component demotest is
          a child of both the code and the docs component.
 
          Any access authority configured for these components will be
          inherited by the demotest component unless it is restricted.
 
          If we just wanted to restrict pat from inheriting projectlead
          authority at the demotest component, then we could do so by spe-
          cifically restricting pat to the projectlead authority.
 
          If we wanted to restrict jan from inheriting projectlead
          authority, we could also do so in the same manner.  Eventually
          this becomes a cumbersome process and we may want to establish
          that all users inheriting the projectlead authority are
          restricted at demotest.
 
 
                                                       Authority access  39
 
 
                                  +------+
                                  | root |
                                  +------+
                                 /        \
                                /          \
                           +------+      +------+
              pat :        | code |      | docs |  jan : projectlead
              projectlead  +------+      +------+        (granted)
             (granted)         \            /
                                \          /
                                +----------+
                                | demotest |   jan : componentlead (granted)
                                +----------+   dave : developer+ (granted)
                                               pat : manager (granted)
                                               pat : projectlead (restricted)
                                               InheritedAccess : projectlead
                                                                 (restricted)
 
 
          Figure 3. Example of inherited access
 
 
          6.8  CAN THE BASE AUTHORITIES BE RESTRICTED?
 
          QUESTION:
 
          We want to restrict the base authority of specific users against
          a specific component.  For example, we do not want certain users
          to open a defect against certain components (the DefectOpen is a
          base authority).
 
          ANSWER:
 
          The base authorities cannot be restricted.
 
          The Chapter 4 of the CMVC Users Reference say the following about
          the actions that have base authority:
 
            "...
            a base authority that can be performed by all users in the family"
 
 
          6.9  ADDITIONAL DETAILS ON RESTRICTING AUTHORITY ACCESS
 
          QUESTION:
 
          Additional details on restricting authority access
 
          ANSWER:
 
 
          40  CMVC FAQ: end user tasks
 
 
          The component owner, superuser or user with ACCESSRESTRICT
                                                      ______________
          authority can restrict access for users at a component.
 
          Restricted authority is NOT inherited by child components.
                                  ___
 
          Restricted authority does not affect implicit and superuser
          authority.
 
          User whose access is restricted is notified.  Subscribers to
          ACCESSRESTRICT are notified.  When -inherited is used, only sub-
          ______________
          scribers are notified.
 
          When a family is created, a special user "InheritedAccess" is
          added to handle the restriction of authority access.
 
          The id for this user is 0 in the Users table and must remain as 0
          for the function to work correctly.
 
          Each user on the access list of a component can have only one
          entry for each authority group.  Therefore, if the user has the
          authority group 'developer' listed as a granted authority for a
          component, the server will prevent the addition of the authority
          group 'developer' as a restricted authority type for this user.
          This current authority group would have to be deleted and then
          the authority group can be restricted for the user.
 
          If a user has multiple authority groups defined for a component
          where some are granted and others are restricted, then the user's
          access authority for that component will be the sum of all
          authority groups and the restricted actions will take precedence
          over the granted actions.
 
 
          6.10  CLARIFICATION ON FILECHECKIN AND FILEUNDO AUTHORITY ACTIONS
 
          QUESTION:
 
          Clarification on FileCheckIn and FileUndo authority actions
 
          ANSWER:
 
          o   The FileCheckIn authority gives a person the power to check
              in a file EVEN if the file is locked by someone else.
 
          o   The FileUndo action for a specific change can be done by the
              user who did that change, even if this action is not explic-
              itly given to that user.
 
 
                                                       Authority access  41
 
 
           RW ACCESS ONLY TO CREATOR?'
          6.11  CAN I SPECIFY FOR FILES: RO ACCESS TO ALL
 
          QUESTION:
 
          We have files in CMVC that all our group needs to read, but that
          should only be changeable by the creator.  Can CMVC do this?
 
          ANSWER:
 
          CMVC does not have access restrictions at the File level, only at
          the Component level.
 
          Thus, you may want to expand your component hierarchy and dis-
          tribute your files accordingly.  For example if all files for the
          GUI can only by modified by Sue, then move all those files into a
          new component and name Sue as the owner of that component (or at
          least, you give Sue the authority for FileCreate and FileModify,
          such as developer+).
 
          Remember that the access lists are inherited from a parent compo-
          nent to a children component, and that the access lists are
          merged and the total access is the union of the individual access
          lists.
 
 
          42  CMVC FAQ: end user tasks
 
 
                                                       7.0  SPECIAL REPORTS
 
 
          7.1  HINT WHEN USING % IN QUERIES IN REXX FILES
 
          QUESTION:
 
          I am having problems with my REXX files in which the % wildcard
          for SQL statements is not properly replaced.
 
          ANSWER:
 
          The % character in REXX or in the OS/2 and DOS batch languages is
          used to denote an environment variable, such as %PATH%.  However,
          if you want to use the % character for SQL queries, then you need
          to specify it double, as: %%
 
 
          7.2  HOW TO LIST ALL FILES CHECKED IN BETWEEN 2 DATES
 
          QUESTION:
 
          I would like to have a report that lists all the files checked in
          between two dates even if they are changed after this period.
 
          ANSWER:
 
          You could just use the versions table in a subquery:
 
            Report -view FileView -where "sourceid in ( select sourceid \
                   from Versions where changeDate between \
                   '95/01/01' and '95/02/01')"
 
          Also, you may want to play with variations of this query for per-
          formance reasons, for example:
 
            Report -view FileView -where "releaseName = 'myrelease' and \
                   exists  ( select sourceid \
                   from Versions where changeDate between \
                   '95/01/01' and '95/02/01' and \
                   sourceid = FileView.sourceid)"
 
 
                                                        Special reports  43
 
 
          7.3  HOW TO GET A LIST OF ALL COMPONENTS THAT HAVE FILES IN A
          GIVEN RELEASE
 
          QUESTION:
 
          How to get a list of all components that have files in a given
          release.
 
          ANSWER:
 
          One possible query is shown below:
 
            Report -view compView -where "name in (select compName \
                   from FileView where releaseName = 'alpha' and \
                   dropDate is null)"
 
 
          7.4  TO GET NUMERIC SORTING, USE VERSIONID INSTEAD OF VERSIONSID
 
          QUESTION:
 
          The order of the items using versionSID seems to be incorrect in
          the following report:
 
            Report -raw -view changeView -where "releaseName in ('relname') \
              and pathName in ('pathname') order by versionSID"
 
          The order is:
 
              1.1
              1.10
              1.11
              1.2
              ...
              1.9
 
          The expected order was 1.1 through 1.9, followed by 1.10 through
          1.11.
 
          ANSWER:
 
          The versionSID (SID field in the versions table) is a variable
          character field so the Report is behaving correctly.
 
          Instead, try ordering by versionid, because this field is numeric
          (it is generated from the Sequence table), it should provide you
          with the ordering that you were expecting.
 
 
          44  CMVC FAQ: end user tasks
 
 
          7.5  WHERE DO THE NUMBERS FOR DEFECTS AND FEATURES COME FROM?
 
          There are three "sequences" used in CMVC which are used to deter-
          mine what internal "ID" numbers are assigned to any entry in a
          table that must be uniquely identified.  The "numbers" assigned
          as names for defects and features are the most obvious.  Each of
          these sequences is stored as a separate row in the family's
          SEQUENCE table.  Once a number is used from one of these rows,
          the value is incremented.
 
          Here are the names of each row and what they are used for:
 
          DEFECTS   The default name for any defect or feature.  Since
                    these numbers are very visible, this is the only use of
                    this number.
 
                    One minor side effect of the fact that the ID for a
                    defect/feature is also the default name, is that if you
                    change the name to something like "Defect1413" instead
                    of the default name "1413", then the number 1413 is
                    still used up.  As a result, the next defect will have
                    a default name of 1414.
 
          SOURCEID  As explained previously (and in much more detail in the
                    the TR 29.2297 "CMVC frequently asked questions:
                    TRCMF-VC version control and database synchronization
                    issues"), the sourceId points to where a file is stored
                    in an SCCS archive in the VC tree.
 
                    This number is incremented each time a new file is
                    created.  The limit of six digits in a numeric field
                    for some databases (4 for path plus 2 for SCCS archive
                    filename) is the reason why CMVC only supports
                    1,000,000 files.  In other words, when sourceID reaches
                    999999, then the last archive vc/9/9/9/9/s.99 is
                    created.
 
          GENERAL   All other records in database tables that have a unique
                    identifying key (id) use this number.
 
                    Because these keys must be unique, we strongly warn
                    users that creating or deleting any record that con-
                    tains a column with a suffix name of "id", (such as
                    releaseId), risks corrupting the entire family.
                    Records in tables that have columns named like
                    releaseId, point to these unique records.
 
                    Further, these keys must be unique in order for all of
                    the database views that are used by the GUI and Report
                    command to display the correct values.
 
 
                                                        Special reports  45
 
 
          7.6  WHY DOES "FIELD <> 'VALUE'" NOT INCLUDE NULL?
 
          QUESTION:
 
          Why does "field <> 'value'" not include null?
 
          I queried the defects in my CMVC family for all the defects that
          do not have a certain value in the Release field; let's say that
          I got 100 records.  Then I queried the defects that have a
          certain value and let's say that I got 50 records.  However, I
          found out that there are really 175 defects in my CMVC family and
          the above actions count for only 150 of them.  What happened to
          the missing 25 records?
 
          ANSWER:
 
          A null value is a value that forms a 3rd category when the
          equal/no-equal operator is used.
 
          o   Values that are equal.
 
              In the example above, there 50 records of this kind.
 
          o   Values that are not equal.
 
              In the example above, there are 100 records of this kind.
 
          o   Values that do not exist, that is, that are null.
 
              In the example above, there are 25 records of this kind.
 
          Therefore, if you use the <> or the = operators, the resulting
          query will not include the values that are null.
 
 
          7.7  SORTING DEFECT/FEATURE NAMES
 
          QUESTION:
 
          If you do Report -view DefectView -where "order by name", the
          output would look like the following:
 
            1
            10
            100
            ...
            2
            20
            200
            ...
 
          Instead of the expected result:
 
 
          46  CMVC FAQ: end user tasks
 
 
            1
            2
            10
            20
            100
            200
 
          ANSWER:
 
          This is because the defect name is now an alphanumeric field and
          it is left justified (it was a numeric field in CMVC V1).  This
          was added to allow you to change the name of a defect.
 
          To get the proper order of the defect names, use "order by
          addDate, name".
 
 
          7.8  USE OF 1=1 AS ARGUMENT TO QUERY FOR ALL INSTANCES OF AN
          OBJECT
 
          QUESTION:
 
          Use of 1=1 as argument to query for all instances of an object
 
          ANSWER:
 
          o   You can use the argument "1=1" to query for all objects of
              the same kind.
 
              For example, to query for all users:
 
              -   You can use the line command:
 
                    Report -raw -view  Users  -where "1=1"
 
              -   You can enter "1=1" (without the double quotes) in the
                  entry field for the query in the Open List dialog (UNIX)
                  or Filter dialog (OS/2).
 
          o   Another way is to use the following argument:
 
                Report -raw -view Users -where " login like '%' "
 
 
                                                        Special reports  47
 
 
          7.9  HOW TO SPECIFY DATES IN A QUERY
 
          QUESTION:
 
          How to specify dates in a query.
 
          ANSWER:
 
          CMVC uses the format YY/MM/DD for the dates.  Please notice that
          the year has only 2 digits.  In TeamConnection we have fixed this
          potential problem by using 4 digits.
 
          If you want to query all the defects that were opened since the
          beginning of April, 1996, you can do the following from the GUI:
 
          1.  Open the "Open List" or "Filter" dialog.
          2.  Locate the field that has dates, such as "Add Date".
          3.  Select the proper operand.  In this example is greater-than
              ">".
          4.  Enter the date, such as April 1, 1996:  96/04/01
          5.  Apply or execute the query.  A copy of the complete command
              that used this query is stored at the end of the CMVC.LOG
              file.  See the GUI settings for the proper name and location
              for this file.
          6.  In this case, the query from the Open List for Defects will
              be:
 
                addDate > '96/04/01'
 
              Since the date also includes the time stamp in the string,
              you can also do the query by using something like this:
 
                addDate like '96/04/01%'
 
          7.  Then, the corresponding command at the bottom of the log will
              be:
 
                Report -raw -view  DefectView  -where "addDate > '96/04/01'"
 
 
          7.10  HOW DO I USE A REPORT COMMAND IN A SHELL SCRIPT?
 
          QUESTION:
 
          How do I use a Report command in a shell script?
 
          ANSWER:
 
          The default output format of the Report command is, in general,
          not appropriate for parsing in a shell script.  The Report
          command provides a "-raw" option for most queries in which the
 
 
          48  CMVC FAQ: end user tasks
 
 
          fields are separated with a pipe or vertical bar (|) symbol.
          This makes for much easier parsing.
 
          A shell script can use "awk" or "cut" to easily extract specific
          columns from a query.  For example, to extract the second column
          from a report, you can do the following:
 
            Report ... -raw | cut -d'|' -f2
 
 
                                                        Special reports  49
 
 
          50  CMVC FAQ: end user tasks
 
 
                                                          8.0  NOTIFICATION
 
 
          8.1  WHO GETS NOTIFIED WHEN A CMVC ACTION OCCURS?
 
          QUESTION:
 
          Who gets notified when a CMVC action occurs?
 
          ANSWER:
 
          When a CMVC user performs an action, all of the users are noti-
          fied according to the table in the Notification chapter in the
          CMVC User Reference.
 
          There is one exception, the user who actually performs the action
          is NOT notified because that user did the action and thus, CMVC
          is not going to give the user an additional notification that the
          user did it.
 
          Also, if there are several CMVC users with the same mail address,
          then only one of these users will get notified.  Thus, if you
          have more that one CMVC user id with the same mail address and
          some of these CMVC user ids are involved in the notification, you
          will not get additional notifications for each of them.
 
 
          8.2  HOW TO REMOVE SPECIFIC NOTIFICATION MESSAGES FROM CMVC
 
          QUESTION:
 
          A user in our CMVC family does not want to receive CMVC notifica-
          tion messages whenever there are updates in the family for which
          the user is to be notified.  Is there something we should do?
 
          ANSWER:
 
          There is no middle ground with the notifications from CMVC, that
          is, you cannot customize to receive certain messages but not
          other messages.
 
          Some workarounds are shown below:
 
          o   You cannot remove the address from the user ID so that the
              user no longer receives these messages, because the address
              field is a required one.  However, you could change the
 
 
                                                           Notification  51
 
 
              address to an email account that does not exist or that is
              created just for this purpose, such as
 
                nobody@hostName
 
          o   You could create a "dummy" userid in your system that can be
              used as the recipient of any CMVC messages that other users
              do not want to receive.
 
              Of course, the real CMVC users will not be able to get any
              messages from CMVC at all.
 
              In a sense, this "dummy" user id is the equivalent to having
              a null device such as /dev/null.
 
 
          8.3  SUGGESTION OF USING ANOTHER ACCOUNT TO RECEIVE MESSAGES IN
          CMVC
 
          QUESTION:
 
          Suggestion of using another account to receive messages in CMVC.
 
          ANSWER:
 
          It you are a componentLead or a releaseLead and you receive a lot
          of notifications from CMVC, you may want to consider creating
          another system account for yourself whose primary purpose would
          be to receive those notifications.  In that way, these notifica-
          tions will not clutter the mail of your primary account.
 
          Once this secondary account is created, then you can simply
          modify the address of your CMVC user id to reflect the new sec-
          ondary account.
 
 
          52  CMVC FAQ: end user tasks
 
 
                                                  APPENDIX A.  BIBLIOGRAPHY
 
 
          For more information on how to use CMVC, you can consult the fol-
          lowing manuals and publications:
 
            SC09-1596-01  IBM CMVC Client Installation and Configuration
            SC09-1597-01  IBM CMVC User's Reference
            SC09-1631-02  IBM CMVC Server Administration and Installation
            SC09-1633-00  IBM CMVC Concepts
            SC09-1635-01  IBM CMVC Commands Reference
 
          The following Redbooks offer practical advice on CMVC:
 
            GG24-4178-00  Did you say CMVC?
            GG24-4345     CMVC: Customer's Perspective
 
          The following technical reports describe in detail useful hints
          on using CMVC:
 
            29.2169  How to use CMVC with National Language Support (NLS)
                     and Double-Byte Character Sets (DBCS)
            29.2180  How to do routine tasks in the OEM Platforms for CMVC
            29.2183  Using CMVC for Products with Multiple
                     National Language Versions (NLVs)
            29.2232  How to do migration tasks with CMVC
            29.2244  How to build and package the CMVC client for Windows 3.1
            29.2245  How to build and package the CMVC client for OS/2
            29.2253  Comparison between CMVC 2.3 and TeamConnection 2
            29.2254  Migrating from CMVC 2.3 to TeamConnection 2
            29.2268  CMVC frequently asked questions:
                     license management with NetLS/iFOR
            29.2269  How to build and package the CMVC server/Client for UNIX
            29.2296  CMVC frequently asked questions:
                     files, releases, levels, and tracks
            29.2297  CMVC frequently asked questions:
                     version control and database synchronization issues
            29.2298  CMVC frequently asked questions:
                     hints and tips on using databases and OEM platforms
            29.2299  CMVC frequently asked questions:
                     client for UNIX, OS/2 and Windows 3.1
            29.2321  Comparison between TeamConnection 2 and CMVC 2.3 (2nd Edition)
            29.2322  CMVC/TeamConnection: How to cope with dynamic IP addresses
            29.2323  CMVC frequently asked questions:
                     handling file, release and level extract problems
 
 
                                              Appendix A.  Bibliography  53
 
 
          A.1  HOW TO GET ELECTRONIC COPIES OF MANUALS AND TRS
 
          Many of the manuals and technical reports mentioned in this docu-
          ment can be downloaded as follows:
 
          o   From the IBM intranet (only for IBM employees).
          o   From the Internet (open to everyone).
 
 
          A.1.1  IBM Intranet
          ___________________
 
 
          A.1.1.1  Web Home Page
 
          You can access the CMVC Service/Development Home Page at:
 
            http://tc-cmvc.raleigh.ibm.com/cmvc
 
          From the index at the top of the page, select:
 
          o   Technical Reports and related tools
          o   Documentation in ASCII text files
 
 
          A.1.1.2  FTP
 
          You can download the code from our internal FTP site, by doing:
 
          1.  ftp tc-cmvc.raleigh.ibm.com
          2.  login as 'anonymous' and for password give your email
              address.
          3.  cd e:\cmvc\doc\tr
          4.  binary
          5.  get fileName
          6.  quit
 
 
          A.1.2  Internet
          _______________
 
 
          A.1.2.1  Web Home Page
 
          Not available.
 
 
          54  CMVC FAQ: end user tasks
 
 
          A.1.2.2  FTP
 
          You can download the code from our external FTP site, by doing:
 
          1.  ftp ftp.software.ibm.com
          2.  login as 'anonymous' and for password give your email
              address.
          3.  cd ps/products/cmvc/doc
          4.  binary
          5.  get fileName
          6.  quit
 
 
                                              Appendix A.  Bibliography  55
 
 
          56  CMVC FAQ: end user tasks
 
 
                      APPENDIX B.  COPYRIGHTS, TRADEMARKS AND SERVICE MARKS
 
 
          The following terms used in this technical report, are trademarks
          or service marks of the indicated companies:
 
            +---------------------+-------------------------------------------+
            | TRADEMARK,          | COMPANY                                   |
            | REGISTERED          |                                           |
            | TRADEMARK OR        |                                           |
            | SERVICE MARK        |                                           |
            +---------------------+-------------------------------------------+
            | IBM                 | IBM Corporation                           |
            | AIX                 |                                           |
            | OS/2                |                                           |
            | CMVC                |                                           |
            | DB2/6000, DB2       |                                           |
            | TeamConnection      |                                           |
            +---------------------+-------------------------------------------+
            | PostScript          | Adobe Systems Incorporated                |
            +---------------------+-------------------------------------------+
            | HP-UX               | Hewlett-Packard Company                   |
            +---------------------+-------------------------------------------+
            | Microsoft           | Microsoft Corporation                     |
            | Windows             |                                           |
            | MS-DOS              |                                           |
            +---------------------+-------------------------------------------+
            | UNIX                | X/Open Co., Ltd.                          |
            +---------------------+-------------------------------------------+
 
          END OF DOCUMENT
 
 
                  Appendix B.  Copyrights, Trademarks and Service marks  57