Highlighted
Absent Member.
Absent Member.
1488 views

EXEC SQL INCLUDE

Hi,

I'd like to understand the use of  EXEC SQL INCLUDE a bit better.

Can somebody explain (or point me to a good doc explanation)... what does EXEC SQL INCLUDE actually do and also what happens if host variables i.e. table layouts etc aren't declared inside one i.e. are just declared as regular working-storage items? Also does it matter if fields 'included' as it were, are not actually used with sql?

Do I need the special sqlda and sqlca includes or are they created automatically? If I do,can I copy the content into my own copybook? - ideally I'll have just one db related copybook that I can put it into the 100 or so programs I'm converting?

Should mfsqlmessagetext be 'included' ? Does it matter if it is or isn't?  

Thanks in advance,

Linden 

Linden Rowland - IT Consultant
Owner/Developer, www.SchoolReportWriter.com
IT Consultant to Tindle Newspaper Group

0 Likes
1 Reply
Highlighted
Micro Focus Expert
Micro Focus Expert

RE: EXEC SQL INCLUDE

Hi Linden,

EXEC SQL INCLUDE is actually the equivalent of a COPY statement. It will make available to the precompiler any source code within the copy file specified in the copybook.

For OpenESQL there is no restriction that host variables need to be within EXEC SQL INCLUDE statements or even within the EXEC SQL BEGIN DECLARE SECTION. You can define SQL host variables using standard COBOL PIC types or you can use SQL TYPEs.

Some preprocessors like Oracle's Pro*COBOL do require that you define host variables within a EXEC SQL BEGIN SECTION and END SECTION headers.

sqlca and sqlda are copybooks that reside in the Visual COBOL\cpylib folder. sqlca is the standard Communication Area and should be brought into every program that uses SQL as this is where error handling variables such as SQLCODE and SQLERRMC are defined. SQLDA is required if you are referencing fields within for using dynamic SQL

mfsqlmessagetext is a Micro Focus extension. If this field is defined then it will be used to store the full message text returned from the execution of a SQL statement. If this is not defined then the message text is only available within the sqlerrmc field and may be truncated because its max length is only 70 bytes and message may be longer.

05  SQLERRM.

     49  SQLERRML    PIC S9(4) COMP-5.

     49  SQLERRMC    PIC X(70).

You can find additional information on SQLCA here:

I would recommend that you do not copy the content of the SQLCA and SQLDA directly into a different copybook. If you wish to have any only one copybook to include then create a copybook that contains the EXEC SQL INCLUDE SQLCA END-EXEC statement itself. That way if the contents of SQLCA ever changes you will get the correct version.

0 Likes
The opinions expressed above are the personal opinions of the authors, not of Micro Focus. By using this site, you accept the Terms of Use and Rules of Participation. Certain versions of content ("Material") accessible here may contain branding from Hewlett-Packard Company (now HP Inc.) and Hewlett Packard Enterprise Company. As of September 1, 2017, the Material is now offered by Micro Focus, a separately owned and operated company. Any reference to the HP and Hewlett Packard Enterprise/HPE marks is historical in nature, and the HP and Hewlett Packard Enterprise/HPE marks are the property of their respective owners.