| 
 | 
On Wed, 2006-03-15 at 10:30 -0600, Mike Troxclaire wrote:
>      C/EXEC SQL
>      C+ DECLARE MYCUR CURSOR FOR SELECT CSTNUM, CSNAME,
>      C+ CSADD1 FROM LIBRARY1/CSTMST WHERE CSTNUM = '   XXXXXXX'
>      C/END-EXEC
Reconsider hard coding the library name in the SQL statement.  It will
be impossible to have a test or development version when the program
only runs against the live database.
Reconsider the use of character literals where you could have a
substitution variable.  Errors will occur in your version if someone
attempts to use 12'34 for the customer number.  In other cases, SQL
injection attacks become possible.
partial example:
     d WMCACCT       e DS                  EXTNAME(WMCACCT)
     d sql             S            500a   varying
      *
 date components are stored in three separate fields,
      * four digit year, two digit month, two digit day
      * select all records on or after a requested date
      /free
         sql = 'SELECT ' +
                  '* '   +
               'FROM ' +
                  'WMCACCT ' +
               'WHERE ' +
                  ' (WAMCY > ? OR ' +
                  '   (WAMCY = ? AND WAMMM > ?) OR ' +
                  '     (WAMCY = ? AND WAMMM = ? AND WAMDD >= ?))';
      /end-free
     C/exec sql
     C+  prepare acct_stmt from :acct_sql
     C/end-exec
     C/exec sql
     C+  declare acct_get cursor for acct_stmt
     C/end-exec
     C/exec sql
     C+  open acct_get using :cy, :cy, :mm, :cy, :mm, :dd
     C/end-exec
     C/exec sql
     C+  fetch acct_get into :WMCACCT
     C/end-exec
     C                   dow       SQLCOD = 0
         --- processing goes here ---
     C/exec sql
     C+  fetch acct_get into :WMCACCT
     C/end-exec
     C                   enddo
     C/exec sql
     C+  close acct_get
     C/end-exec
     C                   eval      *inlr = '1'
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.