Defining the SQL communication area in ILE RPG applications that use SQL

The SQL precompiler automatically places the SQL communication area (SQLCA) in the definition specifications of the ILE RPG program before the first calculation specification, unless a SET OPTION SQLCA = *NO statement is found.

INCLUDE SQLCA should not be coded in the source program. If the source program specifies INCLUDE SQLCA, the statement will be accepted, but it is redundant. The SQLCA source statements for ILE RPG are:

// SQL COMMUNICATION AREA   
DCL-DS SQLCA;                                 
  SQLCAID CHAR(8) INZ(X'0000000000000000');   
   SQLAID CHAR(8) OVERLAY(SQLCAID);           
  SQLCABC INT(10);                            
   SQLABC BINDEC(9) OVERLAY(SQLCABC);         
  SQLCODE INT(10);                            
   SQLCOD BINDEC(9) OVERLAY(SQLCODE);         
  SQLERRML INT(5);                            
   SQLERL BINDEC(4) OVERLAY(SQLERRML);        
  SQLERRMC CHAR(70);                          
   SQLERM CHAR(70) OVERLAY(SQLERRMC);         
  SQLERRP CHAR(8);                            
   SQLERP CHAR(8) OVERLAY(SQLERRP);           
  SQLERR CHAR(24);                            
   SQLER1 BINDEC(9) OVERLAY(SQLERR:*NEXT);    
   SQLER2 BINDEC(9) OVERLAY(SQLERR:*NEXT);    
   SQLER3 BINDEC(9) OVERLAY(SQLERR:*NEXT);    
   SQLER4 BINDEC(9) OVERLAY(SQLERR:*NEXT);    
   SQLER5 BINDEC(9) OVERLAY(SQLERR:*NEXT);    
   SQLER6 BINDEC(9) OVERLAY(SQLERR:*NEXT);    
   SQLERRD INT(10) DIM(6) OVERLAY(SQLERR);    
  SQLWRN CHAR(11);                            
   SQLWN0 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWN1 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWN2 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWN3 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWN4 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWN5 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWN6 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWN7 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWN8 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWN9 CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWNA CHAR(1) OVERLAY(SQLWRN:*NEXT);      
   SQLWARN CHAR(1) DIM(11) OVERLAY(SQLWRN);   
  SQLSTATE CHAR(5);                           
   SQLSTT CHAR(5) OVERLAY(SQLSTATE); 
END-DS SQLCA;

If a SET OPTION SQLCA = *NO statement is found, the SQL precompiler automatically places SQLCODE and SQLSTATE variables in the definition specification. They are defined as follows when the SQLCA is not included:

DCL-S SQLCODE INT(10);   
DCL-S SQLSTATE CHAR(5);