génération d'un nombre aléatoire

BoTTom |
      *
      *  RECHERCHE D'UN NOMBRE ALEATOIRE
      *
      *        L'ALOGORITHME DE CALCUL EST LE SUIVANT
      *
      *
      *        F(Z) = A.Z MOD M         A =        16.807
      *                                 M = 2.147.483.674
      *                                 Z = LE NOMBRE DERNIER NOMBRE
      *                                     GENERE
      *                                     (LA PREMIERE FOIS BASE SUR
      *                                      L'HEURE)
      *
     I            DS
     I                                        1   60DSTIME
     I                                        1   20DSHOUR
     I                                        3   40DSMIN
     I                                        5   60DSSEC
     I            DS
     I                                        1   80WWW
     I                                        1   20WSEC
     I                                        3   40WMIN
     I                                        5   60WHOUR
     I                                        7   80WDAY
     C           *ENTRY    PLIST
     C                     PARM           RANDOM  88
      *
     C           *IN80     IFEQ '0'
     C                     MOVE '1'       *IN80
     C                     Z-ADD16807     A      100        A
     C                     Z-ADD2147483647M      100        M
     C                     Z-ADD127773    Q      100        M DIV A
     C                     Z-ADD2836      R      100        M MOD A
     C                     END
      *
     C           WW        IFEQ 0
     C                     TIME           DSTIME
     C                     Z-ADDDSSEC     WSEC
     C                     Z-ADDDSMIN     WMIN
     C                     Z-ADDDSHOUR    WHOUR
     C                     Z-ADDUDAY      WDAY
     C                     Z-ADDWWW       WW     100
     C                     END
      *


|
     C           WW        DIV  Q         HI     100
     C                     MVR            LO     100
     C           A         MULT LO        T1     100
     C           R         MULT HI        T2     100
     C           T1        SUB  T2        TT     100
      *
     C           TT        IFGT 0
     C                     Z-ADDTT        WW
     C                     ELSE
     C           TT        ADD  M         WW
     C                     END
      * FORMATE WW COMPRIS ENTRE 0 ET 1
     C           WW        DIV  M         RANDOM
     C                     RETRN




©AF400