|
[x]
Posted via EE Mobile
|
||
Search, ask, and monitor your questions on the go with EE Mobile. Visit Experts Exchange from your mobile device and never be out of touch again. |
||
| Question |
|
[x]
Attachment Details
|
||
|
[x]
The Solution Rating System
|
||
With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.
Your Input Matters If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support. Thank you! |
||
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595: 596: 597: 598: 599: 600: 601: 602: 603: 604: 605: 606: 607: 608: 609: 610: 611: 612: 613: 614: 615: 616: 617: 618: 619: 620: 621: 622: 623: 624: 625: 626: 627: 628: 629: 630: 631: 632: 633: 634: 635: 636: 637: 638: 639: 640: 641: 642: 643: 644: 645: 646: 647: 648: 649: 650: 651: 652: 653: 654: 655: 656: 657: 658: 659: 660: 661: 662: 663: 664: 665: 666: 667: 668: 669: 670: 671: 672: 673: 674: 675: 676: 677: 678: 679: 680: 681: 682: 683: 684: 685: 686: 687: 688: 689: 690: 691: 692: 693: 694: 695: 696: 697: 698: 699: 700: 701: 702: 703: 704: 705: 706: 707: 708: 709: 710: 711: 712: 713: 714: 715: 716: 717: 718: 719: 720: 721: 722: 723: 724: 725: 726: 727: 728: 729: 730: 731: 732: 733: 734: 735: 736: 737: 738: 739: 740: 741: 742: 743: 744: 745: 746: 747: 748: 749: 750: 751: 752: 753: 754: 755: 756: 757: 758: 759: 760: 761: 762: 763: 764: 765: 766: 767: 768: 769: 770: 771: 772: 773: 774: 775: 776: 777: 778: 779: 780: 781: 782: 783: 784: 785: 786: 787: 788: 789: 790: 791: 792: 793: 794: 795: 796: 797: 798: 799: 800: 801: 802: 803: 804: 805: 806: 807: 808: 809: 810: 811: 812: 813: 814: 815: 816: 817: 818: 819: 820: 821: 822: 823: 824: 825: 826: 827: 828: 829: 830: 831: 832: 833: 834: 835: 836: 837: 838: 839: 840: 841: 842: 843: 844: 845: 846: 847: 848: 849: 850: 851: 852: 853: 854: 855: 856: 857: 858: 859: 860: 861: 862: 863: 864: 865: 866: 867: 868: 869: 870: 871: |
IDENTIFICATION DIVISION.
PROGRAM-ID. VCHBLD01.
*---------------------------------
* Create a Voucher file for the
* bills payment system
*---------------------------------
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT VOUCHER-FILE
ASSIGN TO "VOUCHER"
ORGANIZATION IS INDEXED
RECORD KEY IS VOUCHER-NUMBER
ACCESS MODE IS DYNAMIC.
DATA DIVISION.
FILE SECTION.
FD VOUCHER-FILE
LABEL RECORDS ARE STANDARD.
01 VOUCHER-RECORD.
05 VOUCHER-NUMBER PIC 9(5).
05 VOUCHER-VENDOR PIC 9(5).
05 VOUCHER-INVOICE PIC X(15).
05 VOUCHER-FOR PIC X(30).
05 VOUCHER-AMOUNT PIC S9(6)V99.
05 VOUCHER-DATE PIC 9(8).
05 VOUCHER-DUE PIC 9(8).
05 VOUCHER-DEDUCTIBLE PIC X.
05 VOUCHER-SELECTED PIC X.
05 VOUCHER-PAID-AMOUNT PIC S9(6)V99.
05 VOUCHER-PAID-DATE PIC 9(8).
05 VOUCHER-CHECK-NO PIC 9(6).
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
PROGRAM-BEGIN.
OPEN OUTPUT VOUCHER-FILE.
CLOSE VOUCHER-FILE.
PROGRAM-EXIT.
EXIT PROGRAM.
PROGRAM-DONE.
STOP RUN.
------------------------------------------------------------------------
IDENTIFICATION DIVISION.
PROGRAM-ID. VNDBLD01.
*------------------------------------------------
* Create an Empty Vendor File.
*------------------------------------------------
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT VENDOR-FILE
ASSIGN TO "vendor"
ORGANIZATION IS INDEXED
RECORD KEY IS VENDOR-NUMBER
ACCESS MODE IS DYNAMIC.
DATA DIVISION.
FILE SECTION.
FD VENDOR-FILE
LABEL RECORDS ARE STANDARD.
01 VENDOR-RECORD.
05 VENDOR-NUMBER PIC 9(5).
05 VENDOR-NAME PIC X(30).
05 VENDOR-ADDRESS-1 PIC X(30).
05 VENDOR-ADDRESS-2 PIC X(30).
05 VENDOR-CITY PIC X(20).
05 VENDOR-STATE PIC X(2).
05 VENDOR-ZIP PIC X(10).
05 VENDOR-CONTACT PIC X(30).
05 VENDOR-PHONE PIC X(15).
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
PROGRAM-BEGIN.
OPEN OUTPUT VENDOR-FILE.
CLOSE VENDOR-FILE.
PROGRAM-DONE.
STOP RUN.
-----------------------------------------------
IDENTIFICATION DIVISION.
PROGRAM-ID. CTLBLD01.
*---------------------------------
* Create a Control file for the
* bills payment system and write
* the initial record.
*---------------------------------
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CONTROL-FILE
ASSIGN TO "CONTROL"
ORGANIZATION IS INDEXED
RECORD KEY IS CONTROL-KEY
ACCESS MODE IS DYNAMIC.
DATA DIVISION.
FILE SECTION.
FD CONTROL-FILE
LABEL RECORDS ARE STANDARD.
01 CONTROL-RECORD.
05 CONTROL-KEY PIC 9.
05 CONTROL-LAST-VOUCHER PIC 9(5).
WORKING-STORAGE SECTION.
PROCEDURE DIVISION.
PROGRAM-BEGIN.
OPEN OUTPUT CONTROL-FILE.
MOVE 1 TO CONTROL-KEY.
MOVE ZEROES TO CONTROL-LAST-VOUCHER.
WRITE CONTROL-RECORD.
CLOSE CONTROL-FILE.
PROGRAM-EXIT.
EXIT PROGRAM.
PROGRAM-DONE.
STOP RUN.
-------------------------------------------
IDENTIFICATION DIVISION.
PROGRAM-ID. VCHMNT01.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT VENDOR-FILE
ASSIGN TO "vendor"
ORGANIZATION IS INDEXED
RECORD KEY IS VENDOR-NUMBER
ALTERNATE KEY IS VENDOR-NAME WITH DUPLICATES
ACCESS MODE IS DYNAMIC.
SELECT VOUCHER-FILE
ASSIGN TO "VOUCHER"
ORGANIZATION IS INDEXED
RECORD KEY IS VOUCHER-NUMBER
ACCESS MODE IS DYNAMIC.
SELECT CONTROL-FILE
ASSIGN TO "CONTROL"
ORGANIZATION IS INDEXED
RECORD KEY IS CONTROL-KEY
ACCESS MODE IS DYNAMIC.
DATA DIVISION.
FILE SECTION.
FD VENDOR-FILE
LABEL RECORDS ARE STANDARD.
01 VENDOR-RECORD.
05 VENDOR-NUMBER PIC 9(5).
05 VENDOR-NAME PIC X(30).
05 VENDOR-ADDRESS-1 PIC X(30).
05 VENDOR-ADDRESS-2 PIC X(30).
05 VENDOR-CITY PIC X(20).
05 VENDOR-STATE PIC X(2).
05 VENDOR-ZIP PIC X(10).
05 VENDOR-CONTACT PIC X(30).
05 VENDOR-PHONE PIC X(15).
FD VOUCHER-FILE
LABEL RECORDS ARE STANDARD.
01 VOUCHER-RECORD.
05 VOUCHER-NUMBER PIC 9(5).
05 VOUCHER-VENDOR PIC 9(5).
05 VOUCHER-INVOICE PIC X(15).
05 VOUCHER-FOR PIC X(30).
05 VOUCHER-AMOUNT PIC S9(6)V99.
05 VOUCHER-DATE PIC 9(8).
05 VOUCHER-DUE PIC 9(8).
05 VOUCHER-DEDUCTIBLE PIC X.
05 VOUCHER-SELECTED PIC X.
05 VOUCHER-PAID-AMOUNT PIC S9(6)V99.
05 VOUCHER-PAID-DATE PIC 9(8).
05 VOUCHER-CHECK-NO PIC 9(6).
FD CONTROL-FILE
LABEL RECORDS ARE STANDARD.
01 CONTROL-RECORD.
05 CONTROL-KEY PIC 9.
05 CONTROL-LAST-VOUCHER PIC 9(5).
WORKING-STORAGE SECTION.
77 MENU-PICK PIC 9.
88 MENU-PICK-IS-VALID VALUES 0 THRU 4.
77 THE-MODE PIC X(7).
77 WHICH-FIELD PIC 9.
77 OK-TO-DELETE PIC X.
77 VOUCHER-RECORD-FOUND PIC X.
77 CONTROL-RECORD-FOUND PIC X.
77 VENDOR-RECORD-FOUND PIC X.
77 A-DUMMY PIC X.
77 ADD-ANOTHER PIC X.
77 VOUCHER-NUMBER-FIELD PIC Z(5).
77 VOUCHER-AMOUNT-FIELD PIC 99999999.
77 VOUCHER-PAID-AMOUNT-FIELD PIC ZZZ,ZZ9.99-.
77 ERROR-MESSAGE PIC X(79) VALUE SPACE.
77 UPPER-ALPHA PIC X(26) VALUE "ABCDEFGHIJKLMNOPQRSTUVWXYZ".
77 LOWER-ALPHA PIC X(26) VALUE "abcdefghijklmnopqrstuvwxyz".
77 FORMATTED-DATE PIC 99999999.
77 DATE-MMDDCCYY PIC 9(8).
77 DATE-QUOTIENT PIC 9999.
77 DATE-REMAINDER PIC 9999.
77 VALID-DATE-FLAG PIC X.
88 DATE-IS-INVALID VALUE "N".
88 DATE-IS-ZERO VALUE "0".
88 DATE-IS-VALID VALUE "Y".
88 DATE-IS-OK VALUES "Y" "0".
01 DATE-CCYYMMDD PIC 9(8).
01 FILLER REDEFINES DATE-CCYYMMDD.
05 DATE-YYYY PIC 9999.
05 DATE-MM PIC 99.
05 DATE-DD PIC 99.
77 DATE-PROMPT PIC X(50) VALUE SPACE.
77 DATE-ERROR-MESSAGE PIC X(50) VALUE SPACE.
77 ZERO-DATE-IS-OK PIC X VALUE "N".
PROCEDURE DIVISION.
PROGRAM-BEGIN.
PERFORM OPENING-PROCEDURE.
PERFORM MAIN-PROCESS.
PERFORM CLOSING-PROCEDURE.
PROGRAM-EXIT.
EXIT PROGRAM.
PROGRAM-DONE.
STOP RUN.
OPENING-PROCEDURE.
OPEN I-O VOUCHER-FILE.
OPEN I-O VENDOR-FILE.
OPEN I-O CONTROL-FILE.
CLOSING-PROCEDURE.
CLOSE VOUCHER-FILE.
CLOSE VENDOR-FILE.
CLOSE CONTROL-FILE.
MAIN-PROCESS.
PERFORM GET-MENU-PICK.
PERFORM MAINTAIN-THE-FILE
UNTIL MENU-PICK = 0.
*---------------------------------
* MENU
*---------------------------------
GET-MENU-PICK.
PERFORM DISPLAY-THE-MENU.
PERFORM ACCEPT-MENU-PICK.
PERFORM RE-ACCEPT-MENU-PICK
UNTIL MENU-PICK-IS-VALID.
DISPLAY-THE-MENU.
PERFORM CLEAR-SCREEN.
DISPLAY " PLEASE SELECT:".
DISPLAY " ".
DISPLAY " 1. ADD RECORDS".
DISPLAY " 2. CHANGE A RECORD".
DISPLAY " 3. LOOK UP A RECORD".
DISPLAY " 4. DELETE A RECORD".
DISPLAY " ".
DISPLAY " 0. EXIT".
PERFORM SCROLL-LINE 8 TIMES.
ACCEPT-MENU-PICK.
DISPLAY "YOUR CHOICE (0-4)?".
ACCEPT MENU-PICK FROM CONSOLE.
RE-ACCEPT-MENU-PICK.
DISPLAY "INVALID SELECTION - PLEASE RE-TRY.".
PERFORM ACCEPT-MENU-PICK.
CLEAR-SCREEN.
PERFORM SCROLL-LINE 25 TIMES.
SCROLL-LINE.
DISPLAY " ".
MAINTAIN-THE-FILE.
PERFORM DO-THE-PICK.
PERFORM GET-MENU-PICK.
DO-THE-PICK.
IF MENU-PICK = 1
PERFORM ADD-MODE
ELSE
IF MENU-PICK = 2
PERFORM CHANGE-MODE
ELSE
IF MENU-PICK = 3
PERFORM INQUIRE-MODE
ELSE
IF MENU-PICK = 4
PERFORM DELETE-MODE.
*---------------------------------
* ADD
*---------------------------------
ADD-MODE.
MOVE "ADD" TO THE-MODE.
MOVE "Y" TO ADD-ANOTHER.
PERFORM GET-NEW-RECORD-KEY.
PERFORM ADD-RECORDS
UNTIL ADD-ANOTHER = "N".
GET-NEW-RECORD-KEY.
PERFORM ACCEPT-NEW-RECORD-KEY.
PERFORM RE-ACCEPT-NEW-RECORD-KEY
UNTIL VOUCHER-RECORD-FOUND = "N".
PERFORM DISPLAY-VOUCHER-NUMBER.
ACCEPT-NEW-RECORD-KEY.
PERFORM INIT-VOUCHER-RECORD.
PERFORM RETRIEVE-NEXT-VOUCHER-NUMBER.
PERFORM READ-VOUCHER-RECORD.
RE-ACCEPT-NEW-RECORD-KEY.
PERFORM ACCEPT-NEW-RECORD-KEY.
RETRIEVE-NEXT-VOUCHER-NUMBER.
PERFORM READ-CONTROL-RECORD.
ADD 1 TO CONTROL-LAST-VOUCHER.
MOVE CONTROL-LAST-VOUCHER TO VOUCHER-NUMBER.
PERFORM REWRITE-CONTROL-RECORD.
ADD-RECORDS.
PERFORM ENTER-REMAINING-FIELDS.
PERFORM WRITE-VOUCHER-RECORD.
PERFORM GET-ADD-ANOTHER.
GET-ADD-ANOTHER.
PERFORM ACCEPT-ADD-ANOTHER.
PERFORM RE-ACCEPT-ADD-ANOTHER
UNTIL ADD-ANOTHER = "Y" OR "N".
ACCEPT-ADD-ANOTHER.
DISPLAY "ADD ANOTHER VOUCHER(Y/N)?".
ACCEPT ADD-ANOTHER FROM CONSOLE.
INSPECT ADD-ANOTHER
CONVERTING LOWER-ALPHA
TO UPPER-ALPHA.
IF ADD-ANOTHER = "Y"
PERFORM GET-NEW-RECORD-KEY.
RE-ACCEPT-ADD-ANOTHER.
DISPLAY "YOU MUST ENTER YES OR NO".
PERFORM ACCEPT-ADD-ANOTHER.
ENTER-REMAINING-FIELDS.
PERFORM ENTER-VOUCHER-VENDOR.
PERFORM ENTER-VOUCHER-INVOICE.
PERFORM ENTER-VOUCHER-FOR.
PERFORM ENTER-VOUCHER-AMOUNT.
PERFORM ENTER-VOUCHER-DATE.
PERFORM ENTER-VOUCHER-DUE.
PERFORM ENTER-VOUCHER-DEDUCTIBLE.
PERFORM ENTER-VOUCHER-SELECTED.
*---------------------------------
* CHANGE
*---------------------------------
CHANGE-MODE.
MOVE "CHANGE" TO THE-MODE.
PERFORM GET-EXISTING-RECORD.
PERFORM CHANGE-RECORDS
UNTIL VOUCHER-NUMBER = ZEROES.
CHANGE-RECORDS.
PERFORM GET-FIELD-TO-CHANGE.
PERFORM CHANGE-ONE-FIELD
UNTIL WHICH-FIELD = ZERO.
PERFORM GET-EXISTING-RECORD.
GET-FIELD-TO-CHANGE.
PERFORM DISPLAY-ALL-FIELDS.
PERFORM ASK-WHICH-FIELD.
ASK-WHICH-FIELD.
PERFORM ACCEPT-WHICH-FIELD.
PERFORM RE-ACCEPT-WHICH-FIELD
UNTIL WHICH-FIELD < 8.
ACCEPT-WHICH-FIELD.
DISPLAY "ENTER THE NUMBER OF THE FIELD".
DISPLAY "TO CHANGE (1-7) OR 0 TO EXIT".
ACCEPT WHICH-FIELD FROM CONSOLE.
RE-ACCEPT-WHICH-FIELD.
DISPLAY "INVALID ENTRY".
PERFORM ACCEPT-WHICH-FIELD.
CHANGE-ONE-FIELD.
PERFORM CHANGE-THIS-FIELD.
PERFORM GET-FIELD-TO-CHANGE.
CHANGE-THIS-FIELD.
IF WHICH-FIELD = 1
PERFORM ENTER-VOUCHER-VENDOR.
IF WHICH-FIELD = 2
PERFORM ENTER-VOUCHER-INVOICE.
IF WHICH-FIELD = 3
PERFORM ENTER-VOUCHER-FOR.
IF WHICH-FIELD = 4
PERFORM ENTER-VOUCHER-AMOUNT.
IF WHICH-FIELD = 5
PERFORM ENTER-VOUCHER-DATE.
IF WHICH-FIELD = 6
PERFORM ENTER-VOUCHER-DUE.
IF WHICH-FIELD = 7
PERFORM ENTER-VOUCHER-DEDUCTIBLE.
PERFORM REWRITE-VOUCHER-RECORD.
*---------------------------------
* INQUIRE
*---------------------------------
INQUIRE-MODE.
MOVE "DISPLAY" TO THE-MODE.
PERFORM GET-EXISTING-RECORD.
PERFORM INQUIRE-RECORDS
UNTIL VOUCHER-NUMBER = ZEROES.
INQUIRE-RECORDS.
PERFORM DISPLAY-ALL-FIELDS.
PERFORM GET-EXISTING-RECORD.
*---------------------------------
* DELETE
*---------------------------------
DELETE-MODE.
MOVE "DELETE" TO THE-MODE.
PERFORM GET-EXISTING-RECORD.
PERFORM DELETE-RECORDS
UNTIL VOUCHER-NUMBER = ZEROES.
DELETE-RECORDS.
PERFORM DISPLAY-ALL-FIELDS.
PERFORM ASK-OK-TO-DELETE.
IF OK-TO-DELETE = "Y"
PERFORM DELETE-VOUCHER-RECORD.
PERFORM GET-EXISTING-RECORD.
ASK-OK-TO-DELETE.
PERFORM ACCEPT-OK-TO-DELETE.
PERFORM RE-ACCEPT-OK-TO-DELETE
UNTIL OK-TO-DELETE = "Y" OR "N".
ACCEPT-OK-TO-DELETE.
DISPLAY "DELETE THIS RECORD (Y/N)?".
ACCEPT OK-TO-DELETE.
INSPECT OK-TO-DELETE
CONVERTING LOWER-ALPHA TO UPPER-ALPHA.
RE-ACCEPT-OK-TO-DELETE.
DISPLAY "YOU MUST ENTER YES OR NO".
PERFORM ACCEPT-OK-TO-DELETE.
*---------------------------------
* Routines shared by all modes
*---------------------------------
INIT-VOUCHER-RECORD.
MOVE SPACE TO VOUCHER-INVOICE
VOUCHER-FOR
VOUCHER-DEDUCTIBLE
VOUCHER-SELECTED.
MOVE ZEROES TO VOUCHER-NUMBER
VOUCHER-VENDOR
VOUCHER-AMOUNT
VOUCHER-DATE
VOUCHER-DUE
VOUCHER-PAID-AMOUNT
VOUCHER-PAID-DATE
VOUCHER-CHECK-NO.
*---------------------------------
* Routines shared Add and Change
*---------------------------------
ENTER-VOUCHER-VENDOR.
PERFORM ACCEPT-VOUCHER-VENDOR.
PERFORM RE-ACCEPT-VOUCHER-VENDOR
UNTIL VOUCHER-VENDOR NOT = ZEROES AND
VENDOR-RECORD-FOUND = "Y".
ACCEPT-VOUCHER-VENDOR.
DISPLAY "ENTER VENDOR".
ACCEPT VOUCHER-VENDOR FROM CONSOLE.
PERFORM EDIT-CHECK-VOUCHER-VENDOR.
PERFORM DISPLAY-VOUCHER-VENDOR.
RE-ACCEPT-VOUCHER-VENDOR.
DISPLAY ERROR-MESSAGE.
PERFORM ACCEPT-VOUCHER-VENDOR.
EDIT-CHECK-VOUCHER-VENDOR.
PERFORM EDIT-VOUCHER-VENDOR.
PERFORM CHECK-VOUCHER-VENDOR.
EDIT-VOUCHER-VENDOR.
CHECK-VOUCHER-VENDOR.
PERFORM VOUCHER-VENDOR-REQUIRED.
IF VOUCHER-VENDOR NOT = ZEROES
PERFORM VOUCHER-VENDOR-ON-FILE.
VOUCHER-VENDOR-REQUIRED.
IF VOUCHER-VENDOR = ZEROES
MOVE "VENDOR MUST BE ENTERED"
TO ERROR-MESSAGE.
VOUCHER-VENDOR-ON-FILE.
MOVE VOUCHER-VENDOR TO VENDOR-NUMBER.
PERFORM READ-VENDOR-RECORD.
IF VENDOR-RECORD-FOUND = "N"
MOVE "VENDOR NOT ON FILE"
TO ERROR-MESSAGE.
ENTER-VOUCHER-INVOICE.
PERFORM ACCEPT-VOUCHER-INVOICE.
PERFORM RE-ACCEPT-VOUCHER-INVOICE
UNTIL VOUCHER-INVOICE NOT = SPACE.
ACCEPT-VOUCHER-INVOICE.
DISPLAY "ENTER INVOICE NUMBER".
ACCEPT VOUCHER-INVOICE.
INSPECT VOUCHER-INVOICE
CONVERTING LOWER-ALPHA
TO UPPER-ALPHA.
RE-ACCEPT-VOUCHER-INVOICE.
DISPLAY "INVOICE MUST BE ENTERED".
PERFORM ACCEPT-VOUCHER-INVOICE.
ENTER-VOUCHER-FOR.
PERFORM ACCEPT-VOUCHER-FOR.
PERFORM RE-ACCEPT-VOUCHER-FOR
UNTIL VOUCHER-FOR NOT = SPACE.
ACCEPT-VOUCHER-FOR.
DISPLAY "WHAT FOR?".
ACCEPT VOUCHER-FOR FROM CONSOLE.
INSPECT VOUCHER-FOR
CONVERTING LOWER-ALPHA
TO UPPER-ALPHA.
RE-ACCEPT-VOUCHER-FOR.
DISPLAY "A DESCRIPTION MUST BE ENTERED".
PERFORM ACCEPT-VOUCHER-FOR.
ENTER-VOUCHER-AMOUNT.
PERFORM ACCEPT-VOUCHER-AMOUNT.
PERFORM RE-ACCEPT-VOUCHER-AMOUNT
UNTIL VOUCHER-AMOUNT NOT = ZEROES.
ACCEPT-VOUCHER-AMOUNT.
DISPLAY "ENTER INVOICE AMOUNT".
ACCEPT VOUCHER-AMOUNT-FIELD FROM CONSOLE.
MOVE VOUCHER-AMOUNT-FIELD TO VOUCHER-AMOUNT.
RE-ACCEPT-VOUCHER-AMOUNT.
DISPLAY "AMOUNT MUST NOT BE ZERO".
PERFORM ACCEPT-VOUCHER-AMOUNT.
ENTER-VOUCHER-DATE.
MOVE "N" TO ZERO-DATE-IS-OK.
MOVE "ENTER INVOICE DATE(MM/DD/CCYY)?"
TO DATE-PROMPT.
MOVE "AN INVOICE DATE IS REQUIRED"
TO DATE-ERROR-MESSAGE.
PERFORM GET-A-DATE.
MOVE DATE-CCYYMMDD TO VOUCHER-DATE.
ENTER-VOUCHER-DUE.
MOVE "N" TO ZERO-DATE-IS-OK.
MOVE "ENTER DUE DATE(MM/DD/CCYY)?"
TO DATE-PROMPT.
MOVE "A DUE DATE IS REQUIRED"
TO DATE-ERROR-MESSAGE.
PERFORM GET-A-DATE.
MOVE DATE-CCYYMMDD TO VOUCHER-DUE.
ENTER-VOUCHER-DEDUCTIBLE.
PERFORM ACCEPT-VOUCHER-DEDUCTIBLE.
PERFORM RE-ACCEPT-VOUCHER-DEDUCTIBLE
UNTIL VOUCHER-DEDUCTIBLE = "Y" OR "N".
ACCEPT-VOUCHER-DEDUCTIBLE.
DISPLAY "IS THIS TAX DEDUCTIBLE?".
ACCEPT VOUCHER-DEDUCTIBLE FROM CONSOLE.
INSPECT VOUCHER-DEDUCTIBLE
CONVERTING LOWER-ALPHA
TO UPPER-ALPHA.
RE-ACCEPT-VOUCHER-DEDUCTIBLE.
DISPLAY "MUST BE YES OR NO".
PERFORM ACCEPT-VOUCHER-DEDUCTIBLE.
ENTER-VOUCHER-SELECTED.
MOVE "N" TO VOUCHER-SELECTED.
*---------------------------------
* Routines shared by Change,
* Inquire and Delete
*---------------------------------
GET-EXISTING-RECORD.
PERFORM ACCEPT-EXISTING-KEY.
PERFORM RE-ACCEPT-EXISTING-KEY
UNTIL VOUCHER-RECORD-FOUND = "Y" OR
VOUCHER-NUMBER = ZEROES.
ACCEPT-EXISTING-KEY.
PERFORM INIT-VOUCHER-RECORD.
PERFORM ENTER-VOUCHER-NUMBER.
IF VOUCHER-NUMBER NOT = ZEROES
PERFORM READ-VOUCHER-RECORD.
RE-ACCEPT-EXISTING-KEY.
DISPLAY "RECORD NOT FOUND"
PERFORM ACCEPT-EXISTING-KEY.
ENTER-VOUCHER-NUMBER.
DISPLAY "ENTER VOUCHER NUMBER TO "
THE-MODE.
ACCEPT VOUCHER-NUMBER FROM CONSOLE.
DISPLAY-ALL-FIELDS.
DISPLAY " ".
PERFORM DISPLAY-VOUCHER-NUMBER.
PERFORM DISPLAY-VOUCHER-VENDOR.
PERFORM DISPLAY-VOUCHER-INVOICE.
PERFORM DISPLAY-VOUCHER-FOR.
PERFORM DISPLAY-VOUCHER-AMOUNT.
PERFORM DISPLAY-VOUCHER-DATE.
PERFORM DISPLAY-VOUCHER-DUE.
PERFORM DISPLAY-VOUCHER-DEDUCTIBLE.
IF VOUCHER-PAID-DATE = ZEROES
PERFORM DISPLAY-VOUCHER-SELECTED.
IF VOUCHER-PAID-DATE NOT = ZEROES
PERFORM DISPLAY-VOUCHER-PAID-AMOUNT
PERFORM DISPLAY-VOUCHER-PAID-DATE
PERFORM DISPLAY-VOUCHER-CHECK-NO.
DISPLAY " ".
DISPLAY-VOUCHER-NUMBER.
DISPLAY " VOUCHER NUMBER: " VOUCHER-NUMBER.
DISPLAY-VOUCHER-VENDOR.
PERFORM VOUCHER-VENDOR-ON-FILE.
IF VENDOR-RECORD-FOUND = "N"
MOVE "**Not found**" TO VENDOR-NAME.
DISPLAY "1. VENDOR: "
VOUCHER-VENDOR " "
VENDOR-NAME.
DISPLAY-VOUCHER-INVOICE.
DISPLAY "2. INVOICE: " VOUCHER-INVOICE.
DISPLAY-VOUCHER-FOR.
DISPLAY "3. FOR: " VOUCHER-FOR.
DISPLAY-VOUCHER-AMOUNT.
MOVE VOUCHER-AMOUNT TO VOUCHER-AMOUNT-FIELD.
DISPLAY "4. AMOUNT: " VOUCHER-AMOUNT-FIELD.
DISPLAY-VOUCHER-DATE.
MOVE VOUCHER-DATE TO DATE-CCYYMMDD.
PERFORM FORMAT-THE-DATE.
DISPLAY "5. INVOICE DATE: " FORMATTED-DATE.
DISPLAY-VOUCHER-DUE.
MOVE VOUCHER-DUE TO DATE-CCYYMMDD.
PERFORM FORMAT-THE-DATE.
DISPLAY "6. DUE DATE: " FORMATTED-DATE.
DISPLAY-VOUCHER-DEDUCTIBLE.
DISPLAY "7. DEDUCTIBLE: " VOUCHER-DEDUCTIBLE.
DISPLAY-VOUCHER-SELECTED.
DISPLAY " SELECTED FOR PAYMENT: " VOUCHER-SELECTED.
DISPLAY-VOUCHER-PAID-AMOUNT.
MOVE VOUCHER-PAID-AMOUNT TO VOUCHER-PAID-AMOUNT-FIELD.
DISPLAY " PAID: " VOUCHER-PAID-AMOUNT-FIELD.
DISPLAY-VOUCHER-PAID-DATE.
MOVE VOUCHER-PAID-DATE TO DATE-CCYYMMDD.
PERFORM FORMAT-THE-DATE.
DISPLAY " PAID ON: " FORMATTED-DATE.
DISPLAY-VOUCHER-CHECK-NO.
DISPLAY " CHECK: " VOUCHER-CHECK-NO.
*---------------------------------
* File I-O Routines
*---------------------------------
READ-VOUCHER-RECORD.
MOVE "Y" TO VOUCHER-RECORD-FOUND.
READ VOUCHER-FILE RECORD
INVALID KEY
MOVE "N" TO VOUCHER-RECORD-FOUND.
*or READ VOUCHER-FILE RECORD WITH LOCK
* INVALID KEY
* MOVE "N" TO VOUCHER-RECORD-FOUND.
*or READ VOUCHER-FILE RECORD WITH HOLD
* INVALID KEY
* MOVE "N" TO VOUCHER-RECORD-FOUND.
WRITE-VOUCHER-RECORD.
WRITE VOUCHER-RECORD
INVALID KEY
DISPLAY "RECORD ALREADY ON FILE".
REWRITE-VOUCHER-RECORD.
REWRITE VOUCHER-RECORD
INVALID KEY
DISPLAY "ERROR REWRITING VENDOR RECORD".
DELETE-VOUCHER-RECORD.
DELETE VOUCHER-FILE RECORD
INVALID KEY
DISPLAY "ERROR DELETING VENDOR RECORD".
READ-VENDOR-RECORD.
MOVE "Y" TO VENDOR-RECORD-FOUND.
READ VENDOR-FILE RECORD
INVALID KEY
MOVE "N" TO VENDOR-RECORD-FOUND.
READ-CONTROL-RECORD.
MOVE 1 TO CONTROL-KEY.
MOVE "Y" TO CONTROL-RECORD-FOUND.
READ CONTROL-FILE RECORD
INVALID KEY
MOVE "N" TO CONTROL-RECORD-FOUND
DISPLAY "CONTROL FILE IS INVALID".
REWRITE-CONTROL-RECORD.
REWRITE CONTROL-RECORD
INVALID KEY
DISPLAY "ERROR REWRITING CONTROL RECORD".
GET-A-DATE.
PERFORM ACCEPT-A-DATE.
PERFORM RE-ACCEPT-A-DATE
UNTIL DATE-IS-OK.
ACCEPT-A-DATE.
IF DATE-PROMPT = SPACE
DISPLAY "ENTER A DATE (MM/DD/YYYY)"
ELSE
DISPLAY DATE-PROMPT.
ACCEPT FORMATTED-DATE FROM CONSOLE.
PERFORM EDIT-CHECK-DATE.
RE-ACCEPT-A-DATE.
IF DATE-ERROR-MESSAGE = SPACE
DISPLAY "INVALID DATE"
ELSE
DISPLAY DATE-ERROR-MESSAGE.
PERFORM ACCEPT-A-DATE.
EDIT-CHECK-DATE.
PERFORM EDIT-DATE.
PERFORM CHECK-DATE.
MOVE DATE-MMDDCCYY TO FORMATTED-DATE.
EDIT-DATE.
MOVE FORMATTED-DATE TO DATE-MMDDCCYY.
PERFORM CONVERT-TO-CCYYMMDD.
*---------------------------------
* USAGE:
* MOVE date(ccyymmdd) TO DATE-CCYYMMDD.
* PERFORM CONVERT-TO-MMDDCCYY.
*
* RETURNS:
* DATE-MMDDCCYY.
*---------------------------------
CONVERT-TO-MMDDCCYY.
COMPUTE DATE-MMDDCCYY =
DATE-CCYYMMDD * 10000.0001.
*---------------------------------
* USAGE:
* MOVE date(mmddccyy) TO DATE-MMDDCCYY.
* PERFORM CONVERT-TO-CCYYMMDD.
*
* RETURNS:
* DATE-CCYYMMDD.
*---------------------------------
CONVERT-TO-CCYYMMDD.
COMPUTE DATE-CCYYMMDD =
DATE-MMDDCCYY * 10000.0001.
*---------------------------------
CHECK-DATE.
MOVE "Y" TO VALID-DATE-FLAG.
IF DATE-CCYYMMDD = ZEROES
IF ZERO-DATE-IS-OK = "Y"
MOVE "0" TO VALID-DATE-FLAG
ELSE
MOVE "N" TO VALID-DATE-FLAG
ELSE
IF DATE-MM < 1 OR DATE-MM > 12
MOVE "N" TO VALID-DATE-FLAG
ELSE
IF DATE-DD < 1 OR DATE-DD > 31
MOVE "N" TO VALID-DATE-FLAG
ELSE
IF (DATE-DD > 30) AND
(DATE-MM = 2 OR 4 OR 6 OR 9 OR 11)
MOVE "N" TO VALID-DATE-FLAG
ELSE
IF DATE-DD > 29 AND DATE-MM = 2
MOVE "N" TO VALID-DATE-FLAG
ELSE
IF DATE-DD = 29 AND DATE-MM = 2
DIVIDE DATE-YYYY BY 400 GIVING DATE-QUOTIENT
REMAINDER DATE-REMAINDER
IF DATE-REMAINDER = 0
MOVE "Y" TO VALID-DATE-FLAG
ELSE
DIVIDE DATE-YYYY BY 100 GIVING DATE-QUOTIENT
REMAINDER DATE-REMAINDER
IF DATE-REMAINDER = 0
MOVE "N" TO VALID-DATE-FLAG
ELSE
DIVIDE DATE-YYYY BY 4 GIVING DATE-QUOTIENT
REMAINDER DATE-REMAINDER
IF DATE-REMAINDER = 0
MOVE "Y" TO VALID-DATE-FLAG
ELSE
MOVE "N" TO VALID-DATE-FLAG.
*---------------------------------
* USAGE:
* MOVE date(ccyymmdd) TO DATE-CCYYMMDD.
* PERFORM FORMAT-THE-DATE.
*
* RETURNS:
* FORMATTED-DATE
* DATE-MMDDCCYY.
*---------------------------------
FORMAT-THE-DATE.
PERFORM CONVERT-TO-MMDDCCYY.
MOVE DATE-MMDDCCYY TO FORMATTED-DATE.
|
Advertisement
| Hall of Fame |