Home > Class Reference > ENSLIB namespace > %Library.COSCallout
Private  Storage   


class %Library.COSCallout extends %RegisteredObject

Transform COS source code to a parse tree

Internal ISC code, not for customer use - these interfaces may change without warning


Parameters Properties Methods Queries Indices ForeignKeys Triggers
4 3


BinDir DLLCallMode DLLHandle DLLResultCode

%AddToSaveSet %ClassIsLatestVersion %ClassName %ConstructClone
%DispatchClassMethod %DispatchGetModified %DispatchGetProperty %DispatchMethod
%DispatchSetModified %DispatchSetMultidimProperty %DispatchSetProperty %Extends
%GetParameter %IsA %IsModified %New
%NormalizeObject %ObjectModified %OnClose %OriginalNamespace
%PackageName %RemoveFromSaveSet %SerializeObject %SetModified
%ValidateObject Compile PathToDLL


• property BinDir as %String(TRUNCATE=1);

The directory for CacheObjectScript.DLL.

Defaults to the CacheSys/Bin directory - change it if you want to debug a different version of the DLL.

• property DLLCallMode as %Integer [ InitialExpression = 3 ];

How we call the DLL

Takes one of the following values :-

1 - use $ZF(-3) ... handy for debugging the DLL because it doesn't stay loaded

2 - use $ZF(-4)/$ZF(-5) ... to cache the DLL handle

3 - use $ZF(-4)/$ZF(-6) ... the default - there's normally no reason to change it

Initialised to 3

• property DLLHandle as %Integer [ InitialExpression = 0 ];

The cached DLLHandle (used only when DLLCallMode=2)

• property DLLResultCode as %String(TRUNCATE=1);

Set to a result code string

Mainly of use to Intersystems support.


• method %OnClose() as %Status
This callback method is invoked by the %Close method to provide notification that the current object is being closed.

The return value of this method is ignored.

• method Compile(SourceStream As %CacheString, ErrorsStream As %CacheString, ByRef ColoringErrors As %Boolean) as %Boolean

Convert the given COS source code to a parse tree

  • SourceStream is a stream containing the source code

  • ErrorsStream is a stream to which any error messages are written

The return value is 1 on success, 0 on failure

If 0 is returned the caller should see the DLLResultCode property for information about failure.

CacheObjectScript.DLL must be in the directory given by the BinDir property. By default this points to the CacheSys/Bin directory.

In the example below SourceIn and ErrorsOut are streams. SourceIn supplies the source code and ErrorsOut receives any error messages.

	Set TT=##class(%Library.COSCallout).%New()
	Set Ret=TT.Compile(SourceIn,ErrorsOut)
	If 'Ret Write "Fatal error: ",TT.DLLResultCode,! ZTrap
	Do Errors.Rewind()
	If 'Errors.AtEnd {
	  //... show Errors
	Else {
	  //... use tree
• classmethod PathToDLL() as %String

Return the path to the DLL