Include files and the QSYSINC library

The QSYSINC (system include) library provides all source includes for APIs shipped with i5/OS™.

This optionally installed library is fully supported, which means you can write APARs if you find errors in the includes.

You can install this library by using the GO LICPGM functions of i5/OS. Select the Install Licensed Programs option on the Work with Licensed Programs display and the i5/OS System Openness Includes option on the Install Licensed Programs display.

The terms include file and header file are interchangeable and pertain to the contents of the QSYSINC library. These files are intended to be compatible with future releases.

The naming conventions for the includes are the same as either the OPM API or the ILE service program name. If both exist, the include has both names.

Include files shipped with the QSYSINC library

The following table lists the include files that are shipped with the QSYSINC library:

Operating Environment Language File Name Member Name (Header File)
OPM APIs ILE C 1 H OPM API program name
RPG QRPGSRC OPM API program name or OPM API program name with the letter E replacing the letter Q for members containing array definitions
ILE RPG QRPGLESRC OPM API program name
COBOL QLBLSRC OPM API name
ILE COBOL QCBLLESRC OPM API program name
ILE APIs ILE C H Service program name or API program name 2
ILE RPG QRPGLESRC Service program name or API program name 2
ILE COBOL QCBLLESRC Service program name or API program name 2
UNIX® type ILE C ARPA Industry defined
ILE C H Industry defined
ILE C NET Industry defined
ILE C NETINET Industry defined
ILE C NETNS Industry defined
ILE C SYS Industry defined
Notes:
  1. CEE ILE APIs are included in this part of the table.
  2. The API can be either bindable when you use the service program name or callable when you use the API program name.

Besides the includes for specific APIs, other includes existing in the QSYSINC library follow:

API Description
QLIEPT and QUSEPT Allow C-language application programs to call OPM APIs directly through the system entry point table
QUSGEN Defines the generic header for list APIs
QUSEC Contains the structures for the error code parameter
Qxx Provides common structures that are used by multiple APIs (where the xx is the component identifier, for example, QMH, QSY, and so forth)

The include files that are shipped with the system define only the fixed portions of the formats. You must define the varying-length fields. The QSYSINC include files are read-only files. If you use a structure that contains one or more varying-length fields, you need to copy the include file to your library and edit your copy. Uncomment the varying-length fields in your copy of the include file, and specify the actual lengths you want. When using a structure as an input to an API, initialize the structure in its entirety (typically to x'00' but refer to the specific API documentation for the correct value) prior to setting specific field values within the structure. This will avoid having to initialize reserved fields by name, as the reserved field name may change in future releases. The files are built with a CCSID of 00037. When you compile a program in a specific CCSID, any QSYSINC include file is converted to the program CCSID.

Exit programs only have an include if the exit program contains a structure. The member names for these exit programs start with the letter E. Except for RPG array definitions for APIs that also start with E, any member names in the QSYSINC library that start with the letter E are include files for exit programs. The QSYSINC member name of these includes is provided in the parameter box for the applicable exit programs.

For development of client-based applications, integrated-file-system symbolic links to QSYSINC openness includes are also provided in the /QIBM/include path.

All source physical files are shipped with read capabilities only; changes cannot be made to the QSYSINC library. All are built with a CCSID of 00037. When you compile a program in a specific CCSID, any QSYSINC include file is converted to the program CCSID.

If you are coding in ILE C, the header files in the QSYSINC library are considered system include files. You should use the < and > symbols on the #include statement; this affects how the library list is used to search for header files.

If you are coding in RPG or COBOL and need to define storage for variable length fields, you should copy the appropriate QSYSINC system include to a user source library. You can then customize the include file to your specific needs and use the customized member when you compile your application.

If you are developing applications on a release n system that will run on a release n-1 system, you may want to copy each release's include files to user source libraries. This will minimize the impact of include file changes as APIs are enhanced over time with additional fields.

Related concepts
Extracting a field from the format
Related reference
Error code parameter
Examples: APIs