Primes.out

From PostgreSQL_wiki
Revision as of 22:25, 9 December 2025 by Martin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This is the outpur of the primes.cbsql Cobol program compilation, which contains the processed high level SQL statements.

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0001

LINE    PG/LN  A...B............................................................SEQUENCE

000001         identification division.
000002         program-id. primes.
000003
000004         environment division.
000005         configuration section.
000006         source-computer. linux-laptop.
000007         object-computer. linux-laptop.
000008         special-names.
000009             console is scherm.
000010
000011         data division.
000012         working-storage section.
000013         01  filler               pic x(32) value "Start WS primes".
000014         01 DATASRC PIC X(64) value
000015            "pgsql://localhost:5432/primes&default_schema=primes".
000016         01 DBUSR     PIC X(64)  value "primes_user".
000017         01 DBPWD     PIC X(64)  value "pr1mes_user".
000018         01 CUR-STEP    PIC X(16).
000019         01 primes-row.
000020          03 r-ident          pic 9(9) comp-3.
000021          03 r-prime          pic 9(9) comp-3.
000022         01 prime-count       pic 9(9).
000023         01 prime_seq         pic 9(9).
000024         01 divider           pic 9(9).
000025
000026         01 primes.
000027          03 primes-result    pic 9(2)  value zero.
000028           88 init-primes-ok   value 1.
000029           88 first-divider-ok value 2.
000030           88 next-divider-ok  value 3.
000031          03 test-number      pic 9(9).
000032          03 test-number-sqr  pic 9(9)v9(9).
000033          03 test-divider     pic 9(9).
000034          03 test-rest        pic 9(9)v9(9).
000035          03 old-test-number  pic 9(9).
000036          03 old-ident        pic 9(9).
000037          03 new-ident        pic 9(9).
000038
000039  GIXSQL*EXEC SQL
000040  GIXSQL*    INCLUDE primes-table
000041  GIXSQL*END-EXEC.
000042             COPY primes-table.
000001C        01 primes-table.
000002C         03 ident            pic s9(9).
000003C         03 prime            pic s9(9).
000004C
000043
000044  GIXSQL*EXEC SQL
000045  GIXSQL*    INCLUDE SQLCA
000046  GIXSQL*END-EXEC.
000047             COPY SQLCA.
000001C       ******************************************************************

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0002

LINE    PG/LN  A...B............................................................SEQUENCE

000002C       *       SQLCA: SQL Communications Area for GIXSQL                *
000003C       ******************************************************************
000004C        01  SQLCA.
000005C            05  SQLCAID               PIC X(8).
000006C            05  SQLCABC               PIC S9(9) COMP-5.
000007C            05  SQLCODE               PIC S9(9) COMP-5.
000008C            05  SQLERRM.
000009C            49  SQLERRML              PIC S9(4) COMP-5.
000010C            49  SQLERRMC              PIC X(70).
000011C            05  SQLERRP               PIC X(8).                          *> not used
000012C            05  SQLERRD OCCURS 6 TIMES                                   *> used only ERRD(3)
000013C                                      PIC S9(9) COMP-5.
000014C            05  SQLWARN.                                                 *> not used
000015C                10 SQLWARN0           PIC X(1).
000016C                10 SQLWARN1           PIC X(1).
000017C                10 SQLWARN2           PIC X(1).
000018C                10 SQLWARN3           PIC X(1).
000019C                10 SQLWARN4           PIC X(1).
000020C                10 SQLWARN5           PIC X(1).
000021C                10 SQLWARN6           PIC X(1).
000022C                10 SQLWARN7           PIC X(1).
000023C            05  SQLSTATE              PIC X(5).
000024C       ******************************************************************
000048
000049  GIXSQL*EXEC SQL AT primes
000050  GIXSQL*    DECLARE primescursor CURSOR FOR
000051  GIXSQL*      SELECT * FROM primes
000052  GIXSQL*END-EXEC.
000053
000054             copy primes-ui.
000001C       *    three-tier-operations methods
000002C       *    ui part, methods available to all objects
000003C        01 primes-ui.
000004C         03 ui-methods              pic x(32).
000005C          88 write-ui               value "write".
000006C          88 message-ui             value "log-message".
000007C          88 start-ui               value "start".
000008C          88 stop-ui                value "stop".
000009C         03 process-message.
000010C          05 program-name           pic x(20).
000011C          05 program-line.
000012C           07 program-paragraph     pic x(20).
000013C           07 program-message       pic x(92).
000014C         03 u-primes.
000015C          05 u-sequence             pic 9(9).
000016C          05 u-number               pic 9(9).
000017C         03 ui-method-result        pic 9(2)  value zero.
000018C          88 ui-method-ok           value 0.
000019C          88 ui-method-nok          value 1.
000055
000056  GIXSQL 01  SQ0001.
000057  GIXSQL     02  FILLER PIC X(0020) VALUE "SELECT * FROM primes".

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0003

LINE    PG/LN  A...B............................................................SEQUENCE

000058  GIXSQL     02  FILLER PIC X(1) VALUE X"00".
000059  GIXSQL 01  SQ0002.
000060  GIXSQL     02  FILLER PIC X(0041) VALUE "SELECT prime FROM primes WHER"
000061  GIXSQL  &  "E ident = $1".
000062  GIXSQL     02  FILLER PIC X(1) VALUE X"00".
000063  GIXSQL 01  SQ0003.
000064  GIXSQL     02  FILLER PIC X(0042) VALUE "INSERT INTO primes ( prime ) "
000065  GIXSQL  &  "VALUES ( $1 )".
000066  GIXSQL     02  FILLER PIC X(1) VALUE X"00".
000067  GIXSQL 01  SQ0004.
000068  GIXSQL     02  FILLER PIC X(0041) VALUE "insert into primes ( prime ) "
000069  GIXSQL  &  "values ( 2 )".
000070  GIXSQL     02  FILLER PIC X(1) VALUE X"00".
000071  GIXSQL 01  SQ0005.
000072  GIXSQL     02  FILLER PIC X(0017) VALUE "START TRANSACTION".
000073  GIXSQL     02  FILLER PIC X(1) VALUE X"00".
000074  GIXSQL*   ESQL CURSOR INIT FLAGS (START)
000075  GIXSQL 01  GIXSQL-CI-F-primes-primescursor PIC X.
000076  GIXSQL*   ESQL CURSOR INIT FLAGS (END)
000077         linkage section.
000078
000079             copy primes-dal.
000001C       *    three-tier-operations methods
000002C       *    business dal tier
000003C        01 primes-dal.
000004C         03 dal-methods             pic x(32).
000005C          88 next-prime             value "next-prime".
000006C          88 next-divider           value "next-divider".
000007C          88 write-prime            value "write".
000008C          88 db-cursor              value "cursor".
000009C          88 db-connect             value "connect".
000010C          88 db-disconnect          value "disconnect".
000011C          88 invalid-method         value "bad".
000012C         03  primes-data.
000013C          05 primes-sequence        pic 9(9).
000014C          05 prime-number           pic 9(9).
000015C         03  dal-result             pic 9(2)  value zero.
000016C          88 dal-method-ok          value 0.
000017C          88 dal-method-nok         value 1.
000018C          88 dal-method-eof         value 99.
000019C       * 03 primes-table.
000020C       *  05 ident                  pic s9(9).
000021C       *  05 prime                  pic s9(9).
000022C
000080
000081             procedure division using primes-dal.
000082
000083             evaluate true
000084               when next-prime
000085                 perform r80-get-next-prime
000086               when next-divider
000087                 perform r81-get-next-divider

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0004

LINE    PG/LN  A...B............................................................SEQUENCE

000088               when write-prime
000089                 perform r83-write-prime
000090               when db-connect
000091                 perform s00-connect
000092               when db-cursor
000093                 perform s01-cursor
000094               when db-disconnect
000095                 perform s99-disconnect
000096               when other
000097                 move 1 to dal-result
000098             end-evaluate.
000099
000100             exit program.
000101
000102         r80-get-next-prime.
000103
000104             perform s02-fetch.
000105
000106         r81-get-next-divider.
000107
000108             add 1 to old-ident giving new-ident.
000109        *    display "gen-methods: " gen-methods.
000110        *    display "primes.cbl ident: " old-ident " " new-ident.
000111
000112  GIXSQL*    EXEC SQL at primes
000113  GIXSQL*      SELECT prime INTO :test-divider FROM primes
000114  GIXSQL*             WHERE ident = :new-ident
000115  GIXSQL*    END-EXEC.
000116  GIXSQL     CALL STATIC "GIXSQLStartSQL"
000117  GIXSQL     END-CALL
000118  GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
000119  GIXSQL         BY VALUE 1
000120  GIXSQL         BY VALUE 9
000121  GIXSQL         BY VALUE 0
000122  GIXSQL         BY VALUE 0
000123  GIXSQL         BY REFERENCE test-divider
000124  GIXSQL         BY REFERENCE 0
000125  GIXSQL     END-CALL
000126  GIXSQL     CALL STATIC "GIXSQLSetSQLParams" USING
000127  GIXSQL         BY VALUE 1
000128  GIXSQL         BY VALUE 9
000129  GIXSQL         BY VALUE 0
000130  GIXSQL         BY VALUE 0
000131  GIXSQL         BY REFERENCE new-ident
000132  GIXSQL         BY REFERENCE 0
000133  GIXSQL     END-CALL
000134  GIXSQL     CALL STATIC "GIXSQLExecSelectIntoOne" USING
000135  GIXSQL         BY REFERENCE SQLCA
000136  GIXSQL         BY REFERENCE "primes" & x"00"
000137  GIXSQL         BY VALUE 0
000138  GIXSQL         BY REFERENCE SQ0002
000139  GIXSQL         BY VALUE 1

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0005

LINE    PG/LN  A...B............................................................SEQUENCE

000140  GIXSQL         BY VALUE 1
000141  GIXSQL     END-CALL
000142  GIXSQL     CALL STATIC "GIXSQLEndSQL"
000143  GIXSQL     END-CALL.
000144
000145             if SQLCODE = 0   then
000146               next sentence
000147        *      display "select new-divider ok: " test-divider upon scherm
000148             else
000149               display SQLCODE upon scherm
000150               display "select new-divider nok" upon scherm.
000151
000152        *    display "primes.cbl test-divider: " test-divider.
000153
000154             move new-ident to old-ident.
000155
000156         r83-write-prime.
000157
000158  GIXSQL*    EXEC SQL at primes
000159  GIXSQL*      INSERT INTO primes ( prime ) VALUES ( :prime )
000160  GIXSQL*    END-EXEC.
000161  GIXSQL     CALL STATIC "GIXSQLStartSQL"
000162  GIXSQL     END-CALL
000163  GIXSQL     CALL STATIC "GIXSQLSetSQLParams" USING
000164  GIXSQL         BY VALUE 1
000165  GIXSQL         BY VALUE 9
000166  GIXSQL         BY VALUE 0
000167  GIXSQL         BY VALUE 0
000168  GIXSQL         BY REFERENCE prime
000169  GIXSQL         BY REFERENCE 0
000170  GIXSQL     END-CALL
000171  GIXSQL     CALL STATIC "GIXSQLExecParams" USING
000172  GIXSQL         BY REFERENCE SQLCA
000173  GIXSQL         BY REFERENCE "primes" & x"00"
000174  GIXSQL         BY VALUE 0
000175  GIXSQL         BY REFERENCE SQ0003
000176  GIXSQL         BY VALUE 1
000177  GIXSQL     END-CALL
000178  GIXSQL     CALL STATIC "GIXSQLEndSQL"
000179  GIXSQL     END-CALL.
000180
000181             if SQLCODE = 0   then
000182               next sentence
000183        *      display SQLCODE upon scherm
000184        *      display "primes.cbl insert next prime and new-ident ok: "
000185        *               prime-number upon scherm
000186             else
000187               display SQLCODE upon scherm
000188               display "primes.cbl insert next prime nok: "
000189                        prime-number upon scherm.
000190
000191

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0006

LINE    PG/LN  A...B............................................................SEQUENCE

000192        *    EXEC SQL at primes
000193        *      COMMIT
000194        *    END-EXEC.
000195
000196             if SQLCODE = 0   then
000197               next sentence
000198        *      display SQLCODE upon scherm
000199        *      display "commit ok: " upon scherm
000200             else
000201               display SQLCODE upon scherm
000202               display "commit nok: " upon scherm.
000203
000204         r90-generate-primes.
000205
000206             perform s00-connect.
000207
000208             if dal-method-ok                      then
000209
000210               move 'log-message' to process-message
000211
000212  GIXSQL*      EXEC SQL at primes
000213  GIXSQL*        insert into primes ( prime ) values ( 2 )
000214  GIXSQL*      END-EXEC.
000215  GIXSQL     CALL STATIC "GIXSQLExec" USING
000216  GIXSQL         BY REFERENCE SQLCA
000217  GIXSQL         BY REFERENCE "primes" & x"00"
000218  GIXSQL         BY VALUE 0
000219  GIXSQL         BY REFERENCE SQ0004
000220  GIXSQL     END-CALL.
000221
000222               if SQLCODE = 0   then
000223                 move 0 to dal-result
000224                 move 1 to primes-sequence
000225                 move 2 to prime-number
000226                 move 'Initial insert ok.'
000227                   to process-message
000228               else
000229                 move
000230                  'Initial insert failed, terminating program.'
000231                   to process-message
000232                 move 1 to dal-result.
000233
000234             move 'log-message' to program-message.
000235             call "primesui" using primes-ui.
000236
000237
000238
000239         r99-stop-primes.
000240
000241             perform s99-disconnect.
000242
000243         s00-connect.

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0007

LINE    PG/LN  A...B............................................................SEQUENCE

000244             MOVE 'CONNECT' TO CUR-STEP.
000245  GIXSQL*    EXEC SQL
000246  GIXSQL*       connect TO :DATASRC AS primes USER :DBUSR USING :DBPWD
000247  GIXSQL*    END-EXEC.
000248  GIXSQL     CALL STATIC "GIXSQLConnect" USING
000249  GIXSQL         BY REFERENCE SQLCA
000250  GIXSQL         BY REFERENCE DATASRC
000251  GIXSQL         BY VALUE 64
000252  GIXSQL         BY REFERENCE "primes" & x"00"
000253  GIXSQL         BY VALUE 0
000254  GIXSQL         BY REFERENCE x"00"
000255  GIXSQL         BY VALUE 0
000256  GIXSQL         BY REFERENCE DBUSR
000257  GIXSQL         BY VALUE 64
000258  GIXSQL         BY REFERENCE DBPWD
000259  GIXSQL         BY VALUE 64
000260  GIXSQL     END-CALL.
000261             move 'log-message' to process-message.
000262             if SQLCODE = 0   then
000263                move 0 to dal-result
000264                move 'Database initialisation ok.'
000265                to program-message
000266                 call "primesui" using primes-ui
000267             else
000268                move
000269                 'Database initialisation failed, terminating program.'
000270                 to program-message
000271                 call "primesui" using primes-ui
000272                 move 1 to dal-result.
000273
000274         s01-cursor.
000275
000276             move 'primes'            to program-name.
000277
000278  GIXSQL*    EXEC SQL at primes START TRANSACTION END-EXEC.
000279  GIXSQL     CALL STATIC "GIXSQLStartSQL"
000280  GIXSQL     END-CALL
000281  GIXSQL     CALL STATIC "GIXSQLExec" USING
000282  GIXSQL         BY REFERENCE SQLCA
000283  GIXSQL         BY REFERENCE "primes" & x"00"
000284  GIXSQL         BY VALUE 0
000285  GIXSQL         BY REFERENCE SQ0005
000286  GIXSQL     END-CALL
000287  GIXSQL     CALL STATIC "GIXSQLEndSQL"
000288  GIXSQL     END-CALL.
000289
000290             if SQLCODE = 0   then
000291                move 'Start transaction ok.'
000292                  to program-message
000293             else
000294                move 'Start transaction nok.'
000295                  to program-message

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0008

LINE    PG/LN  A...B............................................................SEQUENCE

000296                move 1 to dal-result.
000297
000298             move 'log-message' to program-message.
000299             call "primesui" using primes-ui.
000300
000301        *      display "start transaction nok" upon scherm.
000302
000303             if dal-method-ok                      then
000304
000305  GIXSQL*      EXEC SQL OPEN primescursor END-EXEC.
000306  GIXSQL     IF GIXSQL-CI-F-primes-primescursor = ' ' THEN
000307  GIXSQL         PERFORM GIXSQL-CI-P-primes-primescursor
000308  GIXSQL         IF SQLCODE = 0
000309  GIXSQL           MOVE 'X' TO GIXSQL-CI-F-primes-primescursor
000310  GIXSQL         END-IF
000311  GIXSQL     END-IF
000312  GIXSQL     IF GIXSQL-CI-F-primes-primescursor = 'X' THEN
000313  GIXSQL         CALL STATIC "GIXSQLCursorOpen" USING
000314  GIXSQL             BY REFERENCE SQLCA
000315  GIXSQL             BY REFERENCE "primes_primescursor" & x"00"
000316  GIXSQL         END-CALL
000317  GIXSQL     END-IF.
000318
000319                if SQLCODE = 0   then
000320                   move 'Start primescursur ok.'
000321                     to program-message
000322                else
000323                   move 'Start primescursor nok.'
000324                     to program-message
000325                   move 1 to dal-result.
000326
000327
000328             move 'primes'            to program-name.
000329             move 'log-message' to program-message.
000330             call "primesui" using primes-ui.
000331
000332        *    if dal-method-ok                      then
000333        *       perform s02-fetch.
000334
000335        *    if SQLCODE = 0   then
000336        *       move 'Fetch first row ok.' to program-message
000337        *       move 0 to dal-result
000338        *       move r-ident     to    primes-sequence
000339        *       move r-prime     to    prime-number
000340        *    else
000341        *       move 'Fetch first row nok.' to program-message
000342        *          move 1 to dal-result.
000343
000344        *    move 'primes'            to program-name.
000345        *    move 'log-message' to program-message.
000346        *    call "primesui" using primes-ui.
000347

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0009

LINE    PG/LN  A...B............................................................SEQUENCE

000348         s02-fetch.
000349
000350  GIXSQL*    EXEC SQL FETCH primescursor INTO :primes-row END-EXEC.
000351  GIXSQL     CALL STATIC "GIXSQLStartSQL"
000352  GIXSQL     END-CALL
000353  GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
000354  GIXSQL         BY VALUE 8
000355  GIXSQL         BY VALUE 9
000356  GIXSQL         BY VALUE 0
000357  GIXSQL         BY VALUE 0
000358  GIXSQL         BY REFERENCE r-ident
000359  GIXSQL         BY REFERENCE 0
000360  GIXSQL     END-CALL
000361  GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
000362  GIXSQL         BY VALUE 8
000363  GIXSQL         BY VALUE 9
000364  GIXSQL         BY VALUE 0
000365  GIXSQL         BY VALUE 0
000366  GIXSQL         BY REFERENCE r-prime
000367  GIXSQL         BY REFERENCE 0
000368  GIXSQL     END-CALL
000369  GIXSQL     CALL STATIC "GIXSQLCursorFetchOne" USING
000370  GIXSQL         BY REFERENCE SQLCA
000371  GIXSQL         BY REFERENCE "primes_primescursor" & x"00"
000372  GIXSQL     END-CALL
000373  GIXSQL     CALL STATIC "GIXSQLEndSQL"
000374  GIXSQL     END-CALL.
000375
000376             if SQLCODE = 0   then
000377                move r-ident     to    primes-sequence
000378                move r-prime     to    prime-number
000379                move 0 to dal-result
000380             else
000381                move 'Fetch row nok.' to program-message
000382                move 1 to dal-result
000383                move 'primes'            to program-name
000384                move 's02-fetch'         to program-paragraph
000385                move 'log-message' to ui-methods
000386                call "primesui" using primes-ui.
000387
000388         s99-disconnect.
000389
000390             MOVE 'DISCONNECT' TO CUR-STEP.
000391  GIXSQL*    EXEC SQL connect RESET primes END-EXEC.
000392  GIXSQL     CALL STATIC "GIXSQLConnectReset" USING
000393  GIXSQL         BY REFERENCE SQLCA
000394  GIXSQL         BY REFERENCE "primes" & x"00"
000395  GIXSQL         BY VALUE 0
000396  GIXSQL     END-CALL.
000397
000398             move 'log-message' to process-message.
000399

GnuCOBOL 4.0-early-dev. primes.cbsql                                                  Fri Dec  5 14:24:02 2025  Page 0010

LINE    PG/LN  A...B............................................................SEQUENCE

000400             if SQLCODE = 0   then
000401                move 0 to dal-result
000402                move 'Close database ok.'
000403                to process-message
000404                 call "primesui" using primes-ui
000405             else
000406                 move 'Database initialisation failed, ending program.'
000407                 to process-message
000408                 call "primesui" using primes-ui
000409                 move 1 to dal-result.
000410             display "s99 disconnect from database" upon scherm.
000411             display SQLCODE upon scherm.
000412  GIXSQL*
000413  GIXSQL*   ESQL CURSOR DECLARATIONS (START)
000414  GIXSQL     GO TO GIX-SKIP-CRSR-INIT.
000415  GIXSQL GIXSQL-CI-P-primes-primescursor.
000416  GIXSQL     CALL STATIC "GIXSQLCursorDeclare" USING
000417  GIXSQL         BY REFERENCE SQLCA
000418  GIXSQL         BY REFERENCE "primes" & x"00"
000419  GIXSQL         BY VALUE 0
000420  GIXSQL         BY REFERENCE "primes_primescursor" & x"00"
000421  GIXSQL         BY VALUE 0
000422  GIXSQL         BY REFERENCE SQ0001
000423  GIXSQL         BY VALUE 0
000424  GIXSQL     END-CALL.
000425  GIXSQL GIX-SKIP-CRSR-INIT.
000426  GIXSQL*
000427  GIXSQL*   ESQL CURSOR DECLARATIONS (END)


0 warnings in compilation group
0 errors in compilation group

Terug naar: primes