TDMS Software control procedures

Toxicology Data Management System

  ----------------------------------- -----------------------------------
  **Document Number:**                DD-1001-4.3

  **Version:**                        4.3

  **Issued:**                         March 3, 1999

  **Reviewed & Approved by:**         John Minnich, Program Director

                                      

  **Date:**                           
  ----------------------------------- -----------------------------------

TDMS Software Control Procedures

National Toxicology Program Support

TDMS Software Control Procedures

> Prepared for: National Institute of Environmental Health Sciences
>
> Research Triangle Park, NC 27709
>
> Contract no.: 273-95-I-0012
>
> Prepared by: Technology Planning & Management Corporation
>
> Imperial Center
>
> Canterbury Hall, Suite 310
>
> 4815 Emperor Boulevard
>
> Durham, NC 27703

Revision Summary

+------------+----------------+-------------+-------------------------+
| **Date     | **Document     | **Revision  | **Reason for Revision** |
| Released** | Number**       | Level**     |                         |
+------------+----------------+-------------+-------------------------+
| 03/99      | DD-1001        | 4.3         | Document template       |
|            |                |             | change.                 |
|            |                |             |                         |
|            |                |             | VAX references changed  |
|            |                |             | to HAZEL. CERT          |
|            |                |             | references changed to   |
|            |                |             | BETA..                  |
|            |                |             |                         |
|            |                |             | Removed old tracking    |
|            |                |             | system information and  |
|            |                |             | incorporated PVCS       |
|            |                |             | Tracker procedures in   |
|            |                |             | the following sections: |
|            |                |             |                         |
|            |                |             | Steps 1, 4, and 26 in   |
|            |                |             | Appendix C              |
|            |                |             |                         |
|            |                |             | Steps 1, 4, and 25 in   |
|            |                |             | Appendix D              |
|            |                |             |                         |
|            |                |             | Steps 1 and 22 in       |
|            |                |             | Appendix F              |
|            |                |             |                         |
|            |                |             | Steps 1 and 22 in       |
|            |                |             | Appendix G              |
+------------+----------------+-------------+-------------------------+
| 3/97       | DD-1001        | 3.3         | Minor Update            |
+------------+----------------+-------------+-------------------------+
| 12/96      | DD-1001        | 3.2         | Minor Update            |
+------------+----------------+-------------+-------------------------+
| 10/96      | DD-1001        | 3.1         | Minor Update            |
+------------+----------------+-------------+-------------------------+
| 10/95      | DD-1001        | 3.0         | Major procedural        |
|            |                |             | changes in addition of  |
|            |                |             | QA environment          |
+------------+----------------+-------------+-------------------------+
| 12/94      | DD-1001        | 2.0         | Changes in procedures   |
+------------+----------------+-------------+-------------------------+
| 8/88       | DD-1001        | 1.0         | New                     |
+------------+----------------+-------------+-------------------------+

Table of Contents

Revision Summary

Table of Contents

Chapter 1

Introduction

Overview

Policy

Chapter 2

TDMS Structure

TDMS Environments

TDMS Directories

Directories Used for Development and Testing

Production Directories

STAR_PROD_CODE

STAR_PROD_DATA

Relationship of Environments to Directories

Movement of Software Between Environments

Chapter 3

Compiling and Linking Programs

Compiling Programs

Security for Compiling Programs

Searchlists

Linking Programs

Security for Linking Programs

Search List

Executing Procedures

Chapter 4

Software Control in the TDMS Project

Chapter 5

Development Environment

Logical Names for the Development Environment

The Development Directories

Prerequisites to Moving Software to the QA Environment

Chapter 6

Quality Assurance Environment

Logical Names for the QA Environment

The QA Directories

Moving Files from Development to QA

Executing Batch Jobs for Formal Testing

Making Corrections During a Formal Test

Recording the Program Corrections

Chapter 7

Beta Testing Environment

Logical Names for the Beta Environment

The Beta Directories

Moving Files from QA to Beta

Correcting Errors during Beta Testing

Preparing to Move Software to the Production Environment

Chapter 8

Production Environment

Logical Names for the Production Environment

The Production Directories

Moving Files from Beta to Production

Appendix a

TDMS Directories

Development Environment Directories

QA Environment Directories

Beta Environment Directories

Production Environment Directories

Appendix b

Creating a Movelist File

Purpose of a Movelist File

Files in the Movelist File

Organizing the Movelist

Procedures for Creating Movelist Files

Appendix c

Moving Software from Development to QA

Moving from the Development to the QA Environment

Tasks to Perform Prior to Moving Software

Procedure to Move Software from Development to QA

Appendix d

Moving Software from QA to Beta

Tasks to Perform Prior to Moving Software

Procedure to Move Software from QA to Beta

Appendix e

Compiling and Linking Programs and Modules

Compiling Programs and Modules

Linking Programs and Modules

Compile and Link Errors

Appendix f

Moving from Beta to Production

Tasks to Perform Prior to Moving Software

Procedure to Move Software from Beta to Production

Appendix g

Moving from QA to Production

Tasks to Perform Prior to Moving Software

Procedure to Move Software from QA to Production

Appendix h

Cataloging NATURAL Command Procedures

NATURAL Programs

CMD Files

Cataloging Natural Files

Introduction

The purpose of this document is to offer a thorough explanation of the
standards and procedures for controlling the movement of software in the
National Toxicology Program's (NTP) Toxicology Data Management System
(TDMS) project.

These standards and procedures given in this document ensure movement of
software is accomplished in a disciplined and controlled manner to
protect the security of the TDMS software. It is used as a guideline for
developers and the Software Control Librarian.

# Overview

The TDMS system collects, stores, and reports information produced from
the in-life and histopathology portions of subchronic and chronic
toxicology tests conducted by the NTP. This information is collected
from the contract toxicology laboratories using microcomputers that
contain the Laboratory Data Acquisition System (LDAS). The information
is uploaded through communications lines to an ALPHA 2100. The system
processes an average of 10,000 daily update records, which are added to
an ADABAS database on the ALPHA.

TDMS consists of the following eight subsystems:

1.  TDMS Main Menu

2.  PEX

3.  PAS Download

4.  RECEIVE

5.  UPDATE

6.  EIS/PEIS Reports

7.  Error Correction

8.  Communications

The TDMS subsystems contain over 250,000 lines of source code. Because
TDMS source code is so vast, structured control methods are needed to
ensure the integrity of the software. Software control procedures
regulate the movement of software files to provide control over the
development and testing of software before the software actually begins
production processing.

# Policy

The Quality Assurance Manager establishes the standards and procedures
for software control. These standards and procedures are used in
conjunction with the latest versions of the following documents:

-   *Software Development Procedures and Standards*

-   *Configuration Management Procedures*

Both documents describe the rules and conventions governing the
practices used to develop and maintain the TDMS project.

TDMS Structure

TDMS Structure containing 4 software environments that reside in one of
eight software directories is discussed in this chapter.

# TDMS Environments

The TDMS system contains the following four software environments:

  ------------------ ------------------ ---------------------------------
  **Environment**    **Tasks Performed  
                     in the             
                     Environment**      

  Development        Maintenance        Modifies, repairs, and enhances
                                        existing software.

                     Development        Creates new software.

                     Development        Tests software as it is being
                     Testing            developed.

  Quality Assurance  Formal Testing     Verifies that software performs
                                        as expected, from a developer's
                                        perspective.

  Beta Testing       Training, Second   
                     Code Line, and     
                     Staging area       

  Production         Production Testing Verifies function of software
                                        required to operate production
                                        system
  ------------------ ------------------ ---------------------------------

Each environment is separated by function, strict security is maintained
to ensure that they remain separate.

# TDMS Directories

All TDMS software resides in one of the following eight software
directories:

+-----------------------------------+-----------------------------------+
| -   STAR_DEVL_CODE                | -   STAR_BETA_CODE                |
+-----------------------------------+-----------------------------------+
| -   STAR_DEVL_DATA                | -   STAR_BETA_DATA                |
+-----------------------------------+-----------------------------------+
| -   STAR_QA_CODE                  | -   STAR_PROD_CODE                |
+-----------------------------------+-----------------------------------+
| -   STAR_QA_DATA                  | -   STAR_PROD_DATA                |
+-----------------------------------+-----------------------------------+

Depending on the environment in which the location is set, the
directories associated with that environment and those near the bottom
of the list can be referenced using the logical names set up for TDMS.

Following are descriptions of each software directory.

# Directories Used for Development and Testing

  ----------------------------------- -----------------------------------
  **STAR_DEVL_CODE**                  **STAR_DEVL_DATA**

  Contains subdirectories which house Contains subdirectories that house
  all code under development or       parameter and control files and
  informal testing.                   data used by developers for
                                      informal testing.

  **STAR_QA_CODE**                    **STAR_QA_DATA**

  Contains subdirectories to which    Contains subdirectories to which
  files from Star_Devl_Code have been files from Star_Devl_Data have been
  moved when they have completed      moved when they have completed
  development and are ready for       development and are ready for
  formal testing.                     formal testing.

  **STAR_BETA_CODE**                  **STAR_BETA_DATA**

  Subdirectory structure is identical 
  to its QA counterpart. Files in     
  these subdirectories have been      
  moved from QA and are ready for     
  Beta testing.                       
  ----------------------------------- -----------------------------------

# Production Directories

## STAR_PROD_CODE

\[STAR_PROD_CODE\] contains all source code files required to operate
the production system. This directory contains nine major
subdirectories. These subdirectories contain production versions of:

