以前の呼び出しがまだアクティブなときに、プログラムへの再帰再入を可能にするため、 PROGRAM-ID 段落に RECURSIVE 文節をコーディングします。 RECURSIVE 文節を使用してプログラムを再帰的プログラムにする例、 および再帰的プログラムでローカル・ストレージ・セクションのデータ項目を使用する方法 を、以下に示します。
5722WDS V5R4M0 060210 LN IBM ILE COBOL MYLIB/FACTORIAL ISERIES 06/02/15 17:25:51 ページ 2
ソ ー ス
STMT PL SEQNBR -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN S コピー名 変更日付
1 000100 IDENTIFICATION DIVISION.
2 000200 PROGRAM-ID. FACTORIAL RECURSIVE.
000300
3 000400 ENVIRONMENT DIVISION.
4 000500 CONFIGURATION SECTION.
5 000600 SOURCE-COMPUTER. IBM-ISERIES.
6 000700 OBJECT-COMPUTER. IBM-ISERIES.
000800
7 000900 DATA DIVISION.
8 001000 WORKING-STORAGE SECTION.
9 001100 01 NUMB PIC 9(4) VALUE 5.
10 001200 01 FACT PIC 9(8) VALUE 0.
001300
11 001400 LOCAL-STORAGE SECTION.
12 001500 01 NUM PIC 9(4).
001600
13 001700 PROCEDURE DIVISION.
14 001800 MOVE NUMB TO NUM.
15 001900 IF NUMB = 0
16 002000 MOVE 1 TO FACT
002100 ELSE
17 002200 SUBTRACT 1 FROM NUMB
18 002300 CALL "FACTORIAL"
19 002400 MULTIPLY NUM BY FACT
002500 END-IF.
20 002600 DISPLAY NUM "! = " FACT.
21 002700 GOBACK.
22 002800 END PROGRAM FACTORIAL.
* * * * * ソ ー ス 仕 様 の 終 わ り * * * * *
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.