000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. makepay. 000030 AUTHOR. Michael Bieber. 000040 000050 ENVIRONMENT DIVISION. 000060 000120 INPUT-OUTPUT SECTION. 000130 000140 FILE-CONTROL. 000150 SELECT payment-file 000160 ASSIGN TO OUT 000170 ORGANIZATION IS LINE SEQUENTIAL. 000180 000190 000200 DATA DIVISION. 000210 000220 FILE SECTION. 000230 FD payment-file 000240 RECORD CONTAINS 33 CHARACTERS 000250 LABEL RECORDS ARE STANDARD 000260 DATA RECORD IS payment-record-out. 000270 000280 01 payment-record-out. 000290 05 pr-emp-id-out PIC 999. 000300 05 pr-customer-number-out PIC X(10). 000310 05 pr-payment-out PIC 99999V99. 000320 05 pr-check-number-out PIC 9(5). 000330 05 pr-payment-date-out. 000340 10 pr-month-out PIC 99. 000350 10 pr-day-out PIC 99. 000360 10 pr-century-out PIC 99. 000370 10 pr-year-out PIC 99. 000380 000390 WORKING-STORAGE SECTION. 000400 000410* User input variables 000420 01 emp-id-user PIC X(2). 000430 01 customer-number-user PIC X(10). 000440 01 payment-user PIC 99999V99. 000450 01 check-number-user PIC 9(10). 000460 01 payment-date-user. 000470 05 month-user PIC 9(2). 000480 05 slash1 PIC X. 000490 05 day-user PIC 9(2). 000500 05 slash2 PIC X. 000510 05 year-user PIC 9(2). 000520 000530 01 century-constant PIC 99 VALUE 19. 000540 000550 01 continue-user PIC XXX. 000560 000570* flag variables 000580 01 more-payments-flag PIC X(3). 000590 000600 PROCEDURE DIVISION. 000610 000620 100-main. 000630 PERFORM 200-initialize-files. 000640 PERFORM 210-initialize-variables. 000650 PERFORM 300-get-new-payment-record 000660 UNTIL more-payments-flag = "no". 000670 PERFORM 400-housekeeping. 000680 STOP RUN. 000690 000700 200-initialize-files. 000710 OPEN OUTPUT payment-file. 000720 000730 210-initialize-variables. 000740 MOVE "yes" TO more-payments-flag. 000750 000760 300-get-new-payment-record. 000770 DISPLAY "Enter Employee ID: ". 000780 ACCEPT emp-id-user. 000790 MOVE emp-id-user TO pr-emp-id-out. 000800 000810 DISPLAY "Enter Customer Number: ". 000820 ACCEPT customer-number-user. 000830 MOVE customer-number-user TO pr-customer-number-out. 000840 000850 DISPLAY "Enter payment: ". 000860 ACCEPT payment-user. 000870 MOVE payment-user TO pr-payment-out. 000880 000890 DISPLAY "Enter the Check Number: ". 000900 ACCEPT check-number-user. 000910 MOVE check-number-user TO pr-check-number-out. 000920 000930 DISPLAY "Enter payment date (in MM/DD/YY format): ". 000940 ACCEPT payment-date-user. 000950 MOVE month-user TO pr-month-out. 000960 MOVE day-user TO pr-day-out. 000970 MOVE year-user TO pr-year-out. 000980 MOVE century-constant TO pr-century-out. 000990 001000 WRITE payment-record-out. 001010 001020* the following checks to see if we should perform the 001030* <300-get-new-payment-record> loop again. 001040 001050 DISPLAY "Are there any more payments to record?". 001060 DISPLAY "(type 'yes' or 'no ')". 001070 ACCEPT continue-user. 001080 001090* we must check for upper/lower case 001100 001110 IF continue-user = "no" OR continue-user = "NO" 001120 MOVE "no" to more-payments-flag. 001130 001140 001150 400-housekeeping. 001160 CLOSE payment-file.