-   Command procedures

-   Source Programs

-   Executable images

-   System information

## STAR_PROD_DATA

\[STAR_PROD_DATA\] contains all data files required to operate the
production system.

This directory contains six major subdirectories. These subdirectories
contain the production version of access control files and system
parameters.

# Relationship of Environments to Directories

The following chart shows the relationship between the four software
environments, software directories, and the tasks that are performed in
each area with the direction of software movement being from left to
right.

+-----------------+---------------+-----------------+-----------------+
| **Development** | **Quality     | *               | **Production**  |
|                 | Assurance**   | *Beta-Testing** |                 |
+-----------------+---------------+-----------------+-----------------+
| STAR_DEVL_CODE  | STAR_QA_CODE  | STAR_BETA_CODE  | STAR_PROD_CODE  |
|                 |               |                 |                 |
| STAR_DEVL_DATA  | STAR_QA_DATA  | STAR_BETA_DATA  | STAR_PROD_DATA  |
+-----------------+---------------+-----------------+-----------------+
| Development     | Formal        | Beta Testing    | Production      |
| Testing         | Testing       |                 | Processing      |
+-----------------+---------------+-----------------+-----------------+

# Movement of Software Between Environments

The Software Control Librarian is responsible for moving software from
one environment to another.

When work in the Development environment is complete, the Software
Control Librarian moves the software into the QA environment, where
formal testing is completed by formal testers. The Software Control
Librarian then moves the software into the Beta environment. When work
in the Beta environment is complete, the Software Control Librarian
moves the software into the Production environment.

Software may be copied back to the Development environment by the
developer, but only the Software Control Librarian can return software
to the QA, Beta, or Production environments. In the event that an entire
softweare project must be moved from a testing environment back to the
Development environment, the database administrator (DBA) of the TDMS
Production MS account (TDMSPROD) must be enlisted by the Software
Control Librarian. The DBA is responsible for manually moving all files
that are part of the project to the CRETURN directory in the development
environment. All related logical names should be removed from the setup
procedures of the QA and Beta testing environments and placed in the
setup procedures of the Development environment. Logical names for each
environment are discussed in Chapters 5 and 8.

Compiling and Linking Programs

Programs in the Development, QA, Beta Testing, and Production
environments require a standard set of compiling and linking procedures.

Using the same procedures in all four environments---Development, QA,
Beta Testing, and Production---ensures consistent software performance
when software is moved from one environment to another.

# Compiling Programs

Source code files are compiled using procedures that are standard for
all three environments. Developers use these procedures in the
Development environment to ensure that new or modified code compiles,
and subsequently executes, correctly.

Source code files are compiled automatically when a file is moved to the
QA, Beta or Production environment. However, if a compile error occurs,
the Software Control Librarian must compile the program(s) containing
the errors by using the standard compiling procedures.

Using the same procedures in all four environments ensures that the
proper compiler options are always used, and software performance will
not change if the compiler options change.

*Appendix E* contains the commands for compiling programs and modules.

## Security for Compiling Programs

In TDMS software, several programs often require the same lines of
source code, such as record layouts. Instead of inserting these same
lines of code in each program or subroutine that requires the code, the
lines of code are inserted into a single copy code file. A COPY or
INCLUDE statement is then used in each program or subroutine that

requires the code to direct the compiler to the copy code file and
include those lines of code in the compile.

A search list logical name is required on all COPY or INCLUDE
statements. Search list logicals are used in source programs to define a
list of directories where the compiler will search for copy code files.
Using Searchlists enables the developer to avoid hardcoding the
directory names for copy code files into a program. This allows the copy
code files and object files to be moved from the Development environment
to the QA, Beta, and Production environments without having to change
the procedures that compile the programs.

For example, the search list in the Development environment causes the
compiler to search the Development directories for copy code files or
definitions. If the required information cannot be found in the
Development environment, the QA and Beta environments are searched. If
the information still cannot be found, the Production environment is
searched.

The QA environment has a search list that causes the compiler to search
first the QA directories, next the Beta directories, then the Production
directories. However, the Searchlists in the QA environment are defined
to ensure that no Development files are included in the compile.

Similarly, a search list in the Beta environment causes the compiler to
search first the Beta directories, then the Production directories.
Again, the Searchlists in the Beta environment are defined to QA or
ensure that no Development files are included in the compile. Attempting
to compile a program containing a copy code file that is in the
Development environment creates a compile error.

A search list in the Production environment searches only the Production
directories, ensuring that no Beta or Development files are included in
the compile. Attempting to compile a program containing a copy code file
in the Development or Beta environments creates a compile error.

## Searchlists

Searchlists for compiling programs in the Development environment are as
follows:

+------------------+-----------------+---------------------------------+
| **Language       | **Search list** | **Directories**                 |
| Searched**       |                 |                                 |
+------------------+-----------------+---------------------------------+
| COBOL            | COBCOPY         | \[ \]                           |
|                  |                 |                                 |
| PL/1             | PLICOPY         | STAR_DEVL_CODE:\[COPYLIB\]      |
|                  |                 |                                 |
| C                | VAXC\$INCLUDE   | STAR_QA_CODE:\[COPYLIB\]        |
|                  |                 |                                 |
|                  |                 | STAR_BETA_CODE:\[COPYLIB\]      |
|                  |                 |                                 |
|                  |                 | STAR_PROD_CODE:\[COPYLIB\]      |
+------------------+-----------------+---------------------------------+

NOTE

> In the previous list and any subsequent lists, the symbol \[ \]
> denotes the default directory. Also, VAXC libraries are still used in
> the ALPHA environment. It is the same identifier for the VAXC
> language.

The Searchlists for compiling programs in the QA environment are as
follows:

+-------------------+----------------+---------------------------------+
| **Language        | **Search       | **Directories**                 |
| Searched**        | list**         |                                 |
+-------------------+----------------+---------------------------------+
| COBOL             | COBCOPY        | \[ \]                           |
|                   |                |                                 |
| PL/1              | PLICOPY        | STAR_QA_CODE:\[COPYLIB\]        |
|                   |                |                                 |
| C                 | VAXC\$INCLUDE  | STAR_BETA_CODE:\[COPYLIB\]      |
|                   |                |                                 |
|                   |                | STAR_PROD_CODE:\[COPYLIB\]      |
+-------------------+----------------+---------------------------------+

The Searchlists for compiling programs in the Production environment are
as follows:

+-------------------+----------------+---------------------------------+
| **Language        | **Search       | **Directories**                 |
| Searched**        | list**         |                                 |
+-------------------+----------------+---------------------------------+
| COBOL             | COBCOPY        | \[ \]                           |
|                   |                |                                 |
| PL/1              | PLICOPY        | STAR_BETA_CODE:\[COPYLIB\]      |
|                   |                |                                 |
| C                 | VAXC\$INCLUDE  | STAR_PROD_CODE:\[COPYLIB\]      |
+-------------------+----------------+---------------------------------+

The Searchlists for compiling programs in the Production environment are
as follows:

+-------------------+----------------+---------------------------------+
| **Language        | **Search       | **Directories**                 |
| Searched**        | list**         |                                 |
+-------------------+----------------+---------------------------------+
| COBOL             | COBCOPY        | \[ \]                           |
|                   |                |                                 |
| PL/1              | PLICOPY        | STAR_PROD_CODE:\[COPYLIB\]      |
|                   |                |                                 |
| C                 | VAXC\$INCLUDE  |                                 |
+-------------------+----------------+---------------------------------+

# Linking Programs

Two procedures are used in all three environments to link software.
Using these two procedures for all environments ensures that the proper
linker options are always used, and software performance will not change
even if the linker options change.

Developers use these procedures to link the programs in the Development
environment. The Software Control Librarian uses the linking procedures
to link the programs in the Beta and Production environments after a
software move.

Refer to *Appendix E* for more information on linking programs.

## Security for Linking Programs

To link programs, a search list is required in the link options files.
The search list is defined in each environment to ensure that only the
proper files are included in the link operation. For example, the search
list in the Development environment allows the necessary files from all
three environments to be linked. The search list in the QA environment
ensures that only QA, Beta, and Production files are linked.

The search list in the Beta environment ensures that only Beta and
Production files are linked. Attempting to create an executable image
for a program that requires an object file that does not reside in
either the Beta or Production environments creates a link error.

The search list in the Production environment ensures that only
Production files linked. Attempting to create an executable image for a
program that requires an object file that does not reside in the
Production environment creates a link error.

## Search List

Search list logicals define a list of directories that the linker
searches for unresolved object modules to include in the executable
image. Searchlists allow the copy code files and object files to be
moved from the Development environment to the QA, Beta, and Production
environments without having to change the procedures that link the
programs.

A search list logical name is coded on all references in a program to
INCLUDE files, allowing the developer to avoid hardcoding directory
names. This method allows the INCLUDE files to be moved without having
to change the options files that reference them.

The search list for linking programs is called LINKSEARCH. In the
Development environment, LINKSEARCH searches the following directories:

\[ \]

STAR_DEVL_CODE:\[APPLICCON\]

STAR_DEVL_CODE:\[RECEIVE\]

STAR_DEVL_CODE:\[LABS\]

STAR_DEVL_CODE:\[PASVAL\]

STAR_DEVL_CODE:\[EP_REPORTS\]

STAR_DEVL_CODE:\[VAXUTILITY\]

STAR_DEVL_CODE:\[DOWNLOAD\]

STAR_DEVL_CODE:\[MENU\]

STAR_QA_CODE:\[SOURCE\]

STAR_BETA_CODE:\[SOURCE\]

STAR_PROD_CODE:\[SOURCE\]

In the QA environment, LINKSEARCH searches the following directories:

\[ \]

STAR_QA_CODE:\[APPLICCON\]

STAR_QA_CODE:\[SOURCE\]

STAR_BETA_CODE:\[SOURCE\]

STAR_PROD_CODE:\[SOURCE\]

In the Beta environment, LINKSEARCH searches the following directories:

\[ \]

STAR_BETA_CODE:\[SOURCE\]

STAR_PROD_CODE:\[SOURCE\]

In the Production environment, LINKSEARCH searches the following
directory:

STAR_PROD_CODE:\[SOURCE\]

# Executing Procedures

All procedures are invoked using a logical name. Procedures are given
logical names to avoid using directory names to invoke the procedures.
By avoiding directory names, procedures can be moved from the
Development environment to the QA, Beta, and Production environments
without having to change any source code references to the procedures.

The logical name tables in each of the three environments define the
procedures and programs that reside in each environment. Attempting to
execute a command procedure or program that is not in the appropriate
environment creates a run-time error. For example, if an attempt is made
in the Beta environment to execute a procedure that is not in the Beta
or Production environments, an error is generated.

Software Control in the TDMS Project

The diagram below illustrates the sequence of events that occur during
software movement. Chapters 5 through 7 contain detailed information on
the three software environments and movement between directories.

![](media/image1.emf)

Development Environment

The Development environment contains software that is being created or
maintained.

Developers modify the files in the Development directories and
continuously perform informal tests on the software to ensure that the
code compiles, links, and executes as expected.

The Development directories are protected by Access Control Lists
(ACLs), which prevent unauthorized users from writing or deleting files
in those directories. Following is the access granted to authorized
users:

  ----------------- ------------------------ ----------------------------
  **Identifier**    **Type**                 **Access**

  PROJ_STAR_DM      Development Manager      Read, Write, Execute.
                                             Delete, Control

  PROJ_STAR_S       Software Control         Read, Write, Execute, Delete
                    Librarian                

  PROJ_STAR_ASI     ASI Subcontractor        Read, Execute

  PROJ_STAR_D       Developer                Read, Write, Execute, Delete

  ALL               Other                    None
  ----------------- ------------------------ ----------------------------

# Logical Names for the Development Environment

The Development environment is defined by using a set of logical name
tables. These tables define the directories, procedures, and programs
currently in development. Using logical names avoids hard coding
directory names in command procedures and in source code programs.
Directory names change when files move from Development directories to
QA directories. Using logical names allows the procedures and programs
to be moved from the Development environment to the QA environment
without any changes.

Logical names prevent hardcoding filenames in command procedures.
Filenames change when release revision names change. Software standards
require that a release revision notation (such as 1A) is included in the
filename. When maintenance is done on a program or procedure, the
release revision is changed (such as from 1A to 1B). Using logical names
avoids changing procedures when the release revision names change.

Logical names are also used to control compiling and linking processes.
Search list logicals define a list of directories in which the compiler
searches for copy code files. The linker searches for unresolved object
modules to include in the executable image.

The following chart lists the logical name tables in the Development
environment and defines each table:

  ------------------ ----------------------------------------------------
  **Table**          **Description**

  Directories        Contains all code and data directories.

  Files              Contains miscellaneous logicals for specific files,
                     print and batch queues, and security.

  Procedures         Contains command procedures.

  Programs           Contains executable programs.

  Queues             Contains batch and print queues.

  Searchlists        Contains Searchlists for compiling and linking.
  ------------------ ----------------------------------------------------

## 

## The Development Directories

The Development environment contains a number of directories. Files are
stored in these directories according to their project and function.
Refer to *Appendix A* for a list of the Development directories.

# Prerequisites to Moving Software to the QA Environment

After testing, the QA group creates a formal test plan. (Refer to
Configuration Management Procedures for information on software
development and testing). By the time the software is complete and has
passed preliminary testing, the formal test plan is ready for approval
by NIEHS authorities. In addition to specific testing instructions, the
test plan identifies source code programs and procedures to be tested,
files required to conduct formal testing, and batch jobs to be run. For
more information on test plans, refer to *Software Development
Procedures and Standards.*

The developer adds the names of the files identified in the test plan to
a MOVELIST. A MOVELIST contains a list of the files to be moved from the
Development environment to the QA environment by the Software Control
Librarian. *Appendix B* contains the procedures for creating a MOVELIST
file.

Before the software can be moved to the QA environment, the move must be
properly authorized. The developer must obtain the approval on the
Software Change Request Form.

Software is ready to be moved into the QA environment for formal testing
once the software has passed preliminary testing, the test plan has been
written, and the Software Change Request Form has been properly filled
out.

Quality Assurance Environment

The Quality Assurance (QA) Environment contains software that has
completed development and developmental testing by the Software
Development group. Formal testing by the QA group will be completed
while the software is in this environment. Formal testing by the QA
group will be completed while the software is in this environment.

The QA directories are protected by Access Control Lists (ACLs), which
prevent developers from writing to or deleting files in QA directories.
ACLs ensure that software cannot be changed during formal or Beta
testing (conducted in the Beta environment) unless software control
procedures are followed.

Software remains in the QA environment until formal testing is complete.

# Logical Names for the QA Environment

The QA environment is defined by using a set of logical name labels that
define the directories, procedures, and programs currently in Beta.
Using logical names avoids hard coding directory and file names in
command procedures and in programs.

Logical names also control compiling and linking processes. Search list
logicals define a list of directories in which the compiler searches for
copy code files. The linker searches for unresolved object modules to
include in the executable image.

Defining the QA environment using logical name tables ensures that
procedures and programs from the Development environment are not
executed during formal testing.

The chart on the next page lists the logical name tables in the QA
environment and the purpose of each table:

  ------------------ ----------------------------------------------------
  **Table**          **Description**

  QADirectories      Defines all directories.

  QAFiles            Defines all miscellaneous file names.

  QAProcedures       Defines all procedures.

  QAPrograms         Defines all programs.

  QAQueues_System    Defines all batch and print queues.

  QASearchlists      Defines Searchlists used for compiling and linking
                     code and modules.
  ------------------ ----------------------------------------------------

## The QA Directories

The QA environment contains a number of directories. Files are stored in
these directories according to their type and function. Refer to
*Appendix A* for a list of the QA directories.

## Moving Files from Development to QA

When preliminary testing in the Development environment is complete, the
developer prepares a MOVELIST file. (*Appendix B* contains the
procedures for creating a MOVELIST file.) The group leader gives the
MOVELIST, along with the Software Change Request Form, to the Software
Control Librarian. The Software Control Librarian uses the MOVELIST to
move the appropriate files from the Development environment to the QA
environment. *Appendix C* contains procedures for moving software from
the Development environment to the QA environment.

During the move, each file in the MOVELIST is copied to the QA
environment and subsequently deleted from Development. Deleting files
from the Development environment minimizes disk-space usage and prevents
file duplication.

The Software Control Librarian\'s approval is required on the Software
Change Request Form to indicate that all of the files were moved.

# Executing Batch Jobs for Formal Testing

Formal testing begins when all of the files in the MOVELIST have been
successfully moved into the QA environment, all source code files have
been compiled, and all executable images have been linked for all
programs; this is completed by the Software Control Librarian. Formal
testing is then completed by the Formal Testing section of the Quality
Assurance Group.

To ensure that software is not changed during formal testing, developers
do not have write access to the QA directories. Developers also do not
have write access to the log files, reports, and data files that are
created in the various QA directories during formal testing.

# Making Corrections During a Formal Test

If the test results reveal that an error occurred during formal testing,
the developer determines which files are involved and how to correct the
error. If errors are caused by incorrect logical names, the Software
Control Librarian corrects the names and repeats the tests.

If file corrections are required, the developer copies the files from
the QA environment to the Development environment and makes the changes.
After the changes are made, the developer prepares another MOVELIST file
containing a list of the changed files and delivers the list to the
Software Control Librarian. The list is appended to the original
Software Change Request Form.

The Software Control Librarian uses the MOVELIST file to replace the
files in the QA environment with the corrected files from the
Development environment. The Formal Testing group then resubmits the
batch jobs for the tests that required correction. This process is
repeated until no errors are present in any of the test cases.

# Recording the Program Corrections

The test reviewer records all of the corrections made to the programs
and subroutines during formal testing. Recording the changes to command
procedures or logical names is not necessary.

Beta Testing Environment

The Beta environment contains software that requires Beta testing. The
Beta directories are protected by Access Control Lists (ACL), which
prevent developers from writing to or deleting files in the Beta
directories. Software remains in the Beta directories until Beta testing
is complete.

# Logical Names for the Beta Environment

The Beta environment is defined by using a set of logical name labels
that define the directories, procedures, and programs currently in Beta.
Using logical names avoids hard coding directory and file names in
command procedures and in programs.

Logical names also control compiling and linking processes. Search list
logicals define a list of directories in which the compiler searches for
copy code files. The linker searches for unresolved object modules to
include in the executable image.

Defining the Beta environment using logical name tables ensures that
procedures and programs from the Development and QA environments are not
executed during Beta testing. The following chart lists the logical name
tables in the Beta environment and the purpose of each table:

  ------------------- ----------------------------------------------------
  **Table**           **Description**

  BetaDirectories     Defines all directories.

  BetaFiles           Defines all miscellaneous file names.

  BetaProcedures      Defines all procedures.

  BetaPrograms        Defines all programs.

  BetaQueues_System   Defines all batch and print queues.

  BetaSearchlists     Defines Searchlists used for compiling and linking
                      code and modules.
  ------------------- ----------------------------------------------------

