Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to Loops & PERFORM
Loops & PERFORM | Beginner | COBOL

Fibonacci Sequence

Problem Description

Generate first N Fibonacci numbers.

Expected Output

Fibonacci sequence

Hints

Each number is sum of previous two: 0, 1, 1, 2, 3, 5, 8...

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. FIBONACCI. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-N PIC 9(3). 01 WS-COUNT PIC 9(3) VALUE 0. 01 WS-PREV1 PIC 9(10) VALUE 0. 01 WS-PREV2 PIC 9(10) VALUE 1. 01 WS-CURRENT PIC 9(10). 01 WS-DISP PIC Z(9)9. PROCEDURE DIVISION. DISPLAY "HOW MANY FIBONACCI NUMBERS? ". ACCEPT WS-N. IF WS-N < 1 DISPLAY "ENTER POSITIVE NUMBER" STOP RUN END-IF. DISPLAY "FIBONACCI SEQUENCE:". MOVE WS-PREV1 TO WS-DISP. DISPLAY WS-DISP. ADD 1 TO WS-COUNT. IF WS-N > 1 MOVE WS-PREV2 TO WS-DISP DISPLAY WS-DISP ADD 1 TO WS-COUNT END-IF. PERFORM UNTIL WS-COUNT >= WS-N COMPUTE WS-CURRENT = WS-PREV1 + WS-PREV2 MOVE WS-CURRENT TO WS-DISP DISPLAY WS-DISP MOVE WS-PREV2 TO WS-PREV1 MOVE WS-CURRENT TO WS-PREV2 ADD 1 TO WS-COUNT END-PERFORM. STOP RUN.

Explanation:

F(n) = F(n-1) + F(n-2). Track two previous values.