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

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

    SELECT AUTHOR-IN ASSIGN TO "AUTHORIN.dat"
           ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.

FD  AUTHOR-IN.
01  FA-AUTHOR-FILE-RECORD.
    02  FA-AUTHOR-NUMBER               PIC 9(7).
    02  FA-AUTHOR-NAME                 PIC X(25).
    02  FA-AGENT-NAME                  PIC X(25).

FD  AUTHOR-OUT.
01    FB-AUTHOR-FILE-RECORD.
    02  FB-AUTHOR-NUMBER               PIC 9(7).
    02  FB-AUTHOR-NAME                 PIC X(25).
    02  FB-AGENT-NAME                  PIC X(25).


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  INPUT AUTHOR-IN.
    OPEN  OUTPUT AUTHOR-OUT.
    DISPLAY "STARTING".
    READ AUTHOR-IN
        AT END SET END-OF-FILE TO TRUE
    END-READ.
    PERFORM UNTIL END-OF-FILE 
        MOVE FA-AUTHOR-FILE-RECORD TO FB-AUTHOR-FILE-RECORD
        DISPLAY FB-AUTHOR-FILE-RECORD
        WRITE FB-AUTHOR-FILE-RECORD
            INVALID KEY
            DISPLAY "WRITE FAILED ON REC --> " WITH NO ADVANCING 
            DISPLAY FB-AUTHOR-FILE-RECORD
            DISPLAY "FILE STATUS --> " WITH NO ADVANCING
            DISPLAY WA-AUTHOR-ERROR-STATUS
        END-WRITE
        READ AUTHOR-IN
            AT END SET END-OF-FILE TO TRUE
        END-READ
    END-PERFORM.
    DISPLAY "FINISHED".
    CLOSE AUTHOR-IN.
    CLOSE AUTHOR-OUT.
    STOP RUN.