## The Beta Directories

The Beta environment contains a number of directories. Files are stored
in these directories according to their type and function. Refer to
*Appendix A* for a list of the Beta directories.

# Moving Files from QA to Beta

When preliminary testing in the Development environment is complete, the
developer prepares a MOVELIST file. (*Appendix B* contains the
procedures for creating a MOVELIST file.) The group leader gives the
MOVELIST, along with the Software Change Request Form, to the Software
Control Librarian. The Software Control Librarian uses the MOVELIST to
move the appropriate files from the Development environment to the Beta
environment. *Appendix C* contains procedures for moving software from
the Development environment to the Beta environment.

During the move, each file in the MOVELIST is copied to the Beta
environment and subsequently deleted from Development. Deleting files
from the Development environment minimizes disk-space usage and prevents
file duplication.

The Software Control Librarian\'s signature is required on the Software
Change Request Form to indicate that all of the files were moved.

# Correcting Errors during Beta Testing

The developer copies the required files back to the Development
environment and makes the changes. Once the changes are made, the
developer prepares a MOVELIST file containing a list of the changed
files.

The Software Control Librarian uses the MOVELIST file to replace the
files in the Beta environment with the corrected files from the
Development environment. The Beta Specialists reruns all tests that
failed during Beta testing.

The Software Control Librarian delivers the resulting logs to the
developer. The developer reviews the new test results and adds the
results to the test plan.

# Preparing to Move Software to the Production Environment

Once no errors occur during Beta testing, the QA Group Manager approves
the Software Change Request Form and delivers the form to the User
Support Manager.

The User Support Manager delivers the Software Change Request Form to
the Software Control Librarian, who begins the process to move software
to the Production environment.

Production Environment

The Production environment contains all software required to operate the
TDMS production system.

The Production directories are protected by Access Control Lists (ACLs).
ACLs prevent developers from writing or deleting files in the Production
directories. ACLs ensure that software cannot be changed unless software
control procedures are followed.

# Logical Names for the Production Environment

The Production environment is defined by using a set of logical name
tables that define the directories, procedures, and programs currently
in production. Using logical names avoids hard coding directory and file
names in command procedures and in source code programs. Logical names
are also used to control compiling and linking processes.

Defining the Production environment using logical name tables ensures
all procedures and programs are executed from the Production environment
when production batch jobs are executed..

The following chart lists the logical name tables in the Production
environment and the purpose of each table:

  ------------------------- ---------------------------------------------
  **Table**                 **Description**

  StarDirectories_System    Defines all directories.

  StarPrograms_System       Defines all programs.

  StarProcedures_System     Defines all procedures.

  StarSearchlists_System    Defines searchlists used for compiling and
                            linking code and modules.

  StarFiles_System          Defines all files.
  ------------------------- ---------------------------------------------

# The Production Directories

The TDMS production system consists of a large number of command
procedures, software source programs, executable images, system data,
and control files. Refer to *Appendix A* for a list of Production
directories.

# Moving Files from Beta to Production

When Beta testing is complete, the Software Control Librarian receives
the Software Change Request form with the appropriate signatures.

The Software Control Librarian prepares a MOVELIST file based on the
original MOVELIST used during Beta. The MOVELIST file lists the files
required by the Test Plan and excludes test case files. *Appendix B*
contains procedures for creating a MOVELIST.

The Software Control Librarian uses the MOVELIST file to move the
appropriate files from the Beta environment to the Production
environment. *Appendix F* contains procedures for moving software from
the Beta environment to the Production environment.

During the move, each file in the MOVELIST is copied from the Beta
environment to the Production environment and subsequently deleted from
Beta. Deleting the files from the Beta environment minimizes disk-space
usage and prevents file duplication.

For more information on moving software to the Production environment,
refer to the *Configuration Management Procedures* manual.

The Software Control Librarian archives the MOVELIST and the test files
from the Beta environment. After all files have been moved into
Production, the Software Control Librarian notifies all involved parties
via e-mail.

TDMS Directories

# Development Environment Directories

The Development environment contains a number of code and data
directories. Files are stored in these directories according to their
type and function. The two top-level directories in the Development
environment are

STAR_DEVL_CODE

STAR_DEVL_DATA

These directories are divided into controlled subdirectories. The
following table lists the logical names of the Development
subdirectories and provides a brief description of each:

  ------------------------ ----------------------------------------------
  **Logical Name**         **Description of Contents**

  CAPPLICCOM               Command procedures

  CCOPYLIB                 Copy codes - shared modules

  CDOWNLOAD                PAS download source code files

  CECS                     Error Correction System source code

  CEPREPORTS               EIS/PEIS reports source code files

  CMAINTCOM                Maintenance procedures

  CMENU                    Main menu source code files

  CPASVAL                  PAS validation reports source code

  CPCT                     PCT source code files

  CPEX                     PEX source code files

  CRECEIVE                 RECEIVE source code files

  CRETURN                  Project files returned to Development
  ------------------------ ----------------------------------------------

  ----------------------- -----------------------------------------------
  CSETUPCOM               Setup procedures for Development environment

  CUPDATE                 UPDATE source code files

  CVAXUTILITY             ALPHA utilities source code files

  DPRISAS                 ASI development

  DPARMS                  Parameter data files

  SYS\$NATPARM            Natural 1 parameter modules

  NATURAL\$PARAMETER      Natural 2 parameter modules
  ----------------------- -----------------------------------------------

# QA Environment Directories

The QA environment contains numerous directories. These directories
store code and related data files that have been moved out of
development and into formal testing. Some of the directories store test
plans and output pertaining to their execution. The two top-level
directories in the QA environment are STAR_QA_CODE and STAR_QA_DATA.

These directories are divided into controlled subdirectories. The
following table lists the logical names of the QA subdirectories and
provides a brief description of each:

  ------------------------- ---------------------------------------------
  **Logical Name**          **Description of Contents**

  NATURAL\$PARAMETER        Natural 2 parameter modules

  QAAPPLICCOM               Application specific command procedures

  QACODEARCHIVES            Code files to be archived

  QACOPYLIB                 Copy code members in compiled languages

  QADATAARCHIVES            Data files to be archived

  QADBBUILD                 Data files for building ADABAS files

  QAEXE                     Executable images for all modules

  QALOGS                    Logs for reports (STARLOGS)

  QAMAINTCOM                Maintenance and software control Procedures

  QAPARMS                   Parameter files

  QAPRINT                   Holding areas for report print files

  QASASSOURCE               Source code written in SAS

  QASETUPCOM                DCL which defines the QA environment

  QASOURCE                  All non-SAS source code

  QATESTPLANS               Formal test plans

  QARECEIVEERROR            Receive error files

  QARECEIVE LOGS            Receive log files

  QARECEIVE PRI             Receive transaction files

  SYS\$NATPARM              Natural 1 parameter modules
  ------------------------- ---------------------------------------------

# Beta Environment Directories

The Beta environment contains numerous directories. Files are stored in
these directories according to their type and function. The two
top-level directories in the Beta environment are

STAR_BETA_CODE

STAR_BETA_DATA

These directories are divided into controllable subdirectories. The
following table lists the logical names of the Beta subdirectories and
provides a brief description of each:

  ------------------------- ---------------------------------------------
  Logical Name              Description of Contents

  BETAAPPLICOM              Application specific command procedures

  BETACOPYLIB               Copy code members in compiled languages

  BETADBBUILD               Copy code members in compiled languages

  BETAEXE                   Executable images for all modules

  BETASASSOURCE             Source code written in SAS

  BETASETUPCOM              Defines batch and print queues

  BETASOURCE                Files for COBOL, PL/1, C, NATURAL JSP
                            operation list, and JSP structured text files

  BETATESTPLANS             Data files need to execute formal tests

  BETALOGS                  Logs for reports (STARLOGS)

  BETAPARMS                 Parameter files

  BETAPRINT                 Holding areas for print files and reports

  NATREPORTS                Holding area for NATURAL reports

  NATURAL\$PARAMETER        Natural 2 parameter modules

  STARCODEARCHIVES          Code files to be archived

  STARDATAARCHIVES          Data files to be archived

  STARDBBUILD               Data files used for building ADABAS files

  STARESS                   ESS reports

  STARESSLAB                ESS reports for laboratories

  STARFWC                   Transaction files created by Food and Water
                            System

  STARRECEIVEERROR          RECEIVE error files

  STARRECEIVELOGS           RECEIVE log files

  STARRPTPARMS              Parameters to execute the Sacrifice and
                            Treatment group reports

  STARSTATTRAN              STATTRAN reports

  SYS\$NATPARM              Natural 1 parameter modules
  ------------------------- ---------------------------------------------

# Production Environment Directories

The TDMS production system consists of a large number of command
procedures, software source programs, executable images, system data,
and control files. This information is grouped into the following
top-level directories:

PRJ_NTPDISK:\[STAR_PROD_CODE\]

