COBOL: Fakultät

Programm zur Fakultätsberechnung in COBOL. Es wird das FIXED-Format verwendet.

Programmcode

fak.cob
        IDENTIFICATION DIVISION.
      *************************** 
        PROGRAM-ID. FAKULT.
      * AUTHOR: Stefan Naumann
      * DATA: 27.09.2015
 
        ENVIRONMENT DIVISION.
      ************************
        CONFIGURATION SECTION.
        SOURCE-COMPUTER. IBM-PC.
        OBJECT-COMPUTER. IBM-PC.
 
        DATA DIVISION.
      *****************
        WORKING-STORAGE SECTION.
 
        01 N PIC IS 99 VALUE IS 1.
        01 N-OUT PIC IS Z9.
 
      * 10^18 ist die maximal darstellbare Zahl in COBOL (74)
        01 FAK PIC IS 9(18) VALUE IS 1.
        01 FAK-OUT PIC IS Z(17)9.
        01 N-ENDE PIC IS 99.
 
        PROCEDURE DIVISION.
      **********************
        anfang.
           display "Wie weit?".
           accept N-ENDE.
 
       fakultaet.
           multiply N by FAK, ON SIZE ERROR go to size-error.
           move FAK to FAK-OUT.
           move N to N-OUT.
           display "N=",N-OUT, " : N!=", FAK-OUT.
           add 1 to N.
           if (N>N-ENDE) 
             go to ende.
           go to fakultaet.            
 
       size-error.
           display "Die Zahl passt nicht mehr in 10 ^ 18 Ziffern".
           go to ende.
 
       ende.
           STOP RUN.

Kompilierung

Mittels open-cobol:

cobc -x -Wall fak.cob

Ausgabe

Das Programm wird zunächst den Endpunkt abfragen, und bis zu diesem N die Fakultät von N berechnen.

Wie weit?
12
N= 1 : N!=                 1
N= 2 : N!=                 2
N= 3 : N!=                 6
N= 4 : N!=                24
N= 5 : N!=               120
N= 6 : N!=               720
N= 7 : N!=              5040
N= 8 : N!=             40320
N= 9 : N!=            362880
N=10 : N!=           3628800
N=11 : N!=          39916800
N=12 : N!=         479001600