× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Chris,

I have not had much luck doing what you want the way you want, but I have had 
success building the entire statement as a string in COBOL and using the 
"EXECUTE IMMEDIATE" SQL command to execute it.

The program type is SQLCBL and was compiled with the CRTSQLCBL command using  
COMMIT(*NC) since very few of our files are journaled.

More information on Dynamic SQL and the commands that can be used is available 
at:
http://publib.boulder.ibm.com/iseries/v5r1/ic2924/index.htm?info/sqlp/rbafymstdynmic.htm
 
That web page also contains a link to information on the "EXECUTE IMMEDIATE" 
statement.

Let me know if I can provide any further information.

Bob

*************   Program Start  ****************
       IDENTIFICATION DIVISION.                               
       PROGRAM-ID.             TESTSQL.                       
       ENVIRONMENT DIVISION.                                  
       CONFIGURATION SECTION.                                 
       SOURCE-COMPUTER. IBM-AS400.                            
       OBJECT-COMPUTER. IBM-AS400.                            
                                                              
       SPECIAL-NAMES.          SYSOUT IS SYS-LST.             
                                                              
       DATA DIVISION.                                         
                                                              
       WORKING-STORAGE SECTION.                               
                                                              
       77  DSPSQLCODE          PIC ------99.                  
                                                              
       77  STMT1               PIC X(100) VALUE               
           "DELETE FROM MYFILE WHERE MYFIELD < ""6126""".     
                                                              
       77  STMT2               PIC X(100) VALUE               
           "DELETE FROM MYFILE2 WHERE MYFIELD2 = ""35""".     
                                                              
       77  STMTSTRING          PIC X(100).                    
                                                              
           EXEC SQL                                           
              INCLUDE SQLCA                                   
           END-EXEC.                                          
                                                              
                                                              
       PROCEDURE DIVISION.                                    
       000-PROGRAM-START.                                     
                                                              
           EXEC SQL                                           
              WHENEVER SQLERROR GO TO 900-SQL-ERROR           
           END-EXEC.                                          
                                                              
           MOVE STMT1  TO STMTSTRING.                         
           PERFORM 100-EXEC-SQL.                              
                                                              
           MOVE STMT2  TO STMTSTRING.                         
           PERFORM 100-EXEC-SQL.                              
                                                              
           GOBACK.                                            
                                                              
       100-EXEC-SQL.                                          
           EXEC SQL                                           
              EXECUTE IMMEDIATE :STMTSTRING                   
           END-EXEC.                                          
                                                              
       900-SQL-ERROR.                                         
           MOVE SQLCODE TO DSPSQLCODE.                        
                                                              
           DISPLAY "SQL ERROR - ERROR:" DSPSQLCODE "  STATE:" 
                                SQLSTATE UPON SYS-LST.        
                                                              
           GOBACK.                                            

*************   Program End  ******************

   ----------------------------------------------------------------------

   date: Thu, 8 Jan 2004 21:07:32 -0000
   from: "Chris Chambers \(M&M Software\)"
                   <cchambers@xxxxxxxxxxxxxxxxxxxxxx>
   subject: [COBOL400-L] Embedded SQL examples

   Hi there,

   I'm trying to write an UPDATE statement within a COBOL program where the

   Filename as well as the values to update are all parameterised.

   I can get the FILENAME to work if I use the PREPARE statement but not the
   values - and I can get the values to work in a straightforward UPDATE but
   the FILENAME is then not allowed as a parameter.

   I had imagined I may be able to construct something like this:

   EXEC-SQL
      UPDATE    :FILENAME
          SET     :FIELDNAME1    TO    :VALUE1
              WHERE     :FIELDNAME2    =    :VALUE2
   END-EXEC  

   If I string it altogether as a prepared statement the resulting command
   does not execute from within the program as it assumes the values to be a
   fieldname but if I copy and paste the same command into STRSQL it works
   fine - so what am I doing wrong?

   Anyone got some examples that work??

   Many Thanks,

   Chris
_______________________________________________
This is the COBOL Programming on the iSeries/AS400 (COBOL400-L) mailing list

To post a message email: COBOL400-L@xxxxxxxxxxxx 
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/cobol400-l 
or email: COBOL400-L-request@xxxxxxxxxxxx 
Before posting, please take a moment to review the archives
at http://archive.midrange.com/cobol400-l.




As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.