Difference between revisions of "Primes.out"

From PostgreSQL_wiki
Jump to: navigation, search
(Created page with "This is the compplete source code of the primes Cobol program, which contains the high level SQL statements. <pre> </pre> <hr/> Terug naar: primes")
 
 
Line 1: Line 1:
This is the compplete source code of the primes Cobol program, which contains the high level SQL statements.
+
This is the outpur of the primes.cbsql Cobol program compilation, which contains the processed high level SQL statements.
 
<pre>
 
<pre>
  +
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
 
</pre>
 
</pre>
 
<hr/>
 
<hr/>

Latest revision as of 22:25, 9 December 2025

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