10.41.2 Terminology

ProgID
A human readable name for an object class, typically as an atom, e.g. 'Excel.Application'.
CLSID (Class Identifier)
A globally unique identifier of a class, typically as an atom, e.g. '{00024500-0000-0000-C000-000000000046}'.

Where it makes sense a ProgID can be used instead of the corresponding CLSID.

IID (Interface Identifier)
A globally unique identifier of an interface. Currently only the 'IDispatch' interface is used so you do not have to care about this.
IName (Interface Name)
The human readable name of an interface, e.g. 'IDispatch'.

Where it makes sense an IName can be used instead of the corresponding IID.

Object
A COM-object (or rather a pointer to an interface).
ComValue
A value that can be passed from COM to SICStus Prolog. Currently numeric types, booleans (treated as 1 for true, 0 for false), strings, and COM objects.
ComInArg
A value that can be passed as an input argument to COM, currently one of:
atom
Passed as a string (BSTR)
numeric
Passed as the corresponding number
list
A code-list is treated as a string.
COM object
A compound term referring to a COM object.
compound
Other compound terms are presently illegal but will be used to extend the permitted types.

SimpleCallSpec
Denotes a single method and its arguments. As an example, to call the method named foo with the arguments 42 and the string "bar" the SimpleCallSpec would be the compound term foo(42,'bar') or, as an alternative, foo(42,"bar").

The arguments of the compound term are treated as follows:

ComInArg
See above
variable
The argument is assumed to be output. The variable is bound to the resulting value when the method returns.
mutable
The argument is assumed to be input/output. The value of the mutable is passed to the method and when the method returns the mutable is updated with the corresponding return value.

CallSpec
Either a SimpleCallSpec or a list of CallSpecs. If it is a list then all but the last SimpleCallSpec are assumed to denote method calls that return a COM-object. So for instance the VB statement app.workbooks.add can be expressed either as:
          comclient_invoke_method_proc(App, [workbooks, add])
     

or as

          comclient_invoke_method_fun(App, workbooks, WorkBooks),
          comclient_invoke_method_proc(WorkBooks, add),
          comclient_release(WorkBooks)
     

Send feedback on this subject.