Pgcobol.cbsql

From Webhuis wiki
Revision as of 21:37, 7 November 2025 by Martin (talk | contribs)
Jump to navigation Jump to search

GixSQL precompilation

The gixsql precompiler precesses the raw cobol file containing the high level SQL statements and translates them into cobol calls.

       IDENTIFICATION DIVISION.

       PROGRAM-ID. pgcobol.


       ENVIRONMENT DIVISION.

       CONFIGURATION SECTION.
       source-computer. Linux-laptop.
       object-computer. Linux-laptop.
       special-names.
           console is scherm.

       SOURCE-COMPUTER. IBM-AT.
       OBJECT-COMPUTER. IBM-AT.

       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
         select fprinter assign to "pgcobol.prt";
         ORGANIZATION LINE SEQUENTIAL.
       DATA DIVISION.

       FILE SECTION.
       FD fprinter.
       01 file-buffer PIC X(242).
       WORKING-STORAGE SECTION.

      *   copy 'SQLCA.cpy'.
      *   copy 'EMPREC.cpy'.

       01 DATASRC PIC X(64) value
      *   "pgsql://10.68.171.50:5432".
      *   "pgsql://10.68.171.50:5432/cobol_gixsql".
          "pgsql://localhost:5432/cobol_gixsql".
       01 DBUSR     PIC X(64)  value "gix_user".
       01 DBPWD     PIC X(64)  value "gix_user".

       01 CUR-STEP    PIC X(16).
       01 empcount    PIC 9(5).
       01 employee-record.
           03 r-ENO PIC S9(4) COMP.
           03 r-LNAME PIC X(10).
           03 r-FNAME PIC X(10).
           03 r-STREET PIC X(20).
           03 r-CITY PIC X(15).
           03 r-ST PIC XX.
           03 r-ZIP PIC X(5).
           03 r-DEPT PIC X(4).
      *    03 a-PAYRATE PIC S9(13)V99 COMP-3 VALUE 0.
           03 r-PAYRATE PIC S9(13)V99 COMP-3 VALUE 0.
           03 r-COM PIC S9V99 COMP-3.
           03 r-MISCDATA PIC X(132).
           03 r-DNUM1 PIC S99V99 COMP-3.
           03 r-DNUM2 PIC S99V99 COMP-3.
           03 r-DNUM3 PIC S99V99 COMP-3.

       01 employee-row.
           03 p-ENO PIC z(3)9.
           03 filler pic x value space.
           03 p-LNAME PIC X(10).
           03 filler pic x value space.
           03 p-FNAME PIC X(10).
           03 filler pic x value space.
           03 p-STREET PIC X(20).
           03 filler pic x value space.
           03 p-CITY PIC X(15).
           03 filler pic x value space.
           03 p-ST PIC XX.
           03 filler pic x value space.
           03 p-ZIP PIC X(5).
           03 filler pic x value space.
           03 p-DEPT PIC X(4).
           03 filler pic x value space.
           03 p-PAYRATE PIC z(12)9.99.
           03 filler pic x value space.
           03 p-COM PIC 9v99.
           03 filler pic x value space.
           03 p-DNUM1 PIC z9.99.
           03 filler pic x value space.
           03 p-DNUM2 PIC z9.99.
           03 filler pic x value space.
           03 p-DNUM3 PIC z9.99.
           03 filler pic x value space.
           03 p-miscdata-text pic X(128).

       01 employee-header.
           03 h-ENO pic x(5) value 'Eno'.
           03 h-LNAME PIC X(11) value 'Lname'.
           03 h-FNAME PIC X(11) value 'Fname'.
           03 h-STREET PIC X(21) value space.
           03 h-CITY PIC X(16) value 'City'.
           03 h-ST PIC X(3) value 'ST'.
           03 h-ZIP PIC X(6) value 'zip'.
           03 h-DEPT PIC X(5) value 'Dept'.
           03 h-PAYRATE PIC x(17) value 'Payrate'.
           03 h-COM PIC x(4) value 'Com'.
           03 h-DNUM1 PIC x(6) value 'Dnum1'.
           03 h-DNUM2 PIC x(6) value 'Dnum1'.
           03 h-DNUM3 PIC x(6) value 'Dnum1'.
           03 h-miscdata-text pic X(128) value 'Misc data'.

       01 employee-page.
           03 filler pic x(118) value 'Employee overview'.
           03 filler pic x(10) value 'page'.
           03 f-page-number PIC z(3)9.

      *01 MISCDATA PIC X(132).

       01 miscdata-group.
           49 miscdata-len pic 9(8) comp-5.
           49 miscdata-text pic X(128).

       01 IDX              PIC 9(2).
       01 print-buffer     PIC X(242).
       01 line-number      PIC 99 value 99.
       01 page-number      PIC 9999 value zero.

       01 TMPNUM          PIC 9(4).

GIXSQL*EXEC SQL
GIXSQL*    INCLUDE employee-table
GIXSQL*END-EXEC.
           COPY employee-table.

GIXSQL*EXEC SQL
GIXSQL*    INCLUDE SQLCA
GIXSQL*END-EXEC.
           COPY SQLCA.

