﻿       >>SOURCE FORMAT IS FREE
IDENTIFICATION DIVISION.
PROGRAM-ID.  Seq2Direct.
AUTHOR. Michael Coughlan.
*>The ACME Stock Reorder System (Acme99.cbl) file set up program

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
        SELECT STOCK-IN ASSIGN TO "INSTK.dat"
               ORGANIZATION IS LINE SEQUENTIAL.

        SELECT MANF-IN ASSIGN TO "INMANF.dat"
               ORGANIZATION IS LINE SEQUENTIAL.

	SELECT STOCK-FILE ASSIGN TO "STOCK.dat"
                        ORGANIZATION IS RELATIVE
                        ACCESS MODE IS DYNAMIC
                        RELATIVE KEY IS STOCK-REC-POINTER-WB
                        FILE STATUS IS STOCK-STATUS-WB.

        SELECT MANF-FILE ASSIGN TO "MANF.dat"
                        ORGANIZATION IS INDEXED
                        ACCESS MODE IS RANDOM
                        RECORD KEY IS MANF-CODE-FC
                        ALTERNATE RECORD KEY IS MANF-NAME-FC
                                 WITH DUPLICATES
                        FILE STATUS IS MANF-STATUS-WB.

DATA DIVISION.
FILE SECTION.
FD  STOCK-IN.
01	IN-STOCK-REC.
	02	STOCK-NUM			PIC 9(5).
	02	FILLER				PIC X(60).

FD  MANF-IN.
01	IN-MANF-REC				PIC X(104).


FD  STOCK-FILE.
01      STOCK-REC-FB.
	02	STOCK-NUM-FB			PIC 9(5).
	02	MANF-CODE-FB			PIC X(4).
	02	ITEM-DESC-FB			PIC X(30).
	02	QTY-IN-STOCK-FB			PIC 9(6).
	02	REORDER-LEVEL-FB		PIC 999.
	02	REORDER-QTY-FB			PIC 9(6).
	02	ITEM-COST-FB			PIC 9(5).
	02	ITEM-WEIGHT-FB			PIC 9(5).
	02	ON-ORDER-FB			PIC X.	
		
FD  MANF-FILE.
01	MANF-REC-FC.
	02	MANF-CODE-FC			PIC X(4).
	02	MANF-NAME-FC			PIC X(30).
	02	MANF-ADDRESS-FC			PIC X(70).

WORKING-STORAGE SECTION.

01	FILE-DATA-WB.
	02	STOCK-REC-POINTER-WB			PIC 9(5).
	02	STOCK-STATUS-WB				PIC XX.
	02	MANF-STATUS-WB				PIC XX.
	02	FILLER					PIC 9 VALUE 0.
		88	END-OF-STOCK		VALUE 1.
	        88      END-OF-MANF             VALUE 2.


PROCEDURE DIVISION.
CREATE-REORDER-FILE.
	OPEN I-O STOCK-FILE.
	OPEN I-O MANF-FILE.
	OPEN INPUT STOCK-IN.
	OPEN INPUT MANF-IN.
	READ STOCK-IN 
		AT END SET END-OF-STOCK TO TRUE
	END-READ. 
	
	PERFORM UNTIL END-OF-STOCK
		SUBTRACT 10000 FROM STOCK-NUM GIVING STOCK-REC-POINTER-WB
		WRITE STOCK-REC-FB FROM IN-STOCK-REC
			INVALID KEY DISPLAY "STCK ERR STATUS = " STOCK-STATUS-WB
		END-WRITE
	
		READ STOCK-IN
			AT END SET END-OF-STOCK TO TRUE
		END-READ
	END-PERFORM.
	READ MANF-IN INTO MANF-REC-FC 
		AT END SET END-OF-MANF TO TRUE.
	PERFORM UNTIL END-OF-MANF
		DISPLAY IN-MANF-REC
		WRITE MANF-REC-FC
			INVALID KEY DISPLAY "MANF ERR STAT = " MANF-STATUS-WB
		END-WRITE
	
		READ MANF-IN INTO MANF-REC-FC
			AT END SET END-OF-MANF TO TRUE
		END-READ
	END-PERFORM.


	CLOSE STOCK-FILE, MANF-FILE, MANF-IN, STOCK-IN.
	STOP RUN.