PRJ_NTPDISK:\[STAR_PROD_DATA\]

  --------------------------- -------------------------------------------
  **Logical Name**            **Description of Contents**

  NATURAL\$PARAMETER          Natural 2 parameter modules

  STARESS                     Files containing information that controls
                              access to TDMS

  STARAPPLICCOM               Command procedures used for application
                              specific subsystems

  STARBACKUPLOGS              Logs from backup procedures

  STARBACKUPPROCS             Procedures to execute backups

  STARCODEARCHIVES            Source code files to be archived

  STARDATAARCHIVES            Data files to be archived

  STARCOPYLIB                 Copy code files in compiled languages

  STARBBUILD                  Database build files

  STARDOWNLOAD                Download files

  STARESSLAB                  ESS reports for laboratories

  STAREXE                     Executable images for all modules

  STARFWC                     Transaction file created by the Food and
                              Water System

  STARLOGS                    Log files (all but RECEIVE)

  STARMAINTCOM                Command procedures used for administrative
                              and software control maintenance

  STARPARMS                   Static but essential data such as the
                              destination table and sort parameters

  STARPRINT                   Report files

  STARPRODARCHIVES            Logs of tape archives

  STARRECEIVEERROR            RECEIVE error files

  STARRECEIVELOGS             RECEIVE log files

  STARRECEIVEPRI              RECEIVE data

  STARRECEIVESEC              RECEIVE data backup

  STARRPTPARMS                Parameters to execute the Sacrifice and
                              Treatment reports

  STARSASSOURCE               Source code written in SAS

  STARSCRATCH                 Temporary files, deleted daily

  STARSETUPCOM                Command procedures used for initializing
                              and setting up a user\'s process

  STARSOURCE                  Source code written in compiled languages

  STARSTATTRAN                STATTRAN reports

  SYS\$NATPARM                Natural 1 parameter modules
  --------------------------- -------------------------------------------

Creating a Movelist File

# Purpose of a Movelist File

The MOVELIST file is an itemized list of files required for formal
testing. It defines all of the files that must be moved from the
Development environment to the testing environments to build an
executable image, including the test case files.

A command procedure in each testing environment reads the MOVELIST and
copies each file to the proper target directory, compiles the programs,
and then deletes each file from the original directory. The developer
originally creates the MOVELIST, using QA directories as target
directories. The Software Control Librarian makes required changes in
the MOVELIST as software is moved beyond the QA environment, using the
directories described in *Appendix A*.

# Files in the Movelist File

The MOVELIST includes all files specified in the Test Plans. The
MOVELIST can include any of the following:

-   COBOL, PL/1, C, FORTRAN, and MACRO modules

-   Copy-code files used by the modules

-   NATURAL programs

-   Link options files (filetype .OPT) used for building the executable
    images

-   Operations lists (filetype .OPS) and structured text (filetype .STX)
    for redesigning modules

-   NATURAL command files (filetype .CMD) for cataloging or executing
    NATURAL programs

-   Command procedures

-   Data files

-   Reports created in development to be compared to reports created in
    Beta using Differences

Target directories for each file type should be specified as follows:

  ---------------------------------------- ------------------------------
  **File Type**                            **Target Directory**

  .SAS                                     QASASSOURCE

  .COB, .PLI, .C                           QASOURCE

  .FOR, .NAT, .MAR                         QASOURCE

  .OPT                                     QAEXE

  .COM (testing)                           QATESTPLANS

  .COM                                     QAAPPLICCOM

  .DAT, .SRT, .CMD                         QAPARMS

  SUTMAINMENU_xx.COM                       QAPARMS

  .CMD (for cataloging)                    QAMAINTCOM

  .CRY, .PRY, .H                           QACOPYLIB
  ---------------------------------------- ------------------------------

# Organizing the Movelist

Organize the MOVELIST so that the necessary copy code files can be
located by the system before the COBOL, PL/1, C, FORTRAN, and MACRO
source code files are recompiled in the testing environment.

When the Software Control Librarian issues the SSCBETAMOVEADD command,
the COBOL, PL/1, C, FORTRAN, and MACRO files are moved to the testing
environment and recompiled. When the source code files are being
recompiled, the system searches the testing directory for the copy code
files. The Development directory is not searched. Therefore, if the
required copy code files have not been moved before the source code
files are recompiled, a compile error occurs.

# Procedures for Creating Movelist Files

Follow the following steps to create a MOVELIST file:

1.  Create a MOVELIST file by entering the following command string:

\$ EDIT aaaaaaaa MOVE.DAT

where aaaaaaaa is the project name, such as PEIRPT04.

2.  The MOVELIST file contains one record for each file to be moved.
    Enter the first file name using the following format:

dev_dir_name:file_name, QA_dir_name

where, dev_dir_name is the logical name of the Development directory
where the file currently resides (source directory).

file_name is the name of the file.

QA_dir_name is the logical name of the QA directory in which the file
resides (target directory).

Following is an example of a record in a MOVELIST file:

CRECEIVE:REFORMA_1A.COB, QASOURCE

NOTE

> The comma in the preceding command is required.

3.  Continue entering records into the MOVELIST, one record on each
    line, following the format in Step 2 until all files required for
    the Test Plan are entered.

4.  Add to the MOVELIST the modules that are required for building an
    executable image for the test plan and the modules that are
    referenced in the link options file.

5.  Determine the file type of the Third Generation Language (3GL)
    source and the current location of each file in the options file by
    entering the following command:

\$ DIRECTORY LINKSEARCH:filename

6.  Include the files located in Step 5 in the MOVELIST.

7.  Locate the copy code files. For COBOL files enter

\$ DIRECTORY COBCOPY:filename.CRY

For PL/1 files enter

\$ DIRECTORY PLICOPY:filename.PRY

For \"C\" files enter

\$ DIRECTORY VAX\$INCLUDE:filename.H

8.  Include the files located in Step 7 in the MOVELIST.

9.  Do not include any of the following files in your MOVELIST:

-   object files (filetype .OBJ)

-   executable images (filetype .EXE)

-   map files (filetype .MAP)

-   log files (filetype .LOG)

-   listing files (filetype .LIS)

-   scratch or temporary files

-   files already in Production.

10. If there are any NATURAL files in the MOVELIST, attach a printout of
    the catalog procedure to the MOVELIST. See *Appendix H* for an
    example of a catalog procedure. Deliver the MOVELIST to the Software
    Control Librarian.

You have completed the steps required to create a MOVELIST.

Moving Software from Development to QA

# Moving from the Development to the QA Environment

## Tasks to Perform Prior to Moving Software

Before moving software from the Development environment to the QA
environment, be sure that the following tasks have been performed:

1.  The Software Change Request form has been approved by the
    appropriate people.

2.  The following command string is in your LOGIN.COM file:

\$ \@SETUP_STAR QA

## Procedure to Move Software from Development to QA

Follow these steps to move files from the Development environment to the
QA environment.

1.  Log on to HAZEL.

2.  Set the development logicals with the following command:

\$ SETUP_STAR DEVELOPMENT

3.  Set the default with the following command:

\$ SET DEFAULT QAMAINTCOM

4.  A MOVELIST is attached to the Software Change Request Form,
    indicating a move request. The name of the directory and the
    MOVELIST\'s filename are found at the top of the printed MOVELIST.

5.  Edit the MOVELIST in the Development directory.

```{=html}
<!-- -->
```
a)  Verify that the copy of the MOVELIST in the Development directory is
    the same as the printed copy you have.

b)  Check the MOVELIST file for missing commas, incorrect directories,
    misspelled entries, and other errors.

c)  Exit the MOVELIST.

```{=html}
<!-- -->
```
6.  Move the MOVELIST file to the QA environment with the following
    command:

\$ \@SSCCOPYDELETE *dir:MOVELIST* QAMAINTCOM:

7.  Move the files listed in the MOVELIST to the QA environment and
    automatically compile the programs by entering the following
    command:

\$ \@SUBMIT_SSCQAMOVEADD *MOVELIST*

In this command, *movelist* is the shortened version of the movelist
filename. As an example, TRG08_MOVE.DAT is shortened to TRG08.

8.  When an error is found during testing, the developer corrects the
    erroneous file. The Software Control Librarian replaces the files in
    the QA environment with the corrected files from the Development
    environment.

To replace files that currently exist in QA with corrected files from
the Development environment, enter the following command string:

\$ \@SUBMIT_SSCQAMOVEREPLACE *MOVELIST*

Movelist is the shortened version of the MOVELIST filename. Refer to the
example given in step 7.

9.  When the move is complete, review the log generated during the move
    by entering the following command string:

\$ EDIT/READ *MOVELIST*\_MOVE.LOG

Movelist is the shortened version of the MOVELIST filename. Refer to the
example given in step 7.

10. Resolve any errors found in the log.

If a compile error occurs, resolve the source of the problem and
manually compile that program. Appendix E contains a description of the
commands for compiling programs.

If you cannot resolve all of the errors, see the developer. If
necessary, rerun the move.

11. Set up your working environment by entering the following command:

\$ \@SETUP_STAR QA

12. Confirm that you are in the QA environment by entering the following
    command:

\$ SH0W SYMBOL STARUSER

13. Identify the files that require attention by entering the following
    commands:

\$ SEARCH MOVELIST MOVE.DAT .OPT

\$ SEARCH MOVELIST MOVE.DAT .SAS

\$ SEARCH MOVELIST MOVE.DAT .CMD

\$ SEARCH MOVELIST MOVE.DAT .COM

14. Record the filenames displayed in Step 3. If the list is short, note
    the filenames on your copy of the MOVELIST.

15. Link all main programs using .OPT files as follows. Subroutines or
    \"INCLUDE\" files may be missing.

```{=html}
<!-- -->
```
a)  Enter the following commands to link the programs:

\$ SET DEFAULT QAEXE

\$ \@LINKSTD filename

