Here's some COBOL which calls CSNBRNGL.  I have included calls to STCKF to get 
timings (see: https://github.com/admattingly/Macho/ ) but you can comment this 
out if you wish.  Hopefully this logic is self-explanatory:

       identification division.
       program-id. wrangle.
       environment division.
       data division.
       working-storage section.
       01  cca-return-code                pic 9(9) comp-5.
       01  cca-reason-code                pic 9(9) comp-5.
       01  cca-exit-data-length           pic 9(9) comp-5.
       01  cca-exit-data                  pic x.
       01  cca-rule-array-count           pic 9(9) comp-5.
       01  cca-rule-array.
           05  cca-rule                   pic x(8) occurs 8.
       01  rng-key-identifier-length      pic 9(9) comp-5.
       01  rng-key-identifier             pic x(64).
       01  rng-random-number-length       pic 9(9) comp-5.
       01  rng-random-number              pic x(4096).
       01  rng-function                   pic x(8) value 'CSNBRNGL'.
      *
       01  time-start                     pic 9(18) comp-5.
       01  time-end                       pic 9(18) comp-5.
       01  elapsed-microseconds           pic z(5)9.9(10).
       01  stck-ticks                     pic 9(18) comp-5.
       01  stck-function                  pic x(8) value 'STCKF'.
      *
       procedure division.
           move 16 to rng-random-number-length
           call stck-function using time-start stck-ticks
           perform get-random
           call stck-function using time-end stck-ticks
           if cca-return-code = 0 then
               display function
                   hex-of(rng-random-number(1:rng-random-number-length))
           else
               display 'CSNBRNGL rc=' cca-return-code
                       ', rsn=' cca-reason-code
           end-if
           compute elapsed-microseconds = (time-end - time-start)
                                          / 4096.0
           display 'Elapsed=' elapsed-microseconds ' us'
           stop run.

       get-random.
           move zero to cca-exit-data-length
           move 1 to cca-rule-array-count
           move 'RANDOM' to cca-rule(1)
           move 0 to rng-key-identifier-length
      * rng-random-number-length set by caller
           call rng-function using
                cca-return-code
                cca-reason-code
                cca-exit-data-length
                cca-exit-data
                cca-rule-array-count
                cca-rule-array
                rng-key-identifier-length
                rng-key-identifier
                rng-random-number-length
                rng-random-number.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to