-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Dillon Depeel <dillondepeel@hotmail.com>
- Loading branch information
1 parent
505727a
commit 5e99951
Showing
1 changed file
with
86 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
IDENTIFICATION DIVISION. | ||
PROGRAM-ID. FIB. | ||
DATA DIVISION. | ||
FILE SECTION. | ||
WORKING-STORAGE SECTION. | ||
01 N0 BINARY-C-LONG VALUE 0. | ||
01 N1 BINARY-C-LONG VALUE 1. | ||
01 SWAP BINARY-C-LONG VALUE 1. | ||
01 RESULT PIC Z(20)9. | ||
01 I BINARY-C-LONG VALUE 0. | ||
01 I-MAX BINARY-C-LONG VALUE 0. | ||
01 LARGEST-N BINARY-C-LONG VALUE 92. | ||
|
||
PROCEDURE DIVISION. | ||
*> THIS IS WHERE THE LABELS GET CALLED | ||
PERFORM MAIN | ||
PERFORM ENDFIB | ||
GOBACK. | ||
|
||
*> THIS ACCEPTS INPUT AND DETERMINES THE OUTPUT USING A EVAL STMT | ||
MAIN. | ||
DISPLAY "ENTER N TO GENERATE THE FIBONACCI SEQUENCE" | ||
ACCEPT I-MAX. | ||
|
||
EVALUATE TRUE | ||
WHEN I-MAX > LARGEST-N | ||
PERFORM INVALIDN | ||
|
||
WHEN I-MAX > 2 | ||
PERFORM CASEGREATERTHAN2 | ||
|
||
WHEN I-MAX = 2 | ||
PERFORM CASE2 | ||
|
||
WHEN I-MAX = 1 | ||
PERFORM CASE1 | ||
|
||
WHEN I-MAX = 0 | ||
PERFORM CASE0 | ||
|
||
WHEN OTHER | ||
PERFORM INVALIDN | ||
|
||
END-EVALUATE. | ||
|
||
STOP RUN. | ||
|
||
|
||
|
||
*> THE CASE FOR WHEN N = 0 | ||
CASE0. | ||
MOVE N0 TO RESULT. | ||
DISPLAY RESULT. | ||
|
||
*> THE CASE FOR WHEN N = 1 | ||
CASE1. | ||
PERFORM CASE0 | ||
MOVE N1 TO RESULT. | ||
DISPLAY RESULT. | ||
|
||
*> THE CASE FOR WHEN N = 2 | ||
CASE2. | ||
PERFORM CASE1 | ||
MOVE N1 TO RESULT. | ||
DISPLAY RESULT. | ||
|
||
*> THE CASE FOR WHEN N > 2 | ||
CASEGREATERTHAN2. | ||
PERFORM CASE1 | ||
PERFORM VARYING I FROM 1 BY 1 UNTIL I = I-MAX | ||
ADD N0 TO N1 GIVING SWAP | ||
MOVE N1 TO N0 | ||
MOVE SWAP TO N1 | ||
MOVE SWAP TO RESULT | ||
DISPLAY RESULT | ||
END-PERFORM. | ||
|
||
*> PROVIDE ERROR FOR INVALID INPUT | ||
INVALIDN. | ||
DISPLAY 'INVALID N VALUE. THE PROGRAM WILL NOW END'. | ||
|
||
*> END THE PROGRAM WITH A MESSAGE | ||
ENDFIB. | ||
DISPLAY "THE PROGRAM HAS COMPLETED AND WILL NOW END". | ||
|
||
END PROGRAM FIB. |