Skip to content

Instantly share code, notes, and snippets.

@y-taka-23
Created July 27, 2014 04:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save y-taka-23/55805538e0af5d407305 to your computer and use it in GitHub Desktop.
Save y-taka-23/55805538e0af5d407305 to your computer and use it in GitHub Desktop.
COBOL による Fibonacci 数の計算
IDENTIFICATION DIVISION.
PROGRAM-ID. FIBONACCI.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 ARGUMENT PIC 9(2).
01 RETURN-VALUE PIC 9(25).
01 RESULT PIC Z(25).
01 DP-TABLE.
03 VALS PIC 9(25) OCCURS 99.
01 TABLE-INDEX PIC 9(2).
01 AUX-INDEX-1 PIC 9(2).
01 AUX-INDEX-2 PIC 9(2).
PROCEDURE DIVISION.
*> 主処理
MAIN SECTION.
DISPLAY "Index: "
ACCEPT ARGUMENT.
PERFORM FIBONACCI.
MOVE RETURN-VALUE TO RESULT.
DISPLAY "Result: " RESULT.
STOP RUN.
*> ARGUMENT の Fibonacci 数を計算し RETURN-VALUE に格納
FIBONACCI SECTION.
MOVE 1 TO TABLE-INDEX.
PERFORM UNTIL TABLE-INDEX > ARGUMENT
MOVE 0 TO VALS(TABLE-INDEX)
EVALUATE TABLE-INDEX
WHEN 1
WHEN 2
MOVE 1 TO VALS(TABLE-INDEX)
WHEN OTHER
SUBTRACT 1 FROM TABLE-INDEX GIVING AUX-INDEX-1
SUBTRACT 2 FROM TABLE-INDEX GIVING AUX-INDEX-2
ADD VALS(AUX-INDEX-1) TO VALS(TABLE-INDEX)
ADD VALS(AUX-INDEX-2) TO VALS(TABLE-INDEX)
END-EVALUATE
ADD 1 TO TABLE-INDEX
END-PERFORM.
MOVE VALS(ARGUMENT) TO RETURN-VALUE.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment