Primesgen.cbl

From PostgreSQL_wiki
Jump to: navigation, search

This is the compplete source code of the primesgen Cobol program.

       identification division.
       program-id. primesgen.

       environment division.
       configuration section.
       source-computer. linux-laptop.
       object-computer. linux-laptop.
       special-names.
           console is scherm.

       input-output section.
       file-control.
         select fprinter assign to "primes.prt";
         organization line sequential.

       data division.
       file section.
       fd fprinter.
       01 file-buffer pic x(132).

       working-storage section.
       01  filler               pic x(32) value "Start WS primesgen".

       01  printer.
        03 print-buffer     PIC X(132).
        03 line-number      PIC 99 value 99.
        03 page-number      PIC 9999 value zero.

       01  test-quot        pic 9(9).

      *    ui-operations methods and data
      *01 ui-session.
      * 03 ui-methods        pic x(32).
      *  88 start-session    value "start".
      *  88 write-primesui   value "write".
      *  88 display-primesui value "write".
      *  88 stop-session     value "stop".
      * 03 ui-method-result  pic 9(2)  value zero.
      * 03 primes-set.
      *  05 ui-ident        pic 9(9).
      *  05 ui-prime        pic 9(9).

      *    dalcb-operations methods and data
       01 primes.
        03 gen-methods      pic x(32).
         88 query-process   value "query".
         88 start-process   value "start".
         88 next-divider    value "get".
         88 write-prime     value "put".
         88 stop-process    value "stop".
        03 primes-result    pic 9(2)  value zero.
         88 init-primes-ok   value 1.
         88 first-divider-ok value 2.
         88 next-divider-ok  value 3.
      * 03 prime-sequence   pic 9(9).
      * 03 prime-number     pic 9(9).
        03 test-number      pic 9(9).
        03 test-number-sqr  pic 9(9)v9(9).
        03 test-divider     pic 9(9).
        03 test-rest        pic 9(9)v9(9).
        03 old-test-number  pic 9(9).
        03 old-ident        pic 9(9).
        03 new-ident        pic 9(9).

           copy primes-ui.

           copy primes-dal.

       linkage section.

           copy primes-session.

           procedure division using primes-session.
      *                             primes-ui, primes-dal.

           evaluate true

             when report-primes

               perform r90-start-primes-report
               if session-method-ok then
      *           move "report"      to methods
      *           perform r86-report-primes until dal-method-eof
                  perform r86-report-primes until session-method-eof

             when generate-primes

               perform r91-start-primes-generation
               if session-method-ok then
      *           move "generate"   to methods
                  perform r80-test-number until test-number = 999999999

             when other

               move "primesgen"   to program-name
               move "main"        to program-paragraph
               move 'log-message' to methods
               move 'Bad method, primes process failed.'
                 to program-message
               call "primesui" using primes-ui
           end-evaluate.

           perform r99-close-primes.

           exit program.

       r80-test-number.

           divide test-number by test-divider giving test-quot
                  remainder test-rest. 

           evaluate true
           when test-rest = 0
             perform r82-next-test-number
           when test-divider  > test-number-sqr
             perform r85-write-prime
             perform r82-next-test-number
           when other
             perform r89-get-next-divider.

       r82-next-test-number.

           add 2 to test-number.
           compute test-number-sqr = test-number ** 0.5 .
           move 1 to old-ident.
           perform r89-get-next-divider.

       r85-write-prime.

           move 'write'      to ui-methods.
           call "primes" using primes-dal.
           call "primesui" using primes-ui.
      *    display primes-result upon scherm.

       r86-report-primes.

           move 'write'       to ui-methods.
           move primes-data   to u-primes.
           call "primesui" using primes-ui.
           perform r94-fetch.
      *    display prime-number upon scherm.

       r89-get-next-divider.

           move 'get'        to gen-methods.
           call "primes" using primes.

       r90-start-primes-report.

           move 'connect'  to dal-methods.
           call "primes" using primes-dal.

           move "primesgen"   to program-name.
           move "r90-start-primes-report"        to program-paragraph.
           move 'log-message' to ui-methods.

           if dal-method-ok then
             move   'Database initialisation succeeeded.'
               to program-message
             call "primesui" using primes-ui
           else
             move 'Database initialisation failed.'
               to program-message
             call "primesui" using primes-ui
             move 1       to  session-result.

           move 'cursor'      to dal-methods.
           call "primes" using primes-dal.

           move "primesgen"   to program-name.
           move "r90-start-primes-report"        to program-paragraph.
           move 'log-message' to ui-methods.

           if dal-method-ok then
             move   'Cursor initialisation succeeeded.'
               to program-message
             call "primesui" using primes-ui
           else
             move 'Cursor initialisation failed.' to program-message
             call "primesui" using primes-ui
             move 1       to  session-result.

           if dal-method-ok                      then
              perform r94-fetch.

           if dal-method-ok                      then
              move 'Fetch first row ok.' to program-message
              move 0 to dal-result
           else
              move 'Fetch first row nok.' to program-message
                 move 1 to dal-result.

           move 'primesgen'         to program-name.
           call "primesui" using primes-ui.

       r91-start-primes-generation.

           move 'connect'  to dal-methods.
           call "primes" using primes-dal.

           move 'log-message' to ui-methods

           if dal-method-ok then
             move 2 to test-divider
             move 1 to old-ident
             move 3 to test-number
             compute test-number-sqr = test-number ** 0.5 
             move   'Database initialisation succeeeded.'
               to program-message
             call "primesui" using primes-ui
           else
             move 'Database initialisation failed.'
               to program-message
             call "primesui" using primes-ui
             move 1       to  session-result.

       r94-fetch.

           move 'next-prime'   to dal-methods.
           call "primes" using primes-dal.

           move "primesgen"          to program-name.
           move "r94-fetch"          to program-paragraph.
           move 'log-message'        to ui-methods.

           if dal-method-ok then
              next sentence
           else
             move 'Fetch failed.' to program-message
             call "primesui" using primes-ui
             move 1       to  session-result.

       r99-close-primes.

           move 'disconnect' to dal-methods.
           call "primes" using primes.

           move 'log-message' to methods

           if dal-method-ok then
             move   'Database close succeeeded.'
             to program-message
             call "primesui" using primes-ui
           else
             move 'Database close failed.'
               to program-message
             call "primesui" using primes-ui
             move 1       to  session-result.

Terug naar: primes