QBNRPII is a system API. It returns the PCML description for each module bound in a service program.
QBNRPII is defined by a PCML stream file as follow:
<pcml version="1.0">
<struct name="QName">
<data name="Obj" type="char" length="10" />
<data name="Lib" type="char" length="10" init="*LIBL" />
</struct>
<struct name="Entry">
<data name="OffsetNextEntry" type="int" length="4" />
<data name="ModuleName" type="char" length="10" />
<data name="ModuleLib" type="char" length="10" />
<data name="InterfaceInfoCCSID" type="int" length="4" />
<data name="InterfaceInfoType"type="int" length="4" />
<data name="InterfaceInfoOffset" type="int" length="4" />
<data name="InterfaceInfoReturn" type="int" length="4" />
<data name="InterfaceInfoAvail" type="int" length="4" />
<data name="InterfaceInfo" type="char" length="InterfaceInfoReturn"
offset="InterfaceInfoOffset" offsetfrom="receiver"/>
<data type="byte" length="0"
offset="OffsetNextEntry" offsetfrom="receiver"/>
</struct>
<struct name="receiver">
<data name="BytesReturn"type="int" length="4" />
<data name="BytesAvail" type="int" length="4" />
<data name="ObjName" type="char" length="10" />
<data name="ObjLib" type="char" length="10" />
<data name="ObjType" type="char" length="10" />
<data name="filer1" type="char" length="2" />
<data name="OffsetFirstEntry" type="int" length="4" />
<data name="NumberOfEntries" type="int" length="4" />
<data type="byte" length="0"
offset="OffsetFirstEntry" offsetfrom="receiver" />
<data name="Entries" type="struct" struct="Entry" Count="NumberOfEntries" />
</struct>
<program name="qbnrpii" path="/QSYS.lib/QBNRPII.pgm" >
<data name="receiver" type="struct" struct="receiver"
usage="output" outputsize="receiverLength"/>
<data name="receiverLength" type="int" length="4" usage="input"
init="4096" />
<data name="formatName" type="char" length="8" usage="input"
init="RPII0100" />
<data name="QObjName" type="struct" struct="QName" usage="input" />
<data name="ObjType" type="char" length="10" usage="input"
init="*SRVPGM" />
<data name="QBndModName" type="char" length="20" usage="input"
init="*ALLBNDMOD"/>
<data name="errorCode" type="int" length="4" usage="input" init="0" />
</program>
</pcml>
Program definition is loaded from PCML stream file by following XML Easycom request:
<?xml version="1.0" encoding="utf-8" ?>
<Easycom>
<define>
<file stmf="/tmp/sr/qbnrpii.pcml" type="PCML" />
</define>
</Easycom>
Program is called by following XML Easycom request:
<?xml version="1.0" encoding="utf-8" ?>
<Easycom>
<Program Name="qbnrpii">
<parameterList>
<receiverLength>4096</receiverLength>
<QObjName>
<Obj>RPGPRC01</Obj>
<Lib>SR</Lib>
</QObjName>
</parameterList>
</Program>
</Easycom>
Following XML stream is returned back:
For each module, value of "receiver.Entries.i[n].InterfaceInfo" is the PCML description of the module entry points.
<?xml version="1.0" ?>
<PCML Load... Time="2011-01-24 18:06:11.396" Clock="0"/>
<end PCML Load... Time="2011-01-24 18:06:11.400" Clock="3"/>
<Call... Time="2011-01-24 18:06:11.400" Clock="3"/>
<Init... Time="2011-01-24 18:06:11.401" Clock="4"/>
<Program name="qbnrpii">
<ParameterList>
<receiver Type="Struct">
<BytesReturn>1496</BytesReturn>
<BytesAvail>1496</BytesAvail>
<ObjName>RPGPRC01</ObjName>
<ObjLib>SR</ObjLib>
<ObjType>*SRVPGM</ObjType>
<filer1></filer1>
<OffsetFirstEntry>48</OffsetFirstEntry>
<NumberOfEntries>2</NumberOfEntries>
<Program/>
<Entries Type="Array" count="2">
<i Type="Struct">
<OffsetNextEntry>1364</OffsetNextEntry>
<ModuleName>CUST_DIM</ModuleName>
<ModuleLib>SR</ModuleLib>
<InterfaceInfoCCSID>37</InterfaceInfoCCSID>
<InterfaceInfoType>1</InterfaceInfoType>
<InterfaceInfoOffset>92</InterfaceInfoOffset>
<InterfaceInfoReturn>1270</InterfaceInfoReturn>
<InterfaceInfoAvail>1270</InterfaceInfoAvail>
<InterfaceInfo><pcml version="4.0"> <struct name="DS_CUST"> <data name="CUST_ID" type="zoned" length="5" \
precision="0" usage="inherit" /> <data name="COMPANY" type="char" length="30" usage="inherit" /> <data \
name="FIRSTNAME" type="char" length="20" usage="inherit" /> <data name="LASTNAME" type="char" \
length="20" usage="inherit" /> <data name="CIVIL" type="char" length="1" usage="inherit" /> <data \
name="ADDRESS" type="char" length="30" usage="inherit" /> <data name="ADDR2" type="char" length="30" \
usage="inherit" /> <data name="CITY" type="char" length="15" usage="inherit" /> <data name="STATE" \
type="char" length="20" usage="inherit" /> <data name="ZIP" type="char" length="10" usage="inherit"\
/> <data name="COUNTRY" type="char" length="20" usage="inherit" /> <data name="PHONE" type="char" \
length="15" usage="inherit" /> <data name="FAX" type="char" length="15" usage="inherit" /> </struct> \
<program name="CUST_DIM" entrypoint="CUST_DIM"> <data name="RESULT" type="struct" struct="DS_CUST" count="20" \
usage="inputoutput" /> <data name="TOREAD" type="int" length="4" precision="31" usage="inputoutput" /> \
<data name="IO" type="int" length="4" precision="31" usage="inputoutput" /> <data name="TERM1" \
type="zoned" length="5" precision="0" usage="inputoutput" /> </program></pcml></InterfaceInfo>
<Program/>
</i>
<i Type="Struct">
<OffsetNextEntry>0</OffsetNextEntry>
<ModuleName>CVTNW_PRC</ModuleName>
<ModuleLib>SR</ModuleLib>
<InterfaceInfoCCSID>37</InterfaceInfoCCSID>
<InterfaceInfoType>1</InterfaceInfoType>
<InterfaceInfoOffset>1408</InterfaceInfoOffset>
<InterfaceInfoReturn>88</InterfaceInfoReturn>
<InterfaceInfoAvail>88</InterfaceInfoAvail>
<InterfaceInfo><pcml version="4.0"> <program name="CVTNW_PRC" entrypoint="CVTNW_PRC"> </program></pcml></InterfaceInfo>
<Program/>
</i>
</Entries>
</receiver>
</ParameterList>
</Program>