Editing
Primes.cbsql
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
This is the compplete source code of the primes Cobol program, which contains the preprocessed high level SQL statements. <pre> identification division. program-id. primes. environment division. configuration section. source-computer. linux-laptop. object-computer. linux-laptop. special-names. console is scherm. data division. working-storage section. 01 filler pic x(32) value "Start WS primes". 01 DATASRC PIC X(64) value "pgsql://localhost:5432/primes&default_schema=primes". 01 DBUSR PIC X(64) value "primes_user". 01 DBPWD PIC X(64) value "pr1mes_user". 01 CUR-STEP PIC X(16). 01 primes-row. 03 r-ident pic 9(9) comp-3. 03 r-prime pic 9(9) comp-3. 01 prime-count pic 9(9). 01 prime_seq pic 9(9). 01 divider pic 9(9). 01 primes. 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 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). GIXSQL*EXEC SQL GIXSQL* INCLUDE primes-table GIXSQL*END-EXEC. COPY primes-table. GIXSQL*EXEC SQL GIXSQL* INCLUDE SQLCA GIXSQL*END-EXEC. COPY SQLCA. GIXSQL*EXEC SQL AT primes GIXSQL* DECLARE primescursor CURSOR FOR GIXSQL* SELECT * FROM primes GIXSQL*END-EXEC. copy primes-ui. GIXSQL 01 SQ0001. GIXSQL 02 FILLER PIC X(0020) VALUE "SELECT * FROM primes". GIXSQL 02 FILLER PIC X(1) VALUE X"00". GIXSQL 01 SQ0002. GIXSQL 02 FILLER PIC X(0041) VALUE "SELECT prime FROM primes WHER" GIXSQL & "E ident = $1". GIXSQL 02 FILLER PIC X(1) VALUE X"00". GIXSQL 01 SQ0003. GIXSQL 02 FILLER PIC X(0042) VALUE "INSERT INTO primes ( prime ) " GIXSQL & "VALUES ( $1 )". GIXSQL 02 FILLER PIC X(1) VALUE X"00". GIXSQL 01 SQ0004. GIXSQL 02 FILLER PIC X(0041) VALUE "insert into primes ( prime ) " GIXSQL & "values ( 2 )". GIXSQL 02 FILLER PIC X(1) VALUE X"00". GIXSQL 01 SQ0005. GIXSQL 02 FILLER PIC X(0017) VALUE "START TRANSACTION". GIXSQL 02 FILLER PIC X(1) VALUE X"00". GIXSQL* ESQL CURSOR INIT FLAGS (START) GIXSQL 01 GIXSQL-CI-F-primes-primescursor PIC X. GIXSQL* ESQL CURSOR INIT FLAGS (END) linkage section. copy primes-dal. procedure division using primes-dal. evaluate true when next-prime perform r80-get-next-prime when next-divider perform r81-get-next-divider when write-prime perform r83-write-prime when db-connect perform s00-connect when db-cursor perform s01-cursor when db-disconnect perform s99-disconnect when other move 1 to dal-result end-evaluate. exit program. r80-get-next-prime. perform s02-fetch. r81-get-next-divider. add 1 to old-ident giving new-ident. * display "gen-methods: " gen-methods. * display "primes.cbl ident: " old-ident " " new-ident. GIXSQL* EXEC SQL at primes GIXSQL* SELECT prime INTO :test-divider FROM primes GIXSQL* WHERE ident = :new-ident GIXSQL* END-EXEC. GIXSQL CALL STATIC "GIXSQLStartSQL" GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLSetResultParams" USING GIXSQL BY VALUE 1 GIXSQL BY VALUE 9 GIXSQL BY VALUE 0 GIXSQL BY VALUE 0 GIXSQL BY REFERENCE test-divider GIXSQL BY REFERENCE 0 GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLSetSQLParams" USING GIXSQL BY VALUE 1 GIXSQL BY VALUE 9 GIXSQL BY VALUE 0 GIXSQL BY VALUE 0 GIXSQL BY REFERENCE new-ident GIXSQL BY REFERENCE 0 GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLExecSelectIntoOne" USING GIXSQL BY REFERENCE SQLCA GIXSQL BY REFERENCE "primes" & x"00" GIXSQL BY VALUE 0 GIXSQL BY REFERENCE SQ0002 GIXSQL BY VALUE 1 GIXSQL BY VALUE 1 GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLEndSQL" GIXSQL END-CALL. if SQLCODE = 0 then next sentence * display "select new-divider ok: " test-divider upon scherm else display SQLCODE upon scherm display "select new-divider nok" upon scherm. * display "primes.cbl test-divider: " test-divider. move new-ident to old-ident. r83-write-prime. GIXSQL* EXEC SQL at primes GIXSQL* INSERT INTO primes ( prime ) VALUES ( :prime ) GIXSQL* END-EXEC. GIXSQL CALL STATIC "GIXSQLStartSQL" GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLSetSQLParams" USING GIXSQL BY VALUE 1 GIXSQL BY VALUE 9 GIXSQL BY VALUE 0 GIXSQL BY VALUE 0 GIXSQL BY REFERENCE prime GIXSQL BY REFERENCE 0 GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLExecParams" USING GIXSQL BY REFERENCE SQLCA GIXSQL BY REFERENCE "primes" & x"00" GIXSQL BY VALUE 0 GIXSQL BY REFERENCE SQ0003 GIXSQL BY VALUE 1 GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLEndSQL" GIXSQL END-CALL. if SQLCODE = 0 then next sentence * display SQLCODE upon scherm * display "primes.cbl insert next prime and new-ident ok: " * prime-number upon scherm else display SQLCODE upon scherm display "primes.cbl insert next prime nok: " prime-number upon scherm. * EXEC SQL at primes * COMMIT * END-EXEC. if SQLCODE = 0 then next sentence * display SQLCODE upon scherm * display "commit ok: " upon scherm else display SQLCODE upon scherm display "commit nok: " upon scherm. r90-generate-primes. perform s00-connect. if dal-method-ok then move 'log-message' to process-message GIXSQL* EXEC SQL at primes GIXSQL* insert into primes ( prime ) values ( 2 ) GIXSQL* END-EXEC. GIXSQL CALL STATIC "GIXSQLExec" USING GIXSQL BY REFERENCE SQLCA GIXSQL BY REFERENCE "primes" & x"00" GIXSQL BY VALUE 0 GIXSQL BY REFERENCE SQ0004 GIXSQL END-CALL. if SQLCODE = 0 then move 0 to dal-result move 1 to primes-sequence move 2 to prime-number move 'Initial insert ok.' to process-message else move 'Initial insert failed, terminating program.' to process-message move 1 to dal-result. move 'log-message' to program-message. call "primesui" using primes-ui. r99-stop-primes. perform s99-disconnect. s00-connect. MOVE 'CONNECT' TO CUR-STEP. GIXSQL* EXEC SQL GIXSQL* connect TO :DATASRC AS primes USER :DBUSR USING :DBPWD GIXSQL* END-EXEC. GIXSQL CALL STATIC "GIXSQLConnect" USING GIXSQL BY REFERENCE SQLCA GIXSQL BY REFERENCE DATASRC GIXSQL BY VALUE 64 GIXSQL BY REFERENCE "primes" & x"00" GIXSQL BY VALUE 0 GIXSQL BY REFERENCE x"00" GIXSQL BY VALUE 0 GIXSQL BY REFERENCE DBUSR GIXSQL BY VALUE 64 GIXSQL BY REFERENCE DBPWD GIXSQL BY VALUE 64 GIXSQL END-CALL. move 'log-message' to process-message. if SQLCODE = 0 then move 0 to dal-result move 'Database initialisation ok.' to program-message call "primesui" using primes-ui else move 'Database initialisation failed, terminating program.' to program-message call "primesui" using primes-ui move 1 to dal-result. s01-cursor. move 'primes' to program-name. GIXSQL* EXEC SQL at primes START TRANSACTION END-EXEC. GIXSQL CALL STATIC "GIXSQLStartSQL" GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLExec" USING GIXSQL BY REFERENCE SQLCA GIXSQL BY REFERENCE "primes" & x"00" GIXSQL BY VALUE 0 GIXSQL BY REFERENCE SQ0005 GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLEndSQL" GIXSQL END-CALL. if SQLCODE = 0 then move 'Start transaction ok.' to program-message else move 'Start transaction nok.' to program-message move 1 to dal-result. move 'log-message' to program-message. call "primesui" using primes-ui. * display "start transaction nok" upon scherm. if dal-method-ok then GIXSQL* EXEC SQL OPEN primescursor END-EXEC. GIXSQL IF GIXSQL-CI-F-primes-primescursor = ' ' THEN GIXSQL PERFORM GIXSQL-CI-P-primes-primescursor GIXSQL IF SQLCODE = 0 GIXSQL MOVE 'X' TO GIXSQL-CI-F-primes-primescursor GIXSQL END-IF GIXSQL END-IF GIXSQL IF GIXSQL-CI-F-primes-primescursor = 'X' THEN GIXSQL CALL STATIC "GIXSQLCursorOpen" USING GIXSQL BY REFERENCE SQLCA GIXSQL BY REFERENCE "primes_primescursor" & x"00" GIXSQL END-CALL GIXSQL END-IF. if SQLCODE = 0 then move 'Start primescursur ok.' to program-message else move 'Start primescursor nok.' to program-message move 1 to dal-result. move 'primes' to program-name. move 'log-message' to program-message. call "primesui" using primes-ui. * if dal-method-ok then * perform s02-fetch. * if SQLCODE = 0 then * move 'Fetch first row ok.' to program-message * move 0 to dal-result * move r-ident to primes-sequence * move r-prime to prime-number * else * move 'Fetch first row nok.' to program-message * move 1 to dal-result. * move 'primes' to program-name. * move 'log-message' to program-message. * call "primesui" using primes-ui. s02-fetch. GIXSQL* EXEC SQL FETCH primescursor INTO :primes-row END-EXEC. GIXSQL CALL STATIC "GIXSQLStartSQL" GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLSetResultParams" USING GIXSQL BY VALUE 8 GIXSQL BY VALUE 9 GIXSQL BY VALUE 0 GIXSQL BY VALUE 0 GIXSQL BY REFERENCE r-ident GIXSQL BY REFERENCE 0 GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLSetResultParams" USING GIXSQL BY VALUE 8 GIXSQL BY VALUE 9 GIXSQL BY VALUE 0 GIXSQL BY VALUE 0 GIXSQL BY REFERENCE r-prime GIXSQL BY REFERENCE 0 GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLCursorFetchOne" USING GIXSQL BY REFERENCE SQLCA GIXSQL BY REFERENCE "primes_primescursor" & x"00" GIXSQL END-CALL GIXSQL CALL STATIC "GIXSQLEndSQL" GIXSQL END-CALL. if SQLCODE = 0 then move r-ident to primes-sequence move r-prime to prime-number move 0 to dal-result else move 'Fetch row nok.' to program-message move 1 to dal-result move 'primes' to program-name move 's02-fetch' to program-paragraph move 'log-message' to ui-methods call "primesui" using primes-ui. s99-disconnect. MOVE 'DISCONNECT' TO CUR-STEP. GIXSQL* EXEC SQL connect RESET primes END-EXEC. GIXSQL CALL STATIC "GIXSQLConnectReset" USING GIXSQL BY REFERENCE SQLCA GIXSQL BY REFERENCE "primes" & x"00" GIXSQL BY VALUE 0 GIXSQL END-CALL. move 'log-message' to process-message. if SQLCODE = 0 then move 0 to dal-result move 'Close database ok.' to process-message call "primesui" using primes-ui else move 'Database initialisation failed, ending program.' to process-message call "primesui" using primes-ui move 1 to dal-result. display "s99 disconnect from database" upon scherm. display SQLCODE upon scherm. GIXSQL* GIXSQL* ESQL CURSOR DECLARATIONS (START) GIXSQL GO TO GIX-SKIP-CRSR-INIT. GIXSQL GIXSQL-CI-P-primes-primescursor. GIXSQL CALL STATIC "GIXSQLCursorDeclare" USING GIXSQL BY REFERENCE SQLCA GIXSQL BY REFERENCE "primes" & x"00" GIXSQL BY VALUE 0 GIXSQL BY REFERENCE "primes_primescursor" & x"00" GIXSQL BY VALUE 0 GIXSQL BY REFERENCE SQ0001 GIXSQL BY VALUE 0 GIXSQL END-CALL. GIXSQL GIX-SKIP-CRSR-INIT. GIXSQL* GIXSQL* ESQL CURSOR DECLARATIONS (END) </pre> <hr/> Terug naar: [[primes]]
Summary:
Please note that all contributions to Webhuis wiki are considered to be released under the GNU Free Documentation License 1.3 or later (see
Project:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Voorpagina
Cobol and PostgreSQL
PostgreSQL
CFEngine
Proxmox
Webhuis Kennisbank
Basale infra
Webhuis bouwstenen
Webhuis configuratie
Webhuis Infra
Webhuis Support
Webhuis Raspberry
Opzet Applicaties
Business Applicaties
Community portal
Current events
Recent changes
Random page
Help
sitesupport
Tools
What links here
Related changes
Special pages
Page information