Skip to main content

%Library.COSCallout

Class %Library.COSCallout Extends %RegisteredObject [ System = 4 ]

Transform COS source code to a parse tree

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

Properties

BinDir

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.

DLLCallMode

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

DLLHandle

Property DLLHandle As %Integer [ InitialExpression = 0 ];

The cached DLLHandle (used only when DLLCallMode=2)

DLLResultCode

Property DLLResultCode As %String(TRUNCATE = 1);

Set to a result code string

Mainly of use to Intersystems support.

Methods

%OnClose

Method %OnClose() As %Status

Compile

Method Compile(SourceStream As %RawString, ErrorsStream As %RawString, 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 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 }

ConfigName

Method ConfigName() As %String [ CodeMode = expression, Private ]

Helper function to return the InterSystems IRIS configuration name.

ConfigPath

Method ConfigPath() As %String [ CodeMode = expression, Private ]

Helper function to return the InterSystems IRIS configuration path.

InvokeDLL

Method InvokeDLL(DLLFunction As %Integer, DLLArgs) As %List [ Private ]

Invoke the CacheObjectScript DLL function (DLLFunction), passing DLLArgs.

Returns what the $ZF call into the DLL returns, or something in the same format :-

$LISTBUILD(ZFOK, $LISTBUILD(Lang1, Lang2, ...), ColoringErrors, DLLResultCode)

ZF5

Method ZF5(handle As %Integer, DLLFunction As %Integer, DLLArgs, ByRef failed As %Boolean) As %String [ Private ]

Sets failed to 1 if the $ZF(-5,..) call fails, otherwise sets it to 0 and returns the DLL return code

ZF6

Method ZF6(DLLPath As %String, DLLFunction As %Integer, DLLArgs, ByRef failed As %Boolean) As %String [ Private ]

Sets failed to 1 if the $ZF(-6,..) call fails, otherwise sets it to 0 and returns the DLL return code

PathToDLL

ClassMethod PathToDLL() As %String

Return the path to the DLL

SetDefaultBinDir

Method SetDefaultBinDir() [ Private ]

Set the default for the instance's "Bin" directory