Skip to content

Commit

Permalink
Create Fibonacci Sequence.cbl
Browse files Browse the repository at this point in the history
Signed-off-by: Dillon Depeel <dillondepeel@hotmail.com>
  • Loading branch information
DillonDepeel committed Apr 27, 2023
1 parent 505727a commit 5e99951
Showing 1 changed file with 86 additions and 0 deletions.
86 changes: 86 additions & 0 deletions Fibonacci Sequence.cbl
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.

0 comments on commit 5e99951

Please sign in to comment.