I dont think that the link provided is relevant to my issue because I am using VB 6 and this is not an issue with EntireX v7. The IDL is :
library 'Global':'Bracweb' is
program 'BPE001N1':'StdCodesEnq' is define data parameter
1 IP-USER-ID (A6)
1 IP-RESOURCE-ID (A6)
1 IP-FORM-NAME (A8)
1 IP-ACTION (A1)
1 IOP-SCROLL-DIR (A1)
1 IOP-BOF (A1)
1 IOP-EOF (A1)
1 IOP-OCCURS (N3)
1 IOP-CODE-TYPE (A8)
1 IOP-DISP-ORDER (N3)
1 IOP-DESC (A32)
1 IOP-CODE (A8)
1 OP-CODE-TYPE (A8/50) In Out
1 OP-RESOURCE-ID (A6/50)
1 OP-DISP-ORDER (N3/50)
1 OP-DESC (A32/50)
1 OP-CODE (A8/50)
1 OP-DEFAULT (A1/50)
1 OP-ORIGINAL-CODE (A8/50)
1 OP-FIELD1 (A50/50)
1 OP-FIELD2 (A50/50)
1 OP-FIELD3 (A50/50)
1 OP-FIELD4 (A50/50)
1 OP-FIELD5 (A50/50)
1 ERR-TYPE (A1/5)
1 ERR-MESSAGE (A150/5)
1 ERR-TAB (N2/5)
1 ERR-PROGRAM (A8/5)
1 ERR-FIELD (A20/5)
end-define
and the VB 6 code is:
Public Sub getCodes(Optional ipUserID As String = "", Optional ipResourceID As String = "", _
Optional ipFormName As String = "BPE001N1", Optional ipAction As String = "", _
Optional iopScrollDir As String = "", Optional iopBof As String = "", _
Optional iopEOF As String = "", Optional iopOccurs As String = "", _
Optional iopCodeType As String = "")
Dim xmlNode As MSXML2.IXMLDOMElement
Dim xmlAttrib As MSXML2.IXMLDOMAttribute
Dim codetypeIN As String * 8
Dim iopDispOrder As String
Dim iopDesc As String * 32
Dim IOPCODE As String * 8
Dim OPEOF As String
Dim opCodeType() As String
Dim OPRESOURCEID() As String
Dim opDispOrder() As String
Dim OPDESC() As String
Dim OPCODE() As String
Dim opDefault() As String
Dim OPORIGINALCODE() As String
Dim opField1() As String
Dim opField2() As String
Dim opField3() As String
Dim opField4() As String
Dim opField5() As String
'Errors
Dim opErrorType() As String
Dim opErrorMessage() As String
Dim opErrorProgram() As String
Dim opErrorField() As String
Dim outDoc As MSXML2.DOMDocument40
Dim menuObj As MSXML2.DOMDocument40
Dim outXml As String
'On Error GoTo errorHandle:
Dim xmlGlobalNode As MSXML2.IXMLDOMElement
Dim xmlDatNode As MSXML2.IXMLDOMElement
Dim n As Long
Dim oldType As String
Set xmlNode = mvarXmlDom.selectSingleNode("//GLOBALS")
codetypeIN = iopCodeType
ReDim opCodeType(49) As String
ReDim OPRESOURCEID(49) As String
ReDim opDispOrder(49) As String
ReDim OPDESC(49) As String
ReDim OPCODE(49) As String
ReDim opDefault(49) As String
ReDim OPORIGINALCODE(49) As String
'Errors.
ReDim opErrorType(4) As String
ReDim opErrorMessage(4) As String
ReDim opErrorTab(4) As String
ReDim opErrorProgram(4) As String
ReDim opErrorField(4) As String
ipUserID = ""
ipResourceID = ""
ipAction = ""
mvarExObj.ServerAddress = commonXml.ConnectString("ENTXBRAC")
mvarExObj.StdCodesEnq ipUserID, ipResourceID, ipFormName, ipAction, _
iopScrollDir, iopBof, iopEOF, iopOccurs, _
codetypeIN, iopDispOrder, iopDesc, IOPCODE, _
opCodeType, OPRESOURCEID, opDispOrder, _
OPDESC, OPCODE, opDefault, OPORIGINALCODE, _
opField1, opField2, opField3, opField4, opField5, _
opErrorType, opErrorMessage, opErrorTab, _
opErrorProgram, opErrorField
End Sub
The line that causes the error is ‘mvarExObj.StdCodesEnq …’. This is the call to the EntireX generated dll. When the iopOccurs and iopDispOrder variables are changed from “” to “0”, the problem is resolved. Note that both these variables are defined as strings in VB 6 and that the IDL defines them as N3. Again, this works in EntireX version 7. So the problem seems to be that EntireX v8 does not tolerate blank strings for numeric variables.