Newtronics Plc.
File Maintenance Program

Time to complete Allow 25 hours continuous
Test Data Files

None available. You will have to develop your own test data.

Introduction

Newtronics Plc. is a company which sells electronic parts (diodes, transistors, IC's, LED's thermostats etc.) and goods.  Currently, the company is being computerised and you have been retained to write one of the programs required.

Information about the parts and goods held in stock by the company is contained in two files; the Stock Master File and the Supplier Master File.  Adjustments to stock, such as selling an item or receiving new supplies into stock are made on-line by an update program written by others.  File maintenance  (Insertion, Deletion and Adjusting of records)  to the  master files will be achieved by applying a file of transaction records to them at the end of each day.   Your task is to write the program which will take the Transaction file and apply it to the master files.

 

The Transaction File

The Transaction File is a unsorted, unvalidated file containing a number of different types of transaction record.  Each transaction record type is identified by a transaction type code in the first character position.  The following transaction types have been identified :-

 

Trans Type

Description

1

Delete Stock Record

2

Insert Stock Record

3

Adjust Reorder Level

4

Adjust Reorder Qty

5

Adjust Price

6

Delete Supplier Record

7

Insert Supplier Record

 

Transaction Record Descriptions
Descriptions of the different types of transaction record are shown below.

Delete Stock Record

FieldName

Type

Length

Format

Transaction-Type

Numeric

1

Value 1

Stock-Number

Character

7

9999999

 

Insert Stock  Record

FieldName

Type

Length

Format

Transaction-Type

Numeric

1

Value 2

Stock-Number

Numeric

7

9999999

Qty-In-Stock

Numeric

5

99999

Price

Numeric

6

9999.99

Reorder-Level

Numeric

3

999

Reorder-Qty

Numeric

5

99999

Supplier-Number

Character

4

X999


Adjust Reorder Level

FieldName

Type

Length

Format

Transaction-Type

Numeric

1

Value 3

Stock-Number

Numeric

7

9999999

Reorder-Level

Numeric

3

999

 

Adjust Reorder Qty

FieldName

Type

Length

Format

Transaction-Type

Numeric

1

Value 4

Stock-Number

Numeric

7

9999999

Reorder-Qty

Numeric

5

99999

 

Adjust Price

FieldName

Type

Length

Format

Transaction-Type

Numeric

1

Value 5

Stock-Number

Numeric

7

9999999

Price

Numeric

6

9999.99

 

Delete Supplier Record

FieldName

Type

Length

Format

Transaction-Type

Numeric

1

Value 6

Supplier-Number

Character

4

X999

 

Insert Supplier Record

FieldName

Type

Length

Format

Transaction-Type

9

1

Value 7

Supplier-Number

X

4

X999

Supplier-Name

X

20

-

Supplier-Address

X

35

-

 

The Master Files

The Stock Master File

The Stock Master File is an Indexed file with the following record description.

FieldName

Key type

Type

Length

Format

StockNumber

Primary

9

7

9999999

QtyInStock

 

9

5

99999

Price

 

9

6

9999.99

ReorderLevel

 

9

3

999

ReorderQty

 

9

5

99999

SupplierNumber

ALT with Duplicates

X

4

X999

 

The Supplier Master File

The Supplier Master File is an Indexed file with the following record description.

FieldName

Key type

Type

Length

Format

SupplierNumber

Primary

X

4

X999

SupplierName

ALT with Duplicates

X

20

-

SupplierAddress

 

X

40

-

 

The Stock Archive File

The Stock Archive File is a sequential file with the following record description.

FieldName

Type

Length

Format

StockNumber

9

7

9999999

QtyInStock

9

5

99999

Price

9

6

9999.99

ReorderLevel

9

3

999

ReorderQty

9

5

99999

SupplierNumber

X

4

X999

 

The Error File

The Error File is an unordered Sequential File.  Records in the Error File have the same format as those in the Transaction File.

 


Validation Requirements

For the sake of efficiency, the Transaction File should be sorted on ascending TransactionType within ascending StockNumber before the records are applied to the Master Files.  Some of the validation can be done before the Sort executes and should be done in an Input Procedure.  The rest of the processing should be done in an Output Procedure.

When an error occurs the transaction record should be written to an Error File.  Records in the Error File have the same format as those in the Transaction File.   As soon as an error is found in a transaction record, the record should be written to the Error File and no further checking should be done.

General Validation
Ensure that the Transaction-Type is numeric and within range 1 to 7.

General Transaction Record Validation
Ensure that the Stock-Number is numeric and that the check digit is correct (implement check digit validation as a contained sub-program with no Global data). 

Delete Stock Record Special Validation
Ensure that the record does exist in the master file and that  the Qty-In-Stock in the master file record is zero.  If all is OK  write the Stock Master File record to the Stock Archive File and then delete the master file record.

Insert Stock Record Special Validation
Ensure that the record does not already exist and that there is a corresponding record in the Supplier Master File.  Ensure that the Qty-In-Stock, Price, Reorder-Level and Reorder-Qty fields are numeric and initialized to zero.  If all is OK  insert the record.

Adjust Special Validation
Ensure that the record does exist in the master file.  If all is OK update the master record.         

Insert Supplier Record Special Validation
Ensure that the record does not already exist.  If all is OK then insert the record.

Delete Supplier Record Special Validation
Ensure that the record does exist and that there are no records with this SupplierNumber left in the Stock Master File. If all is OK delete the master file record.

 

Validating The StockNumber Check Digit

The StockNumber is a seven digit number with the seventh (rightmost) digit being the calculated check digit.  Each of the real digits ( the first six) has a weight associated with it. Starting from the leftmost digit the weights are as follows:-

                        D1 = 7, D2 = 6, D3 = 5, D4 = 4, D5 = 3, D6 = 2.

In the StockNumber the check digit modulus is 11.  The check digit can be calculated as follows:-

Multiply each digit by its weight and add the results together.  Divide the sum of the results by the modulus 11 and subtract the remainder from the modulus.  The result is the check digit.   The check digit in your student number is calculated in exactly the same way so any valid student number will be a valid StockNumber.

Here is an example:-

StockNumber    = 7944454
Real  Number    = 794445
Check Digit       =            4
Digit                      D1       D2       D3       D4       D5       D6 
                              *          *          *         *          *          *
Weight          7          6          5        4          3         2
                        ----       ----       ----      ----       ----       ----
Result         R1  +   R2  +   R3   +  R4  +   R5   +  R6      =   Sum Of Results
     
Digit                      7          9          4          4          4          5
                         *          *          *          *           *          *
Weight        7          6          5          4          3          2
                         ----        ----        ----       ----       ----        ----
Result         49  +    54  +   20   +   16  +   12   +   10    =  161
161/11 = 7    Divide the Sum Of Results by Modulus 11 giving Remainder.
 
11-7     = 4 Subtract  the Remainder from the Modulus giving CheckDigit
StockNumbers that yield check digits of 10 and 11 are invalid StockNumbers.

So the check digit is 4.

If you only want to discover whether a check digit is correct or not then get the Sum Of Results as above,  add the check digit to it and divide by 11.  If there is no remainder then the check digit is correct.


Copyright Notice

This COBOL project specification is the copyright property of Michael Coughlan. You have permission to use this material for your own personal use but you may not reproduce it in any published work without written permission from the author.