where filename has the format aaaa_aa.OPT

b)  For NATURAL macros, use the following command:

\$ \@LINKSHARE filename

where filename has the format aaaa_NAT_aa.OPT.

NOTE

> Appendix E contains more information about linking programs.

16. Check .COM files in the QATESTPLANS directory for errors. Ensure
    that the developer has followed the following conventions:

```{=html}
<!-- -->
```
a)  All RUN statements are coded as RUN/ NODEBUG.

b)  All references to Development directories are changed to QA
    directories.

If these conventions have not been followed, refer the problems to the
developer.

17. Add the program and procedure logicals to the QA logical name
    tables.

```{=html}
<!-- -->
```
a)  To add logical definitions for .OPT files (programs) that were moved
    to QAEXE, SAS programs that were moved to QASASSOURCE, and changes
    noted below, enter the following command:

\$ EDIT QASETUPCOM:QAPROGAMES.COM

b)  To add the logical definitions to .COM files (procedures) that were
    moved to QAAPPLICCOM or QAPARMS (STARPARMS) and changes noted below,
    enter the following command:

\$ EDIT QASETUPCOM:QAPROCNAMES.COM

NOTE

> SUTMAINMENU in STARPARMS must have a logical name.

c)  SRPRPTGL_xx.NAT must be defined in QAPROGNAMES as follows:

\$ DEFINE SRPRPTGL RPTGLxx

where xx is the release and revision.

18. Delete program and procedure logicals from Development tables that
    were added or changed in QA logical name tables as follows:

```{=html}
<!-- -->
```
a)  Edit the logical definitions for .OPT files (programs) by entering
    the following command:

\$ EDIT CSETUPCOM:PROGNAMES.COM

b)  Edit logical definitions for .COM files (procedures) by entering the
    following command:

\$ EDIT CSETUPCOM:PROCNAMES.COM

19. Verify that the correct logicals were deleted from the Development
    environment and properly created in the QA environment by entering
    the following commands:

\$@SETUP_STAR DEVELOPMENT

\$ DIRECTORY/DATE/SIZE logical_name

20. Verify all logical names in QA by entering the following commands:

\$ SET DEF QAMAINTCOM

\$ \@SUBMIT_SSCCHECKLOGICAL

21. Examine the log file for error messages indicating that logicals are
    missing. Resolve any errors.

22. The developer provides .CMD files that are used to catalog NATURAL
    programs. These files are stored in QAMAINTCOM. Edit
    CAT_NATURAL.COM, substituting the name of the .CMD file in the
    MOVELIST for the existing filename.

23. Update and execute the cataloging procedure in batch mode:

\$SUBMIT/KEEP/NOTIFY/NOPRINT/QUE=STARSHORTBQ/LOG=QAMAINTCOM CAT_NAT2

24. Check the batch log for errors. For more information.*.*

25. Approve the Movelist form to indicate the move is complete.

26. Update the SCR status via PVCS Tracker to QA.

27. Submit the batch jobs for formal testing, following the instructions
    in the test plan. The procedures for submitting batch jobs are in
    *Appendix D*.

28. To add files to the MOVELIST, the developer will fill out a new
    Software Change Request form and provide a new MOVELIST. This new
    MOVELIST is attached to the back of the original software change
    form. Add the new filenames to the original MOVELIST.

Begin at Step 1, treating the addition of files as a new move. Once the
move is complete, archive the file of additions. The additions are now
part of the original list.

You have completed the steps required to move files from the Development
environment to the QA environment.

Moving Software from QA to Beta

# Tasks to Perform Prior to Moving Software

Before moving software from the QA environment to the Beta environment,
be sure that the following tasks have been performed:

1.  The Software Change Request form has been approved by the
    appropriate people.

2.  The following command string is in your LOGIN.COM file:

\$ \@SETUP_STAR BETA

# Procedure to Move Software from QA to Beta

Follow these steps to move files from the QA environment to the Beta
environment.

1.  Log on to HAZEL.

2.  Set the Beta logicals with the following command:

\$ SETUP_STAR BETA

3.  Set the default with the following command:

\$ SET DEFAULT BETAMAINTCOM

4.  A printed MOVELIST is attached to the Software Change Request Form,
    indicating a move request. The name of the directory and the
    MOVELIST\'s filename are found at the top of the printed MOVELIST.

5.  Edit the MOVELIST in the QA directory.

```{=html}
<!-- -->
```
a)  Verify that the copy of the MOVELIST in the Development directory is
    the same as the printed copy you have.

b)  Check the MOVELIST file for missing commas, incorrect directories,
    misspelled entries, and other errors.

c)  Exit the MOVELIST.

```{=html}
<!-- -->
```
6.  Move the MOVELIST file to the Beta environment with the following
    command:

\$ \@SSCCOPYDELETE dir:MOVELIST BETAMAINTCOM:

where, dir is the directory name.

MOVELIST is the complete name of the MOVELIST file.

7.  Move the files listed in the MOVELIST to the Beta environment and
    automatically compile the programs by entering the following
    command:

\$ \@SUBMIT_SSCBETAMOVEADD MOVELIST

where, MOVELIST is the shortened version of the MOVELIST filename.

For example, TRG08_MOVE.DAT would be shortened to TRG08.

8.  When an error is found during testing, the developer corrects the
    erroneous file. The Software Control Librarian replaces the files in
    the QA environment with the corrected files from the Development
    environment.

To replace files that currently exist in QA with corrected files from
the Development environment, enter the following command string:

\$ \@SUBMIT_CBETAMOVEREPLACE MOVELIST

where, MOVELIST is the shortened version of the MOVELIST filename.

For example, TRG08_MOVE.DAT would be shortened to TRG08.

9.  When the move is complete, review the log generated during the move
    by entering the following command string:

\$ EDIT/READ MOVELIST_MOVE.LOG

where, MOVELIST is the shortened version of the MOVELIST filename.

For example, TRG08_MOVE.DAT would be shortened to TRG08.

10. Resolve any errors found in the log.

If a compile error occurs, resolve the source of the problem and
manually compile that program. *Appendix E* contains a description of
the commands for compiling programs.

If you cannot resolve all of the errors, see the developer. If
necessary, rerun the move.

11. Set up your working environment by entering the following command:

\$ \@SETUP_STAR BETA

12. Confirm that you are in the Beta environment by entering the
    following command:

\$ SH0W SYMBOL STARUSER

13. Identify the files that require attention by entering the following
    commands:

\$ SEARCH MOVELIST MOVE.DAT .OPT

\$ SEARCH MOVELIST MOVE.DAT .SAS

\$ SEARCH MOVELIST MOVE.DAT .CMD

\$ SEARCH MOVELIST MOVE.DAT .COM

14. Record the filenames displayed in Step 3. If the list is short, note
    the filenames on your copy of the MOVELIST.

NOTE

> Appendix E contains more information about linking programs

15. Link all main programs using .OPT files as follows. Subroutines or
    \"INCLUDE\" files may be missing.

```{=html}
<!-- -->
```
a)  Enter the following commands to link the programs:

\$ SET DEFAULT BETAEXE

\$ \@LINKSTD filename

where filename has the format aaaa_aa.OPT

b)  For NATURAL macros, use the following command:

\$ \@LINKSHARE filename

where filename has the format aaaa_NAT_aa.OPT.

If these conventions have not been followed, refer the problems to the
developer.

NOTE

> SUTMAINMENU in STARPARMS must have a logical name.

16. Check .COM files in the BETATESTPLANS directory for errors. Ensure
    that the developer has followed the following conventions:

```{=html}
<!-- -->
```
a)  All RUN statements are coded as RUN/NODEBUG.

b)  All references to QA directories are changed to Beta directories.

If these conventions have not been followed, refer the problems to the
developer.

17. Add the program and procedure logicals to the Beta logical name
    tables.

```{=html}
<!-- -->
```
a)  To add logical definitions for .OPT files (programs) that were moved
    to BETAEXE, SAS programs that were moved to BETASSOURCE, and changes
    noted below, enter the following command:

\$ EDIT BETASETUPCOM:BETAPROGNAMES.COM

b)  To add the logical definitions to .COM files (procedures) that were
    moved to BETARAPPLICCOM or BETAPARMS (STARPARMS) and changes noted
    below, enter the following command:

\$ EDIT BETASETUPCOM:BETAPROCNAMES.COM

c)  SRPRPTGL_xx.NAT must be defined in BETAPROGNAMES as follows:

\$ DEFINE SRPRPTGL RPTGLxx

where xx is the release and revision.

18. Delete program and procedure logicals from QA tables that were added
    or changed in QA logical name tables as follows:

```{=html}
<!-- -->
```
a)  Edit the logical definitions for .OPT files (programs) by entering
    the following command

\$ EDIT QASETUPCOM:PROGNAMES.COM

b)  Edit logical definitions for .COM files (procedures) by entering the
    following command:

\$ EDIT QASETUPCOM:PROCNAMES.COM

c)  Delete the existing QA logical from the current QA system table by
    entering the following commands:

\$ \@SETUP_STAR QA

\$ DEASSIGN/SYSTEM/TABLE=qa_table_nameqa_logical_name

19. Verify that the correct logicals were deleted from the QA
    environment and properly created in the QA environment by entering
    the following commands:

\$ DIRECTORY/DATE/SIZE logical_name

20. Verify all logical names in Beta by entering the following commands:

\$ SET DEF CBETAMAINTCOM

\$ \@SUBMIT_SSCCHECKLOGICAL

