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

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT BOOK-FILE-OUT ASSIGN TO "BOOKS.dat"
        ORGANIZATION IS INDEXED
        FILE STATUS IS WA-BOOK-ERROR-STATUS
        ACCESS MODE IS DYNAMIC
        RECORD KEY IS FA-BOOK-NUMBER
        ALTERNATE RECORD KEY IS FA-AUTHOR-NUMBER
                WITH DUPLICATES.

    SELECT BOOK-FILE-IN  ASSIGN TO "BOOKSIN.dat"
        ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
    
FD  BOOK-FILE-OUT.
01  FA-BOOK-FILE-RECORD.
    02  FA-BOOK-NUMBER                   PIC 9(7).
    02  FA-BOOK-NAME                     PIC X(25).
    02  FA-AUTHOR-NUMBER                 PIC 9(7).
    02  FA-ROYALTY-RATE                  PIC 9V99.
    02  FA-QUARTER-BORROWINGS            PIC 9(3).



FD  BOOK-FILE-IN.
01  FB-BOOK-FILE-RECORD.
    02  FB-BOOK-NUMBER                   PIC 9(7).
    02  FB-BOOK-NAME                     PIC X(25).
    02  FB-AUTHOR-NUMBER                 PIC 9(7).
    02  FB-ROYALTY-RATE                  PIC 9V99.
    02  FB-QUARTER-BORROWINGS            PIC 9(3).


WORKING-STORAGE SECTION.
01  WA-ERROR-STATUS.
    02  WA-BOOK-ERROR-STATUS             PIC X(2).
        88  RECORD-ALREADY-EXISTS        VALUE "22".
        88  RECORD-DOES-NOT-EXIST        VALUE "23".
    02  WA-AUTHOR-ERROR-STATUS           PIC X(2).
        88  RECORD-ALREADY-EXISTS        VALUE "22".
        88  RECORD-DOES-NOT-EXIST        VALUE "23".

01  WB-INTERMEDIATE-VARIABLES.
    02  WB-BOOK-ROYALTY                  PIC 9(3)V99.
    02  WB-QUARTER-AUTHOR-BORROWINGS     PIC 9(4).
    02  WB-TOTAL-AUTHOR-BORROWINGS       PIC 9(6).
    02  WB-AUTHOR-ROYALTIES              PIC 9(4)V99.
    02  WB-AGENT-ROYALTIES               PIC 9(6)V99.

01  WC-FLAGS.
    02  IS-IT-END-OF-FILE                PIC X(3) VALUE "NO".
        88  END-OF-FILE                  VALUE "YES".
    02  IS-THERE-AN-ERROR                PIC X(3) VALUE "NO".
        88  NO-ERROR-FOUND               VALUE "NO".

PROCEDURE DIVISION.
10-START.
    OPEN  OUTPUT  BOOK-FILE-OUT.
    OPEN  INPUT BOOK-FILE-IN
    DISPLAY "STARTING".
    READ BOOK-FILE-IN
        AT END SET END-OF-FILE TO TRUE
    END-READ
    PERFORM UNTIL END-OF-FILE
        MOVE FB-BOOK-FILE-RECORD TO FA-BOOK-FILE-RECORD
        DISPLAY FA-BOOK-FILE-RECORD
        WRITE FA-BOOK-FILE-RECORD
           INVALID KEY  DISPLAY "WRITE ERROR --> " WITH NO ADVANCING
                DISPLAY FA-BOOK-FILE-RECORD
                DISPLAY "STATUS --> " WITH NO ADVANCING
                DISPLAY WA-BOOK-ERROR-STATUS
        END-WRITE
        READ BOOK-FILE-IN
            AT END SET END-OF-FILE TO TRUE
        END-READ
    END-PERFORM.
        DISPLAY "FINISHED".
    CLOSE BOOK-FILE-OUT.
    CLOSE BOOK-FILE-IN.
    STOP RUN.

