﻿       >>SOURCE FORMAT IS FREE
IDENTIFICATION DIVISION.
PROGRAM-ID.  Seq2Direct.
AUTHOR.  MICHAEL COUGHLAN.
*>DP291-90-EXAM-SETUP.
*>Originally written for VAX COBOL 1991
*>Converted to GnuCOBOL 2002


ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT VIDEO-DETAILS-FILE ASSIGN TO "VDF.dat"
        ORGANIZATION IS INDEXED
        FILE STATUS IS VDF-STATUS
        ACCESS MODE IS DYNAMIC
        RECORD KEY IS VDF-VIDEO-NUM
        ALTERNATE RECORD KEY IS VDF-VIDEO-CODE
                    WITH DUPLICATES. 

    SELECT VIDEO-FILE ASSIGN TO "VIDEO.dat"
        ORGANIZATION IS INDEXED
        FILE STATUS IS VIDEO-STATUS
        ACCESS MODE IS DYNAMIC
        RECORD KEY IS VIDEO-CODE
        ALTERNATE RECORD KEY IS VIDEO-TITLE
        ALTERNATE RECORD KEY IS VIDEO-SUPPLIER-CODE
            WITH DUPLICATES.


    SELECT SUPPLIER-FILE ASSIGN TO "SUPPLIER.dat"
        ORGANIZATION IS RELATIVE
        FILE STATUS IS SUPPLIER-STATUS
        ACCESS MODE IS RANDOM
        RELATIVE KEY IS SUPPLIER-KEY.

    SELECT INPUT-FILE ASSIGN TO "ALL-SEQ-IN.dat"
                ORGANIZATION IS LINE SEQUENTIAL.
        


DATA DIVISION.
FILE SECTION.    
FD  VIDEO-DETAILS-FILE.
01  VDF-RECORD.
    02  VDF-VIDEO-NUM          PIC X(5).
    02  VDF-VIDEO-CODE         PIC 9(5).
    02  VDF-RENTAL-EARNINGS    PIC 9(4)V99.
    02  VDF-PURCHASE-PRICE     PIC 999V99.
    
FD  VIDEO-FILE.
01  VIDEO-RECORD.
    02  VIDEO-CODE             PIC 9(5).
    02  VIDEO-TITLE            PIC X(30).
    02  VIDEO-SUPPLIER-CODE    PIC 99.


FD  SUPPLIER-FILE.
01  SUPPLIER-RECORD.
    02  SUPPLIER-CODE          PIC 99.
    02  SUPPLIER-NAME          PIC X(20).
    02  SUPPLIER-ADDRESS       PIC X(60).
 
FD  INPUT-FILE.
01  VDF-INSERT.
    02  FILLER                 PIC 9.
        88  INSERT-VDF-REC     VALUE 1.
        88  INSERT-VIDEO-REC   VALUE 2.
        88  INSERT-SUPP-REC    VALUE 3.
    02  VDF-REC                PIC X(21).

01  VIDEO-INSERT.
    02  FILLER                 PIC 9.
    02  VIDEO-REC              PIC X(37).

01  SUPPLIER-INSERT.
    02  FILLER                 PIC 9.
    02  SUPP-REC.
        03  SUPPLIER-KEY       PIC 99.
        03  FILLER             PIC X(80).

WORKING-STORAGE SECTION.
01  FILE-STATUS-IDENTIFIERS.
    02  VDF-STATUS             PIC X(2).
    02  VIDEO-STATUS           PIC X(2).
    02  SUPPLIER-STATUS        PIC X(2).


01  END-OF-FILE-FLAGS.
    02  FILLER                 PIC 9 VALUE 1.
        88  VIDEO-FILE-END     VALUE 0.
    02  FILLER                 PIC 9 VALUE 1.
        88  VDF-FILE-END       VALUE 0.
        88  NOT-VDF-END        VALUE 1.
    02  FILLER                 PIC 9 VALUE 1.
        88  END-OF-INPUT       VALUE 0.


PROCEDURE DIVISION.
BEGIN.
    OPEN OUTPUT VIDEO-DETAILS-FILE.
    OPEN OUTPUT VIDEO-FILE.
    OPEN OUTPUT SUPPLIER-FILE.
    OPEN INPUT  INPUT-FILE.

    READ INPUT-FILE AT END SET END-OF-INPUT TO TRUE
    END-READ.
    PERFORM INSERT-RECORDS UNTIL END-OF-INPUT

    CLOSE VIDEO-DETAILS-FILE, VIDEO-FILE, SUPPLIER-FILE, INPUT-FILE.
    STOP RUN.

INSERT-RECORDS.
    EVALUATE TRUE
      WHEN     INSERT-VDF-REC 
             WRITE VDF-RECORD FROM VDF-REC
                INVALID KEY DISPLAY "VDF ERROR " VDF-REC
                        DISPLAY "VDF STATUS " VDF-STATUS
             END-WRITE  
      WHEN     INSERT-VIDEO-REC
            WRITE VIDEO-RECORD FROM VIDEO-REC
                INVALID KEY DISPLAY "VIDEO ERR " VIDEO-REC
                        DISPLAY "STATUS =" VIDEO-STATUS
            END-WRITE
      WHEN     INSERT-SUPP-REC
            WRITE SUPPLIER-RECORD FROM SUPP-REC
                INVALID KEY DISPLAY "SUPP ERR " SUPP-REC
                        DISPLAY "STATUS =" SUPPLIER-STATUS
            END-WRITE
      WHEN OTHER DISPLAY "ERROR IN THE EVALUATE REC ="VDF-INSERT  
    END-EVALUATE.
    READ INPUT-FILE AT END SET END-OF-INPUT TO TRUE
    END-READ.