21. Examine the log file for error messages indicating that logicals are
    missing. Resolve any errors.

22. The developer provides .CMD files that are used to catalog NATURAL
    programs. These files are stored in BETAMAINTCOM. Edit CAT_NATZ.COM,
    substituting the name of the .CMD file in the MOVELIST for the
    existing filename.

23. Execute the cataloging procedure in batch mode:

SUBMIT/KEEP/NOTIFY/NOPRINT/QUE=STARSHORTBQ/

LOG=BETAMAINTCOM CAT_NAT2

24. Check the batch log for errors. For more information.

25. Update the Software Change Request form's status via PVCS Tracker to
    indicate the move is complete.

26. Submit the batch jobs for formal testing, following the instructions
    in the test plan. The procedures for submitting batch jobs are in
    *Appendix D*.

27. To add files to the MOVELIST, the developer will fill out a new
    Software Change Request form and provide a new MOVELIST. This new
    MOVELIST is attached to the back of the original software change
    form. Add the new filenames to the original MOVELIST.

Begin at Step 1, treating the addition of files as a new move. Once the
move is complete, archive the file of additions. The additions are now
part of the original list.

You have completed the steps required to move files from the QA
environment to the Beta environment

Compiling and Linking Programs and Modules

# Compiling Programs and Modules

To compile a program or module, use one of the commands in the following
chart.

In the following chart, file_spec is the source file to be compiled. The
file type should NOT be included.

  ------------------------------- ---------------------------------------
  **Program Language**            **Command**

  C                               \@CCSTD file_spec

  COBOL                           \@COBSTD file_spec

  FORTRAN                         \@FORSTD file_spec

  MACRO                           \@MACSTD file_spec

  PL/1                            \@PLISTD file-spec
  ------------------------------- ---------------------------------------

# Linking Programs and Modules

Use the following procedures to link programs and modules.

These procedures require a link options file with a file name equal to
file_spec and a file type of .OPT. The options file provides an exact
list of all software used in the program. An options file is required
for each release revision of an executable program. The options file
includes the specific release revision of each subroutine to be included
in the image for the program. Object libraries containing modules are
not used.

  ----------------------------------------------- -----------------------
  **Use**                                         **Command**

  Create executable images that are NOT shareable \@LINKSTD file_spec
  and are NOT called from NATURAL programs.       

  Create executable images that are shareable and \@LINKSHARE file_spec
  are called from NATURAL programs.               
  ----------------------------------------------- -----------------------

# Compile and Link Errors

Missing programs are the most common cause of compile and link errors.
If a compile error occurs, refer the problem to the developer.

If a link error occurs, verify that an object file exists for the
program referred to in the error message. If you cannot resolve an
error, refer the problem to the developer.

Moving from Beta to Production

# Tasks to Perform Prior to Moving Software

Before moving software from the Beta environment to the Production
environment, be sure that the following tasks have been performed:

1.  The Software Change Request form has been approved.

2.  A mail message has been sent announcing when the software will be
    moved from the Beta environment to the Production environment. This
    task ensures that moving software from the Beta environment to the
    Production environment will not disrupt service.

# Procedure to Move Software from Beta to Production

Complete the following steps to move files from the Beta environment to
the Production environment:

(If you have any questions during this procedure, see the project
leader.)

1.  Log on to HAZEL

2.  Access the Production system by executing the following command:

\$ \@SETUP_STAR PRODUCTION

3.  Set the default with the following commands:

\$ SET DEFAULT STARMAINTCOM

4.  Prepare the Production MOVELIST from the Beta MOVELIST as follows:

```{=html}
<!-- -->
```
a)  In STARMAINTCOM, create a file named

MOVELIST_MOVE_PROD.DAT

where MOVELIST is any name you wish to call the MOVELIST file.

b)  Include the appropriate MOVELIST from BETAMAINTCOM into:

MOVELIST_MOVE_PROD.DAT

c)  Change all target directories to Production directories.

d)  Change all Development directories to Beta directories.

e)  Exit the file.

```{=html}
<!-- -->
```
5.  When the MOVELIST file is complete in STARMAINTCOM, issue the
    following command to move the software from the Beta environment to
    the Production environment:

\$ \@SUBMIT_SSCPRODMOVEADD MOVELIST

where, MOVELIST is the shortened version of the MOVELIST file name. For
example, TRG08_MOVE_PROD.DAT would be shortened to TRG08.

The command procedure automatically appends the \"\_MOVE_PROD.DAT\"
suffix to the MOVELIST file name.

6.  If necessary, coordinate with the Production Support Specialist to
    get an execution slot for your job.

7.  To check for your job in the queue, submit the following command:

\$ SHOW QUE/ALL HAZEL_SHORT

8.  When the move is complete, search the log that was generated during
    the move with the following command:

\$ EDIT/READ MOVELIST_MOVE.LOG

9.  Resolve any errors. If necessary, rerun the move.

10. Issue the following command to set up your working environment:

\$ \@SETUP_STAR PRODUCTION

11. Issue the following command to confirm that you are in the
    Production environment:

\$ SHOW SYMBOL STARUSER

12. To identify all files that require attention, issue the following
    commands:

\$ SEARCH MOVELIST_MOVE_PROD.DAT .OPT

\$ SEARCH MOVELIST_MOVE_PROD.DAT .SAS

\$ SEARCH MOVELIST_MOVE_PROD.DAT .CMD

\$ SEARCH MOVELIST_MOVE_PROD.DAT .COM

13. Record all file names that are displayed in Step 12. If the list is
    short, note the files on your copy of the MOVELIST.

14. Link all main programs using .OPT files as follows:

```{=html}
<!-- -->
```
a)  Link programs using the following commands:

\$ SET DEF STAREXE

\$ \@LINKSTD filename

b)  For NATURAL macros, issue the following commands:

\$ SET DEF STAREXE

\$ \@LINKSHARE filename

where filename has the format aaaa_NAT_aa.OPT.

*Appendix E* for more information on linking programs and handling the
errors.

15. Catalog the NATURAL programs named in the .CMD files as follows:

```{=html}
<!-- -->
```
a)  Edit the catalog procedure provided by the developer.

b)  Change BETASOURCE to STARSOURCE. Use the following command:

SUBSTITUTE/BETASOURCE/STARSOURCE/WHOLE

c)  Exit the file.

d)  Edit CAT_NAT2.COM and change the name of the module

e)  Submit CAT_NAT2 using the following command:

\$SUBMIT/KEEP/NOTIFY/NOPRINT/QUE=HAZEL_SHORT/LOG=STARMAINTCOM CAT_NAT2

16. Add the program and procedure logicals to the production logical
    name tables as follows:

```{=html}
<!-- -->
```
a)  To add logical definitions for .OPT files and .SAS files (programs)
    that were moved as well as the change noted below, issue the
    following command:

\$ EDIT STARSETUPCOM:PROGNAMES.COM

NOTE

> SRPRPTGL xx.NAT must be defined as follows: \$ DEFINE SRPRPTGL
> RPTGLxx, where xx is release and revision.

b)  To add logical definitions for .COM files (procedures) that were
    moved and the change noted below, issue the following command:

\$ EDIT STARSETUPCOM:PROCNAMES.COM

NOTE

> SUTMAINMENU in STARPARMS must have a logical name.

17. To install production logicals into system tables, issue the
    following commands:

\$ \@SETUP_STAR PRODUCTION

\$ \@STARSETUPCOM:PROCNAMES SYSTEM or

\$ \@STARSETUPCOM:PROGNAMES SYSTEM

18. Delete the program and procedure logicals from the Beta logical name
    tables as follows:

```{=html}
<!-- -->
```
a)  Set up your working environment with the following command:

\$ \@SETUP_STAR BETA

b)  To delete logical definitions for .OPT files that were moved, issue
    the following command:

\$ EDIT BETASETUPCOM:BETAPROGNAMES.COM

c)  To delete logical definitions for .COM files that were moved, issue
    the following command:

\$ EDIT BETASETUPCOM:BETAPROCNAMES.C0M

19. To ensure all logicals in this move are deleted from the Development
    and Beta environments, issue the following commands:

\$ \@SETUP_STAR DEVELOPMENT

\$ DIRECTORY/DATE/SIZE logical_name

20. Delete any of the logical names for this move that still remain in
    the Development or Beta environments.

21. Verify that logical names are in place as follows:

```{=html}
<!-- -->
```
a)  Issue the following commands:

\$ SET DEF STARMAINTCOM

\$ \@SUBMIT_SSCCHECKLOGICAL

b)  Examine the resulting log file for error messages indicating that
    the logicals are out of place or files are misplaced.

c)  Resolve any errors.

```{=html}
<!-- -->
```
22. Send An e-mail message, announcing the move to production.

Update the Software Change Request form's status via PVCS Tracker to
indicate that the move is complete.

23. Archive the MOVELIST, NATURAL.CMD catalog files, and test files as
    follows.

-   MOVELIST is in BETAMAINTCOM.

-   NATURAL.CMD catalog files are in BETAMAINTCOM.

a)  Create a MOVELIST called TEMP_MOVE.DAT in BETAMAINTCOM by issuing
    the following command:

\$ EDIT TEMP_MOVE.DAT

b)  Insert into TEMP_MOVE.DAT the name of the original MOVELIST, the
    NATURAL.CMD files from BETAMAINTCOM, and all files used in testing.
    (Refer to *Appendix B* if you need additional information on
    MOVELISTS.)

Each record in the MOVELIST should have the following format:
source_dir_name:file_name, target_dir_name.

