﻿       >>SOURCE FORMAT IS FREE
IDENTIFICATION DIVISION.
PROGRAM-ID.  SetUpInxFiles.
AUTHOR.  MICHAEL COUGHLAN.
*>Originally written for VAX COBOL 1991
*>Converted to GnuCOBOL 2002
*>Sets up the indexed files for the DP291-91-EXAM
*>The Campus Bookshop Purchase Requirements Report
*>DP291-91-EXAM

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT Purchase-Req-File  ASSIGN TO "PRFILE.dat"
		ORGANIZATION IS INDEXED
		FILE STATUS IS Pr-Status
		ACCESS MODE IS DYNAMIC
		RECORD KEY IS Pr-Number
		ALTERNATE RECORD KEY IS Pr-Lecturer-Name
				WITH DUPLICATES
		ALTERNATE RECORD KEY IS Pr-Book-Num
				WITH DUPLICATES.

	SELECT Book-File ASSIGN TO "BOOKFILE.dat"
		ORGANIZATION IS INDEXED
		FILE STATUS IS Bf-Status
		ACCESS MODE IS DYNAMIC
		RECORD KEY IS Bf-Book-Num
		ALTERNATE RECORD KEY IS Bf-Publisher-Num
				WITH DUPLICATES.

	SELECT Publisher-File ASSIGN TO "PUBFILE.dat"
		ORGANIZATION IS INDEXED
		FILE STATUS IS Pf-Status
		ACCESS MODE IS DYNAMIC
		RECORD KEY IS Pf-Publisher-Num
		ALTERNATE RECORD KEY IS Pf-Publisher-Name.

	SELECT In-Pr  ASSIGN TO "IN-PREQ.dat"
                 ORGANIZATION IS LINE SEQUENTIAL.

	SELECT In-Book ASSIGN TO "IN-BOOK.dat"
                 ORGANIZATION IS LINE SEQUENTIAL.

	SELECT In-Pub ASSIGN TO "IN-PUB.dat"
                 ORGANIZATION IS LINE SEQUENTIAL.
		

DATA DIVISION.
FILE SECTION.
FD 	Purchase-Req-File.
01	Pr-Rec.
	02	Pr-Number		PIC 9(4).
	02	Pr-Lecturer-Name	PIC X(20).
	02	Pr-Book-Num		PIC 9(4).
	02	Pr-Module-Code		PIC X(5).
	02	Pr-Copies-Required	PIC 9(3).
	02	Pr-Term			PIC 9.
	
FD 	Book-File.
01	Book-Rec.
	02	Bf-Book-Num		PIC 9(4).
	02	Bf-Publisher-Num	PIC 9(4).
	02	Bf-Book-Title		PIC X(30).	


FD  Publisher-File.
01	Publisher-Rec.
	02	Pf-Publisher-Num	PIC 9(4).
	02	Pf-Publisher-Name	PIC X(20).
	02	Pf-Publisher-Address	PIC X(40).

FD	In-Pr.
01	In-Pr-Rec			PIC X(37).

FD	In-Book.
01	In-Book-Rec			PIC X(38).

FD	In-Pub.
01	In-Pub-Rec			PIC X(64).


WORKING-STORAGE SECTION.
01	File-Stati.
	02	Pr-Status		PIC X(2).
	02	Bf-Status		PIC X(2).
	02	Pf-Status		PIC X(2).

01	Current-Term			PIC 9.

01	Eof-Names.
	02	FILLER			PIC 9 	VALUE 0.
		88	End-Of-Pr-File     VALUE 1.
		88	Not-End-Of-Pr-File VALUE 0.
	02	FILLER			PIC 9 	VALUE 0.
		88	End-Of-Books	   VALUE 1.
		88	Not-End-Of-Books   VALUE 0.
	02	FILLER			PIC 9 	VALUE 0.
		88	End-Of-Publishers  VALUE 1.


PROCEDURE DIVISION.
BEGIN.
	OPEN OUTPUT Purchase-Req-File.
	OPEN OUTPUT Book-File.
	OPEN OUTPUT Publisher-File.
	OPEN INPUT In-Pr.
        OPEN INPUT In-Book.
        OPEN INPUT In-Pub.
        READ In-Pr INTO Pr-Rec
		AT END SET End-Of-Pr-File TO TRUE
	END-READ
	PERFORM UNTIL End-Of-Pr-File
		WRITE Pr-Rec
			INVALID KEY DISPLAY "Error in Pr status = " Pr-Status
		END-WRITE
	        READ In-Pr INTO Pr-Rec
			AT END SET End-Of-Pr-File TO TRUE
		END-READ
	END-PERFORM

	READ In-Book INTO Book-Rec
		AT END SET End-Of-Books TO TRUE
	END-READ
	PERFORM UNTIL End-Of-Books
		WRITE Book-Rec
			INVALID KEY DISPLAY "Error in Books = " Bf-Status
		END-WRITE
		READ In-Book INTO Book-Rec
			AT END SET End-Of-Books TO TRUE
		END-READ
	END-PERFORM

	READ In-Pub INTO Publisher-Rec
		AT END SET End-Of-Publishers TO TRUE
	END-READ
	PERFORM UNTIL End-Of-Publishers
		WRITE Publisher-Rec 
			INVALID KEY DISPLAY "Pub error = " Pf-Status
		END-WRITE
		READ In-Pub INTO Publisher-Rec
			AT END SET End-Of-Publishers TO TRUE
		END-READ
	END-PERFORM
			
	CLOSE   Purchase-Req-File,
		Book-File,
		Publisher-File,
		In-Pr,
		In-Book,
		In-Pub.
	STOP RUN.
