In the article titled "APIs by Example: APIs and CL Command Interfaces" (October 22, 2006, article ID 53438) I mentioned the Retrieve Program Interface Information (QBNRPII) API that IBM had under development. In this article, I give you an update on that API, including the PTF numbers you need to install, and the APARs that document how it works.
A set of V5R4 PTFs recently released by IBM introduces compiler and API support for storing and retrieving program interface information in Program Call Markup Language (PCML) format. The support of storing PCML instructions in the created program object currently applies only to the ILE Cobol and ILE RPG compilers, and IBM currently has no plans to include other compilers. More specifically the ILE compilers have been enabled to store program interface information within *MODULE, *PGM and *SRVPGM objects.
For the ILE RPG compiler the support is implemented through a new control specification keyword -– here's an excerpt from the documentation:
Specify PGMINFO(*PCML : *MODULE) in the Control specification of an RPG module to have the PCML information added to the module. This information can later be retrieved from a program or service program containing this module, using an API.
The documentation also mentions the presence of some restrictions for this new program interface support: PCML cannot be successfully created for every RPG module. Please see the ILE RPG Programmer's Guide for details on the RPG parameter features that are not supported by PCML. If the PCML information cannot be created due to unsupported features in the parameters for the program or module, you can determine what caused the problem by compiling again, and specifying PGMINFO and INFOSTMF on the command. The stream file specified in the INFOSTMF parameter will show the details of the errors encountered while generating the PCML. Either change the parameters for the program or procedures to avoid the unsupported features, or remove the PGMINFO keyword from the Control specification.
In case you are wondering exactly what PCML is about, here's a (very) brief summary from the IBM online documentation (see link below): Program Call Markup Language (PCML) is a tag language that helps you call server programs with less Java code. PCML is based upon the Extensible Markup Language (XML), a tag syntax you use to describe the input and output parameters for server programs. PCML enables you to define tags that fully describe server programs called by your Java application. Please refer to the aforementioned link for more details.
A new API, Retrieve Program Interface Information (QBNRPII), has been created to enable the retrieval of the program interface information. The QBNRPII API is documented in detail in the related APARs and PTF cover letters as well as IBM's Infocenter -– please follow links below. Although some of the APARs seem to imply that the PCML support will be extended to include V5R3, there's currently no information about if and when this is going to happen. If interested, I suggest you contact your local IBM support to investigate further and keep you informed.
To implement the PCML support on your System i, load and apply the following PTFs:
SI23619
SI23544
SI27064
SI27061
SI27065 (superseded by SI28649)
Be sure to follow the instructions in the PTF coverletters and read the related APARs.
Retrieve Program Interface Information (QBNRPII) API:
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/apis/qbnrpii.htm
Program Call Markup Language:
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/rzahh/pcml.htm
APARs and PTFs describing and implementing PCML storage and retrieval:
PTF SI23619 -– Adds the QBNRPII API header and include files:
http://www-912.ibm.com/a_dir/as4ptf.nsf/a18db68aae4a7d81862566ba005d145c/c0d33cc74c46ecde862572dd00526343?OpenDocument
PTF SI23544 –- Delivers the QBNRPII API:
http://www-912.ibm.com/a_dir/as4ptf.nsf/a18db68aae4a7d81862566ba005d145c/4140684ab2ef9c7686257309004cfc6e?OpenDocument
PTF SI27064 –- Lets ILE compilers pass program interface information to the XPF binder:
http://www-912.ibm.com/a_dir/as4ptf.nsf/a18db68aae4a7d81862566ba005d145c/cdbb14cac975299f86257309004cfcbe?OpenDocument
PTF SI27061 -– Lets the PCML for an ILE RPG module be encapsulated within the module:
http://www-912.ibm.com/a_dir/as4ptf.nsf/a18db68aae4a7d81862566ba005d145c/2e79beccf63bcacc86257309004cfca0?OpenDocument
PTF SI27065 –- Support for H spec keyword PGMINFO(*PCML:*MODULE):
http://www-912.ibm.com/a_dir/as4ptf.nsf/a18db68aae4a7d81862566ba005d145c/818d47759563446186257309004cfccb?OpenDocument
PTF SI28649:
http://www-912.ibm.com/a_dir/as4ptf.nsf/a18db68aae4a7d81862566ba005d145c/957c42038d182285862573630052979b?OpenDocument
APAR SE25231:
http://www-912.ibm.com/n_dir/nas4apar.nsf/ALLAPARS/SE25231
APAR SE25189:
http://www-912.ibm.com/n_dir/nas4apar.nsf/ALLAPARS/SE25189
APAR SE25241:
http://www-912.ibm.com/n_dir/nas4apar.nsf/ALLAPARS/SE25241
APAR SE25436:
http://www-912.ibm.com/n_dir/nas4apar.nsf/ALLAPARS/SE25436
APAR SE25466:
http://www-912.ibm.com/n_dir/nas4apar.nsf/ALLAPARS/SE25466