home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / dbms_mag / 9105 / gerritsn.may < prev    next >
Text File  |  1991-03-29  |  5KB  |  191 lines

  1.  
  2. «MDBU»LISTING 1
  3. «MDNM»
  4. DATA DIVISION.
  5.     ...
  6.     EXEC SQL BEGIN DECLARE SECTION END-EXEC.
  7.     ...
  8. 01 CUST-NO PIC S9(5) USAGE IS COMPUTATIONAL-4.
  9.     ...
  10.     EXEC SQL END DECLARE SECTION END-EXEC.
  11.     ...
  12. PROCEDURE DIVISION.
  13.     MOVE 23 TO CUST-NO.
  14.     EXEC SQL DELETE FROM customer WHERE c# = :CUST-NO END-EXEC.
  15.  
  16.  
  17. «MDBU»Listing 2«MDNM»
  18.  
  19.     EXEC SQL
  20.         DECLARE CITY_CUST CURSOR FOR
  21.             SELECT c#, name FROM customer
  22.              WHERE city = :CITY
  23.     END-EXEC.
  24.     ...
  25.     MOVE 'London' TO CITY.
  26.     EXEC SQL OPEN CITY_CUST END-EXEC.
  27.     EXEC SQL FETCH CITY_CUST INTO :CUST-NO, :CUST-NAME END-EXEC.
  28.     PERFORM READ-CITY-CUST UNTIL SQLCODE NOT EQUAL TO ZERO.
  29.     EXEC SQL CLOSE CITY_CUST END-EXEC.
  30.     GO TO ...
  31. ...
  32. READ-CITY-CUST.
  33.     PRINT CUST-NO, CUST-NAME.
  34.     EXEC SQL FETCH CITY_CUST INTO :CUST-NO, :CUST-NAME END-EXEC.
  35.  
  36.  
  37.  
  38. «MDBU»Listing 3«MDNM»
  39.  
  40. MOVE 'DELETE FROM customer WHERE c# = ?' TO SQL-TEXT.
  41. EXEC SQL PREPARE DELETE_CUST FROM :SQL-TEXT END-EXEC.
  42. ...
  43. MOVE 23 TO CUST_NO.
  44. EXEC SQL EXECUTE DELETE_CUST USING :CUST_NO END-EXEC.
  45. ...
  46. MOVE 15 TO CUST_NO.
  47. EXEC SQL EXECUTE DELETE_CUST USING :CUST_NO END-EXEC.
  48.  
  49.  
  50. «MDBU»Listing 4«MDNM»
  51.  
  52. 01    SQLDA.
  53.         02    SQLD PICTURE S9(9).
  54.         02    SQLVAR OCCURS SQLD TIMES.
  55.             03    SQLTYPE     PIC S9(4).
  56.             03    SQLLEN     PIC S9(4).
  57.             03    SQLDATA    POINTER.
  58.             03    SQLIND    POINTER.
  59.             03    SQLNAME    PIC X(30).
  60.  
  61.  
  62. «MDBU»Listing 5«MDNM»
  63.  
  64. SQLD:        2
  65. SQLTYPE(1):    453 (IBM's code value indicating fixed length char)
  66. SQLLEN(1):    5
  67. SQLDATA(1):    ptr -> "10"
  68. SQLIND(1):    ptr -> not null
  69. SQLNAME(1):    "c#"
  70. SQLTYPE(2):    453 (IBM's code value indicating fixed length char)
  71. SQLLEN(2):    12
  72. SQLDATA(2):    ptr -> "Smith"
  73. SQLIND(2):    ptr -> not null
  74. SQLNAME(2):    "name"
  75.  
  76.  
  77. «MDBU»Listing 6«MDNM»
  78.  
  79. 01    C-NO PIC X(5).
  80. 01    C-NAME PIC X(12).
  81. ...
  82. 01    SQLDA-DS.
  83.     02    SQLD.
  84.     02    SQLVAR OCCURS SQLD TIMES.
  85.         03    SQLTYPE    PIC S9(4).
  86.         03    SQLLEN     PIC S9(4).
  87.         03    SQLDATA    POINTER.
  88.         03    SQLIND    POINTER.
  89.         03    SQLNAME    PIC X(30).
  90. ...
  91.     MOVE 'SELECT c#, name FROM customer WHERE city = "London"'
  92.         TO SQL-TEXT.
  93.     EXEC SQL PREPARE DYN_SELECT FROM :SQL-TEXT END-EXEC.
  94.     EXEC SQL DECLARE DYN_CURSOR CURSOR FOR DYN_SELECT END-EXEC.
  95.     EXEC SQL DESCRIBE DYN_SELECT INTO SQLDA-DS END-EXEC.
  96. ...
  97.     EXEC SQL OPEN DYN_CURSOR END-EXEC.
  98.     EXEC SQL FETCH DYN_CURSOR USING DESCRIPTOR SQLDA-DS END-EXEC.
  99.     PERFORM READ-CITY-CUST UNTIL SQLCODE NOT EQUAL TO ZERO.
  100.     EXEC SQL CLOSE DYN_CURSOR END-EXEC.
  101.     GO TO ...
  102. ...
  103. READ-CITY-CUST.
  104.     MOVE GET-POINTED(SQLDATA(1) IN SQLDA-DS) TO C-NO.
  105.     MOVE GET-POINTED(SQLDATA(2) IN SQLDA-DS) TO C-NAME.
  106.     PRINT C-NO, C-NAME.
  107.     EXEC SQL FETCH DYN_CURSOR USING DESCRIPTOR SQLDA-DS END-EXEC.
  108.  
  109.  
  110. «MDBU»Listing 7«MDNM»
  111.  
  112.     EXEC SQL
  113.         DECLARE BROWSE CURSOR FOR
  114.             SELECT * FROM customer ORDER BY name
  115.     END-EXEC.
  116.     ...
  117.     EXEC SQL OPEN BROWSE END-EXEC.
  118.     EXEC SQL FETCH BROWSE INTO :CUST-NO, :CUST-NAME END-EXEC.
  119.     PERFORM BROWSING UNTIL CUST-SELECTED.
  120.     EXEC SQL CLOSE BROWSE END-EXEC.
  121.     GO TO ...
  122.  
  123. BROWSING.
  124.     PERFORM DISPLAY-CUST 20 TIMES OR UNTIL SQLCODE NOT EQUAL TO ZERO.
  125.     <Read the screen. Make CUST-SELECTED true if user picked one.>
  126. ...
  127. READ-CITY-CUST.
  128.     PRINT CUST-NO, CUST-NAME.
  129.     EXEC SQL FETCH BROWSE INTO :CUST-NO, :CUST-NAME END-EXEC.
  130.  
  131.  
  132. «MDBU»Listing 8«MDNM»
  133.  
  134. EXEC SQL DECLARE J CURSOR FOR
  135.     SELECT * FROM A,B,C,D,E,F,G
  136.      WHERE A.T = B.T
  137.        AND B.U = C.U
  138.        AND C.V = D.V
  139.        AND D.W = E.W
  140.        AND E.X = F.X
  141.        AND F.Y = G.Y
  142.        AND G.Z = :Z-KEY
  143. END-EXEC.
  144. ...
  145.     MOVE 123 TO Z-KEY.
  146.     EXEC SQL OPEN J END-EXEC.
  147.     EXEC SQL FETCH J INTO :M1, :M2, ..., :MN END-EXEC.
  148.     PERFORM READ-JOIN-J UNTIL SQLCODE NOT EQUAL TO ZERO.
  149.     EXEC SQL CLOSE J END-EXEC.
  150.     GO TO ...
  151. ...
  152. READ-JOIN-J.
  153.     PRINT M1, M2, ..., MN.
  154.     EXEC SQL FETCH J INTO :M1, :M2, ..., :MN END-EXEC.
  155.  
  156.  
  157. «MDBU»Listing 9«MDNM»
  158.  
  159. EXEC SQL DECLARE J CURSOR FOR
  160.     SELECT D.V, * FROM D,E,F,G
  161.      WHERE D.W = E.W
  162.        AND E.X = F.X
  163.        AND F.Y = G.Y
  164.        AND G.Z = :Z-KEY
  165. END-EXEC.
  166. EXEC SQL DECLARE K CURSOR FOR
  167.     SELECT * FROM A,B,C
  168.      WHERE A.T = B.T
  169.        AND B.U = C.U
  170.        AND C.V = :V-KEY
  171. END-EXEC.
  172. ...
  173.     MOVE 123 TO Z-KEY.
  174.     EXEC SQL OPEN J END-EXEC.
  175.     EXEC SQL FETCH J INTO :V-KEY, :MM, ..., :MN END-EXEC.
  176.     PERFORM READ-JOIN-J UNTIL SQLCODE NOT EQUAL TO ZERO.
  177.     EXEC SQL CLOSE J END-EXEC.
  178.     GO TO ...
  179. ...
  180. READ-JOIN-J.
  181.     EXEC SQL OPEN K END-EXEC.
  182.     EXEC SQL FETCH K INTO :M1, ..., :MM-1 END-EXEC.
  183.     PERFORM READ-JOIN-K UNTIL SQLCODE NOT EQUAL TO ZERO.
  184.     EXEC SQL CLOSE K END-EXEC.
  185.     EXEC SQL FETCH J INTO :V-KEY, :MM, ..., :MN END-EXEC.
  186.  
  187. READ-JOIN-K.
  188.     PRINT M1, M2, ..., MN.
  189.     EXEC SQL FETCH K INTO :M1, ..., :MM-1 END-EXEC.
  190.  
  191.