GIXSQL*EXEC SQL AT cobol_sql
GIXSQL*    DECLARE employeecursor CURSOR FOR
GIXSQL*      SELECT * FROM emptable
GIXSQL*END-EXEC.

GIXSQL 01  SQ0001.
GIXSQL     02  FILLER PIC X(0022) VALUE "SELECT * FROM emptable".
GIXSQL     02  FILLER PIC X(1) VALUE X"00".
GIXSQL 01  SQ0002.
GIXSQL     02  FILLER PIC X(0031) VALUE "SELECT COUNT( * ) FROM emptab"
GIXSQL  &  "le".
GIXSQL     02  FILLER PIC X(1) VALUE X"00".
GIXSQL 01  SQ0003.
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-pgcobol-employeecursor PIC X.
GIXSQL*   ESQL CURSOR INIT FLAGS (END)
       PROCEDURE DIVISION.

       r00-main.

           perform r90-init.
           perform r80-verwerk.
           perform r99-exit.

       r80-verwerk.

GIXSQL*    EXEC SQL AT cobol_sql
GIXSQL*        SELECT COUNT(*) INTO :empcount FROM emptable
GIXSQL*    END-EXEC.
GIXSQL     CALL STATIC "GIXSQLStartSQL"
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 1
GIXSQL         BY VALUE 5
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE empcount
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLExecSelectIntoOne" USING
GIXSQL         BY REFERENCE SQLCA
GIXSQL         BY REFERENCE "cobol_sql" & x"00"
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE SQ0002
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 1
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLEndSQL"
GIXSQL     END-CALL.

           display "Rijen in emptable" upon scherm.
           display empcount upon scherm.

           perform r81-init-cursor.

           perform r85-verwerk-employee until
                   SQLCODE < 0 or SQLCODE = 100

           perform r89-close-cursor.

       r81-init-cursor.

GIXSQL*    EXEC SQL AT cobol_sql START TRANSACTION END-EXEC.
GIXSQL     CALL STATIC "GIXSQLStartSQL"
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLExec" USING
GIXSQL         BY REFERENCE SQLCA
GIXSQL         BY REFERENCE "cobol_sql" & x"00"
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE SQ0003
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLEndSQL"
GIXSQL     END-CALL.
           display "start transaction" upon scherm.
           display SQLCODE upon scherm.

GIXSQL*    EXEC SQL OPEN employeecursor END-EXEC.
GIXSQL     IF GIXSQL-CI-F-pgcobol-employeecursor = ' ' THEN
GIXSQL         PERFORM GIXSQL-CI-P-pgcobol-employeecursor
GIXSQL         IF SQLCODE = 0
GIXSQL           MOVE 'X' TO GIXSQL-CI-F-pgcobol-employeecursor
GIXSQL         END-IF
GIXSQL     END-IF
GIXSQL     IF GIXSQL-CI-F-pgcobol-employeecursor = 'X' THEN
GIXSQL         CALL STATIC "GIXSQLCursorOpen" USING
GIXSQL             BY REFERENCE SQLCA
GIXSQL             BY REFERENCE "pgcobol_employeecursor" & x"00"
GIXSQL         END-CALL
GIXSQL     END-IF.

           display "open cursor" upon scherm.
           display SQLCODE upon scherm.

GIXSQL*    EXEC SQL FETCH employeecursor INTO :employee-table END-EXEC.
GIXSQL     CALL STATIC "GIXSQLStartSQL"
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 23
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 256
GIXSQL         BY REFERENCE ENO
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 10
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE LNAME
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 10
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE FNAME
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 20
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE STREET
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 15
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE CITY
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 2
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE ST
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 5
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE ZIP
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE DEPT
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 15
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE PAYRATE
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 3
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE COM
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 132
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE MISCDATA
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE DNUM1
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE DNUM2
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE DNUM3
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLCursorFetchOne" USING
GIXSQL         BY REFERENCE SQLCA
GIXSQL         BY REFERENCE "pgcobol_employeecursor" & x"00"
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLEndSQL"
GIXSQL     END-CALL.

           display "fetch cursor" upon scherm.
           display SQLCODE upon scherm.

       r85-verwerk-employee.

           move ENO to r-ENO.
           move LNAME to r-LNAME.
           move FNAME to r-FNAME.
           move STREET to r-STREET.
           move CITY to r-CITY.
           move ST to r-ST.
           move ZIP to r-ZIP.
           move DEPT to r-DEPT.
           move PAYRATE to r-PAYRATE.
           move COM to r-COM.
           move DNUM1 to r-DNUM1.
           move DNUM2 to r-DNUM2.
           move DNUM3 to r-DNUM3.
           move MISCDATA to miscdata-group.
      *    move miscdata-len to r-miscdata-len.
      *    move miscdata-text to r-miscdata-text.

           move r-ENO to p-ENO.
           move r-LNAME to p-LNAME.
           move r-FNAME to p-FNAME.
           move r-STREET to p-STREET.
           move r-CITY to p-CITY.
           move r-ST to p-ST.
           move r-ZIP to p-ZIP.
           move r-DEPT to p-DEPT.
           move r-PAYRATE to p-PAYRATE.
           move r-COM to p-COM.
           move r-DNUM1 to p-DNUM1.
           move r-DNUM2 to p-DNUM2.
           move r-DNUM3 to p-DNUM3.
           move miscdata-text to p-miscdata-text.

           display employee-row upon scherm.
           perform p00-print.

GIXSQL*    EXEC SQL FETCH employeecursor INTO :employee-table END-EXEC.
GIXSQL     CALL STATIC "GIXSQLStartSQL"
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 23
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 256
GIXSQL         BY REFERENCE ENO
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 10
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE LNAME
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 10
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE FNAME
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 20
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE STREET
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 15
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE CITY
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 2
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE ST
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 5
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE ZIP
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE DEPT
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 15
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE PAYRATE
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 3
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE COM
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 16
GIXSQL         BY VALUE 132
GIXSQL         BY VALUE 0
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE MISCDATA
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE DNUM1
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE DNUM2
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLSetResultParams" USING
GIXSQL         BY VALUE 9
GIXSQL         BY VALUE 4
GIXSQL         BY VALUE -2
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE DNUM3
GIXSQL         BY REFERENCE 0
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLCursorFetchOne" USING
GIXSQL         BY REFERENCE SQLCA
GIXSQL         BY REFERENCE "pgcobol_employeecursor" & x"00"
GIXSQL     END-CALL
GIXSQL     CALL STATIC "GIXSQLEndSQL"
GIXSQL     END-CALL.

           display "fetch cursor" upon scherm.
           display SQLCODE upon scherm.

       r89-close-cursor.

GIXSQL*    EXEC SQL CLOSE employeecursor END-EXEC.
GIXSQL     CALL STATIC "GIXSQLCursorClose" USING
GIXSQL         BY REFERENCE SQLCA
GIXSQL         BY REFERENCE "pgcobol_employeecursor" & x"00"
GIXSQL     END-CALL.

       r90-init.
           perform s00-connect.
           open output fprinter.

       r99-exit.

           perform s99-disconnect.
           close fprinter.
           perform z99-exit.

       z99-exit.

           stop run.

       s00-connect.
           display "DATASRC" upon scherm.
           display "DBUSR" upon scherm.
           display "DBPWD" upon scherm.

           MOVE 'CONNECT' TO CUR-STEP.
GIXSQL*    EXEC SQL
GIXSQL*       CONNECT :DBUSR IDENTIFIED BY :DBPWD USING :DATASRC
GIXSQL*       CONNECT TO :DATASRC AS cobol_sql USER :DBUSR USING :DBPWD
GIXSQL*       CONNECT TO "pgsql://localhost:5432/cobol_gixsql"
GIXSQL*                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 "cobol_sql" & 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.
           display "connect to database" upon scherm.
           display SQLCODE upon scherm.

       s99-disconnect.
           display "DATASRC" upon scherm.
           display "DBUSR" upon scherm.
           display "DBPWD" upon scherm.

           MOVE 'DISCONNECT' TO CUR-STEP.
GIXSQL*    EXEC SQL CONNECT RESET cobol_sql END-EXEC.
GIXSQL     CALL STATIC "GIXSQLConnectReset" USING
GIXSQL         BY REFERENCE SQLCA
GIXSQL         BY REFERENCE "cobol_sql" & x"00"
GIXSQL         BY VALUE 0
GIXSQL     END-CALL.
GIXSQL*    EXEC SQL DISCONNECT cobol_sql END-EXEC.
GIXSQL     CALL STATIC "GIXSQLConnectReset" USING
GIXSQL         BY REFERENCE SQLCA
GIXSQL         BY REFERENCE "cobol_sql" & x"00"
GIXSQL         BY VALUE 0
GIXSQL     END-CALL.
           display "disconnect from database" upon scherm.
           display SQLCODE upon scherm.

       p00-print.
           if line-number > 50 then
             move 1 to line-number 
             add 1 to page-number 
             move page-number to f-page-number
             move employee-page to print-buffer
             write file-buffer from print-buffer
             move employee-header to print-buffer
             write file-buffer from print-buffer
             move employee-row to print-buffer
             write file-buffer from print-buffer
           else
             add 1 to page-number 
             move employee-row to print-buffer
             write file-buffer from print-buffer.

       999-PRG-ERR.
           display 'ERR - ' CUR-STEP ' : ' SQLCODE.
           display 'ERR - ' CUR-STEP ' : ' SQLERRMC(1:SQLERRML).
           MOVE -1 TO RETURN-CODE.
GIXSQL*
GIXSQL*   ESQL CURSOR DECLARATIONS (START)
GIXSQL     GO TO GIX-SKIP-CRSR-INIT.
GIXSQL GIXSQL-CI-P-pgcobol-employeecursor.
GIXSQL     CALL STATIC "GIXSQLCursorDeclare" USING
GIXSQL         BY REFERENCE SQLCA
GIXSQL         BY REFERENCE "cobol_sql" & x"00"
GIXSQL         BY VALUE 0
GIXSQL         BY REFERENCE "pgcobol_employeecursor" & 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)

Back to: Cobol and PostgreSQL