where, source_dir_name is the logical name of the directory where the
file currently resides (source directory). file_name is the name of the
file.

target dir_name is logical name of the directory in which the file will
reside ( target directory).

c)  Archive the files using the following command:

\$ \@SUBMIT_SSCBETAMOVEADD TEMP

You have completed the steps required to move software into Production.

Moving from QA to Production

# Tasks to Perform Prior to Moving Software

Before moving software from the QA environment to the Production
environment, be sure that the following tasks have been performed:

1.  The Software Change Request form has been approved.

2.  A mail message has been sent announcing when the software will be
    moved from the QA environment to the Production environment. This
    task ensures that moving software from the QA environment to the
    Production environment will not disrupt service.

# Procedure to Move Software from QA to Production

Complete the following steps to move files from the QA environment to
the Production environment:

(If you have any questions during this procedure, see the project
leader.)

1.  Log on to HAZEL

2.  Access the Production system by executing the following command:

\$ \@SETUP_STAR PRODUCTION

3.  Set the default with the following commands:

\$ SET DEFAULT STARMAINTCOM

4.  Prepare the Production MOVELIST from the QA MOVELIST as follows:

```{=html}
<!-- -->
```
a)  In STARMAINTCOM, create a file named

MOVELIST_MOVE_PROD.DAT

where MOVELIST is any name you wish to call the MOVELIST file.

b)  Include the appropriate MOVELIST from QAMAINTCOM into:

MOVELIST_MOVE_PROD.DAT

c)  Change all target directories to Production directories.

d)  Change all Development directories to QA directories.

e)  Exit the file.

```{=html}
<!-- -->
```
5.  When the MOVELIST file is complete in STARMAINTCOM, issue the
    following command to move the software from the QA environment to
    the Production environment:

\$ \@SUBMIT_SSCPRODMOVEADD MOVELIST

where, MOVELIST is the shortened version of the MOVELIST file name. For
example, TRG08_MOVE_PROD.DAT would be shortened to TRG08.

The command procedure automatically appends the \"\_MOVE_PROD.DAT\"
suffix to the MOVELIST file name.

6.  If necessary, coordinate with the Production Support Specialist to
    get an execution slot for your job.

7.  To check for your job in the queue, submit the following command:

\$ SHOW QUE/ALL HAZEL_SHORT

8.  When the move is complete, search the log that was generated during
    the move with the following command:

\$ EDIT/READ MOVELIST_MOVE.LOG

9.  Resolve any errors. If necessary, rerun the move.

10. Issue the following command to set up your working environment:

\$ \@SETUP_STAR PRODUCTION

11. Issue the following command to confirm that you are in the
    Production environment:

\$ SHOW SYMBOL STARUSER

12. To identify all files that require attention, issue the following
    commands:

\$ SEARCH MOVELIST_MOVE_PROD.DAT .OPT

\$ SEARCH MOVELIST_MOVE_PROD.DAT .SAS

\$ SEARCH MOVELIST_MOVE_PROD.DAT .CMD

\$ SEARCH MOVELIST_MOVE_PROD.DAT .COM

13. Record all file names that are displayed in Step 12. If the list is
    short, note the files on your copy of the MOVELIST.

14. Link all main programs using .OPT files as follows:

```{=html}
<!-- -->
```
a)  Link programs using the following commands:

\$ SET DEF STAREXE

\$ \@LINKSTD filename

b)  For NATURAL macros, issue the following commands:

\$ SET DEF STAREXE

\$ \@LINKSHARE filename

where filename has the format aaaa_NAT_aa.OPT.

*Appendix E* for more information on linking programs and handling the
errors.

15. Catalog the NATURAL programs named in the .CMD files as follows:

```{=html}
<!-- -->
```
a)  Edit the catalog procedure provided by the developer.

b)  Change QASOURCE to STARSOURCE. Use the following command:

SUBSTITUTE/QASOURCE/STARSOURCE/WHOLE

c)  Exit the file.

d)  Edit CAT_NAT2.COM and change the name of the module

e)  Submit CAT_NAT2 using the following command:

\$SUBMIT/KEEP/NOTIFY/NOPRINT/QUE=HAZEL_SHORT/LOG=STARMAINTCOM CAT_NAT2

16. Add the program and procedure logicals to the production logical
    name tables as follows:

```{=html}
<!-- -->
```
a)  To add logical definitions for .OPT files and .SAS files (programs)
    that were moved as well as the change noted below, issue the
    following command:

\$ EDIT STARSETUPCOM:PROGNAMES.COM

NOTE

> SRPRPTGL xx.NAT must be defined as follows: \$ DEFINE SRPRPTGL
> RPTGLxx, where xx is release and revision.

b)  To add logical definitions for .COM files (procedures) that were
    moved and the change noted below, issue the following command:

\$ EDIT STARSETUPCOM:PROCNAMES.COM

NOTE

> SUTMAINMENU in STARPARMS must have a logical name.

17. To install production logicals into system tables, issue the
    following commands:

\$ \@SETUP_STAR PRODUCTION

\$ \@STARSETUPCOM:PROCNAMES SYSTEM or

\$ \@STARSETUPCOM:PROGNAMES SYSTEM

18. Delete the program and procedure logicals from the QA logical name
    tables as follows:

```{=html}
<!-- -->
```
a)  Set up your working environment with the following command:

\$ \@SETUP_STAR QA

b)  To delete logical definitions for .OPT files that were moved, issue
    the following command:

\$ EDIT CBETASETUPCOM:QAPROGNAMES.COM

c)  To delete logical definitions for .COM files that were moved, issue
    the following command:

\$ EDIT QASETUPCOM:QAPROCNAMES.C0M

19. To ensure all logicals in this move are deleted from the Development
    and QA environments, issue the following commands:

\$ \@SETUP_STAR DEVELOPMENT

\$ DIRECTORY/DATE/SIZE logical_name

20. Delete any of the logical names for this move that still remain in
    the Development or QA environments.

21. Verify that logical names are in place as follows:

```{=html}
<!-- -->
```
a)  Issue the following commands:

\$ SET DEF STARMAINTCOM

\$ \@SUBMIT_SSCCHECKLOGICAL

b)  Examine the resulting log file for error messages indicating that
    the logicals are out of place or files are misplaced.

c)  Resolve any errors.

```{=html}
<!-- -->
```
22. Send An e-mail message, announcing the move to production.

Update the Software Change Request form's status via PVCS Tracker to
indicate that the move is complete.

23. Archive the MOVELIST, NATURAL.CMD catalog files, and test files as
    follows.

-   MOVELIST is in QAMAINTCOM.

-   NATURAL.CMD catalog files are in QAMAINTCOM.

a)  Create a MOVELIST called TEMP_MOVE.DAT in QAMAINTCOM by issuing the
    following command:

\$ EDIT TEMP_MOVE.DAT

b)  Insert into TEMP_MOVE.DAT the name of the original MOVELIST, the
    NATURAL.CMD files from QAMAINTCOM, and all files used in testing.
    (Refer to *Appendix B* if you need additional information on
    MOVELISTS.)

Each record in the MOVELIST should have the following format:
source_dir_name:file_name, target_dir_name.

where, source_dir_name is the logical name of the directory where the
file currently resides (source directory). file_name is the name of the
file.

target dir_name is logical name of the directory in which the file will
reside ( target directory).

c)  Archive the files using the following command:

\$ \@SUBMIT_SSCQAMOVEADD TEMP

Cataloging NATURAL Command Procedures

# NATURAL Programs

NATURAL programs are cataloged into the Production database with a new
release/revision number when they are moved to the Beta or Production
environments.

Two command files are required for cataloging NATURAL programs in batch
mode: CAT_xxxxx.CMD and CAT_xxxxx.COM.

# CMD Files

CAT_xxxxx.CMD contains NATURAL commands that perform the following
functions:

-   Log on to correct NATURAL library

-   Clear edit buffer

-   Execute globals program

-   Read source code onto the buffer

-   Catalog code into the object library

-   List library modules for the log file

-   Exit NATURAL.

The following is an example of a .CMD file:

+-----------------------------------------------------------------------+
| LOGON EPREPORT                                                        |
|                                                                       |
| CLEAR                                                                 |
|                                                                       |
| READ BETASOURCE:SRPEPRGLB_1B.NAT                                      |
|                                                                       |
| UNCAT EPRGLB1B                                                        |
|                                                                       |
| CAT EPRGLB1B                                                          |
|                                                                       |
| EPRGLB1B                                                              |
|                                                                       |
| CLEAR                                                                 |
|                                                                       |
| READ BETASOURCE:SRPEISMAP_1B.NAT                                      |
|                                                                       |
| UNCAT EISMAP1B                                                        |
|                                                                       |
| CATMAP EISMAP1B                                                       |
|                                                                       |
| CLEAR                                                                 |
|                                                                       |
| READ BETASOURCE:SRPEISMN_1B\>NAT                                      |
|                                                                       |
| UNCAT EISMN1B                                                         |
|                                                                       |
| CAT EISMN1B                                                           |
|                                                                       |
| LIST MODULES                                                          |
|                                                                       |
| FIN                                                                   |
+-----------------------------------------------------------------------+

# Cataloging Natural Files

Edit the command file, STARMAINTCOM:CAT_NAT2.COM and include the name of
the CMD file. To submit the command files, enter the following command
string:

\$SUBMIT/KEEP/NOTIFY/NOPRINT/QUE=HAZEL_SHORT/LOG=BETAMAINTCOM CAT_NAT2

End of Document