       IDENTIFICATION DIVISION.
       PROGRAM-ID.     PROJECT1.
       AUTHOR.         Mel Sanschagrin (Capt. COBOL).

      *----------------------------------------------------
      * This is a sammple program for Project 1.
      * Test data was provided in the Project 1document.
      * The program creates a data file from data entered at
      * the keyboard.
      *----------------------------------------------------

       ENVIRONMENT DIVISION.

       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT  INVENT-FILE-OUT
               ASSIGN TO  "C:\INVFILE.TXT"
                   ORGANIZATION IS LINE SEQUENTIAL.

       DATA DIVISION.

       FILE SECTION.

       FD  INVENTORY-FILE-OUT.
       01  INVENTORY-RECORD-OUT    PIC 9(15).
           
      * =============================================================
      * The WORKING-STORAGE SECTION is not actually required
      * for this program. I have included the WORKING-STORAGE
      * SECTION simply to show an example of it's structure and show
      * the moves from that section to record in the FILE SECTION.
      * =============================================================

       WORKING-STORAGE SECTION.
       01  INVENTORY-RECORD-IN.
           05  PART-NUMBER-IN     PIC 9(7).
           05  QTY-ON-HAND-IN     PIC 9(4).
           05  UNIT-PRICE-IN      PIC 9(4).

      * =============================================================
      * These prompts have been coded with the VALUE statement. They
      * could have been stated as alphameric constants within the
      * DISPLAY statements of the PROCEDURE DIVISION. However, I want
      * to show how such items could be established in the WORKING-
      * STORAGE SECTION and then used in the PROCEDURE DIVISION.
      * Also, coding them here makes it easier to modifiy should
      * message changes be required.
      * =============================================================

       01  PROMPTS-MESSAGES-RESPONSES.
           05  RECORD-PROMPT       PIC X(37)
               VALUE  "Do you have a record to enter  Y or N".
           05  INPUT-RESPONSE      PIC X(1).
           05  PART-NUMBER-PROMPT    PIC X(21)
               VALUE   "Enter the Part Number".
           05  QTY-ON-HAND-PROMPT  PIC X(26)
               VALUE  "Enter the Quantity on Hand".
            05  UNIT-PRICE-PROMPT   PIC X(20)
               VALUE  "Enter the unit price".

         PROCEDURE DIVISION.
      * ==============================================================
      * This is the top level of the program and controls the whole
      * or overall process
      * ==============================================================

       100-CREATE-INVENTORY-FILE.
           PERFORM  200-INITIATE-CREATE-FILE.
           PERFORM  200-CREATE-RECORDS
                    UNTIL INPUT-RESPONSE = "N".
           PERFORM  200-TERMINATE-CREATE-FILE.

           STOP RUN.

       200-INITIATE-CREATE-FILE.
           PERFORM  700-OPEN-FILES.
           PERFORM  700-PROMPT-FOR-DATA.

       200-CREATE-RECORDS.
           PERFORM 700-ENTER-INVENTORY-DATA.
           PERFORM 700-WRITE-INVENTORY-RECORD.
           PERFORM 700-PROMPT-FOR-DATA.

       200-TERMINATE-CREATE-FILE.
           PERFORM  700-CLOSE-FILES.
           PERFORM  700-END-MESSAGE.

      
       700-OPEN-FILES.
           OPEN OUTPUT INVENTORY-FILE-OUT.

       700-PROMPT-FOR-DATA.
      *==============================================================
      * This module prompts the user whether a record is to be
      * entered.
      *==============================================================
           DISPLAY RECORD-PROMPT
               LINE 16 COLUMN 10.
           ACCEPT INPUT-RESPONSE
               LINE 17 COLUMN 10.

       700-ENTER-INVENTORY-DATA.
      *==============================================================
      * This module clears the contents of the inventory record
      * fileds, clears the screen, and then accepts the data
      * from the keyboard. 
      *==============================================================
            INITIALIZE   INVENTORY-RECORD-IN.
           DISPLAY "  " WITH BLANK SCREEN.
          
           DISPLAY  PART-NUMBER-PROMPT LINE 4 COLUMN 5.
           ACCEPT  PART-NUMBER-IN      LINE 5 COLUMN 10. 

           DISPLAY  QTY-ON-HAND-PROMPT  LINE 6  COLUMN 5.
           ACCEPT   QTY-ON-HAND-IN      LINE 7  COLUMN 10.
  
           DISPLAY  UNIT-PRICE-PROMPT   LINE 8  COLUMN 5.
           ACCEPT   UNIT-PRICE-IN       LINE 9  COLUMN 10.

          700-WRITE-INVENTORY-RECORD.
      *==============================================================
      * The entered data record is moved to the output record, written 
      * to the output file. 
      *==============================================================
           MOVE  INVENTORY-RECORD-IN  TO  INVENTORY-RECORD-OUT.
           WRITE INVENTORY-RECORD-OUT.
          
       700-CLOSE-FILES.
           CLOSE  INVENTORY-FILE-OUT.

       700-END-MESSAGE.
           DISPLAY "PROGRAM COMPLETE"
               LINE 18  COLUMN 10.

