Created
March 11, 2013 23:00
-
-
Save odiseo42/5138721 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
IDENTIFICATION DIVISION. | |
PROGRAM-ID. chgmaker. | |
DATE-WRITTEN. 1/28/2013. | |
* AUTHOR Dr_Legacy | |
* REMARKS reddit dailyprogrammer challenge #119 | |
ENVIRONMENT DIVISION. | |
CONFIGURATION SECTION. | |
INPUT-OUTPUT SECTION. | |
FILE-CONTROL. | |
DATA DIVISION. | |
FILE SECTION. | |
WORKING-STORAGE SECTION. | |
01 AMOUNT-IN PIC X(10). | |
01 NFRAC PIC X(5). | |
01 NFRAC9 REDEFINES NFRAC PIC 9(5). | |
01 N1 PIC X(10). | |
01 N2 PIC X(10) VALUE ZEROS. | |
01 N29 REDEFINES N2 PIC 9(10). | |
01 CHARCOUNT PIC 99 VALUE ZERO. | |
01 CC2 PIC 99 VALUE ZERO. | |
01 AMOUNT-WORKING PIC 9(11)V99. | |
01 QUARTER-VALUE PIC 9V99 VALUE 0.25. | |
01 DIME-VALUE PIC 9V99 VALUE 0.10. | |
01 NICKEL-VALUE PIC 9V99 VALUE 0.05. | |
01 PENNY-VALUE PIC 9V99 VALUE 0.01. | |
01 QUARTER-COUNT PIC 9(11) VALUE ZERO. | |
01 DIME-COUNT PIC 9 VALUE ZERO. | |
01 NICKEL-COUNT PIC 9 VALUE ZERO. | |
01 PENNY-COUNT PIC 9 VALUE ZERO. | |
01 AMOUNT-OUT PIC Z(10)9. | |
***** | |
PROCEDURE DIVISION. | |
***** | |
MAIN-LOGIC SECTION. | |
MAIN-BEGIN. | |
DISPLAY "CHANGE MAKING PROGRAM". | |
DISPLAY "ENTER AMOUNT". | |
ACCEPT AMOUNT-IN. | |
IF AMOUNT-IN EQUAL SPACE THEN | |
GO TO EXIT-PROGRAM. | |
*** old COBOL doesn't have any really fancy string functions | |
UNSTRING AMOUNT-IN | |
DELIMITED BY ALL SPACES | |
OR "." | |
INTO N1, NFRAC. | |
INSPECT NFRAC REPLACING ALL SPACE BY ZERO. | |
COMPUTE AMOUNT-WORKING ROUNDED = NFRAC9 / 100000 . | |
IF N1 NOT EQUAL SPACE THEN | |
PERFORM VARYING CHARCOUNT FROM 10 BY -1 | |
UNTIL N1(CHARCOUNT:1) NOT = SPACE | |
*** reference modification. YOU KIDS HAVE IT EASY I TELL YOU | |
END-PERFORM | |
COMPUTE CC2 = 10 - CHARCOUNT + 1 | |
STRING N1(1:CHARCOUNT) DELIMITED SIZE INTO N2 | |
POINTER CC2 | |
ADD AMOUNT-WORKING N29 GIVING AMOUNT-WORKING | |
. | |
DISPLAY "". | |
DIVIDE AMOUNT-WORKING BY QUARTER-VALUE | |
GIVING QUARTER-COUNT | |
REMAINDER AMOUNT-WORKING. | |
IF QUARTER-COUNT IS GREATER THAN ZERO | |
MOVE QUARTER-COUNT TO AMOUNT-OUT | |
DISPLAY "QUARTERS: " AMOUNT-OUT. | |
DIVIDE AMOUNT-WORKING BY DIME-VALUE | |
GIVING DIME-COUNT | |
REMAINDER AMOUNT-WORKING. | |
IF DIME-COUNT IS GREATER THAN ZERO | |
MOVE DIME-COUNT TO AMOUNT-OUT | |
DISPLAY "DIMES: " AMOUNT-OUT. | |
DIVIDE AMOUNT-WORKING BY NICKEL-VALUE | |
GIVING NICKEL-COUNT | |
REMAINDER AMOUNT-WORKING. | |
IF NICKEL-COUNT IS GREATER THAN ZERO | |
MOVE NICKEL-COUNT TO AMOUNT-OUT | |
DISPLAY "NICKELS: " AMOUNT-OUT. | |
DIVIDE AMOUNT-WORKING BY PENNY-VALUE | |
GIVING PENNY-COUNT | |
REMAINDER AMOUNT-WORKING. | |
IF PENNY-COUNT IS GREATER THAN ZERO | |
MOVE PENNY-COUNT TO AMOUNT-OUT | |
DISPLAY "PENNIES: " AMOUNT-OUT. | |
IF AMOUNT-WORKING IS GREATER THAN ZERO | |
DISPLAY "wtf ". | |
MAIN-END-PROGRAM. | |
GO TO EXIT-PROGRAM. | |
MAIN-EXIT. | |
EXIT. | |
/ | |
DRLEGACY-MISC SECTION. | |
EXIT-PROGRAM. | |
EXIT PROGRAM. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment