Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 プログラミング・ガイド


例: ストレージ・セクション

以下に、WORKING-STORAGELOCAL-STORAGE の両方を使用する再帰的プログラムの例を示します。

CBL pgmn(lu)
*********************************
* Recursive Program - Factorials
*********************************
 IDENTIFICATION DIVISION.
 Program-Id. factorial recursive.
 ENVIRONMENT DIVISION.
 DATA DIVISION.
 Working-Storage Section.
 01  numb  pic 9(4)  value 5.
 01  fact  pic 9(8)  value 0.
 Local-Storage Section.
 01  num  pic 9(4).
 PROCEDURE DIVISION.
     move numb to num.

     if numb = 0
        move 1 to fact
     else
        subtract 1 from numb
        call 'factorial'
        multiply num by fact
     end-if.

     display num '! = ' fact.
     goback.
 End Program factorial.

このプログラムは、次のような出力を生成します。

0000! = 00000001
0001! = 00000001
0002! = 00000002
0003! = 00000006
0004! = 00000024
0005! = 00000120

次の表は、プログラムの連続する再帰呼び出し (CALL) および結果として起こる戻り (GOBACK) における、LOCAL-STORAGE および WORKING-STORAGE 内のデータ項目の値の変化を示しています。戻り時、fact は 5! の値を次々に累算します (5 階乗)。

再帰呼び出し (CALL) LOCAL-STORAGEnum の値 WORKING-STORAGEnumb の値 WORKING-STORAGEfact の値
メイン 5 5 0
1 4 4 0
2 3 3 0
3 2 2 0
4 1 1 0
5 0 0 0

 

戻り (GOBACK) LOCAL-STORAGEnum の値 WORKING-STORAGEnumb の値 WORKING-STORAGEfact の値
5 0 0 1
4 1 0 1
3 2 0 2
2 3 0 6
1 4 0 24
メイン 5 0 120

関連概念
WORKING-STORAGE と LOCAL-STORAGE の比較


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)