InterSystems IRIS Data Platform 2020.4 > Class Reference > ENSLIB namespace > %Library.COSCallout

%Library.COSCallout

class %Library.COSCallout extends %Library.RegisteredObject

Transform COS source code to a parse tree

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

Property Inventory

Method Inventory

Properties

property BinDir as %String (TRUNCATE = 1);

The directory for CacheObjectScript.DLL.

Defaults to the instance's "Bin" directory - change it if you want to debug a different version of the DLL.

Property methods: BinDirDisplayToLogical(), BinDirGet(), BinDirIsValid(), BinDirLogicalToDisplay(), BinDirLogicalToOdbc(), BinDirNormalize(), BinDirSet()
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 methods: DLLCallModeDisplayToLogical(), DLLCallModeGet(), DLLCallModeIsValid(), DLLCallModeLogicalToDisplay(), DLLCallModeNormalize(), DLLCallModeSet()
property DLLHandle as %Integer [ InitialExpression = 0 ];

The cached DLLHandle (used only when DLLCallMode=2)

Property methods: DLLHandleDisplayToLogical(), DLLHandleGet(), DLLHandleIsValid(), DLLHandleLogicalToDisplay(), DLLHandleNormalize(), DLLHandleSet()
property DLLResultCode as %String (TRUNCATE = 1);

Set to a result code string

Mainly of use to Intersystems support.

Property methods: DLLResultCodeDisplayToLogical(), DLLResultCodeGet(), DLLResultCodeIsValid(), DLLResultCodeLogicalToDisplay(), DLLResultCodeLogicalToOdbc(), DLLResultCodeNormalize(), DLLResultCodeSet()

Methods

method %OnClose() as %Status [ Language = objectscript ]
Inherited description: 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 %RawString, ErrorsStream As %RawString, ByRef ColoringErrors As %Boolean) as %Boolean [ Language = objectscript ]

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 instance's "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 [ Language = objectscript ]

Return the path to the DLL

Inherited Members

Inherited Methods

Feedback