Class Methods and Routines
To run class methods, you use Do and the ##class syntax. If the class method you're calling is in the same class, you can use the .. shortcut (called relative dot syntax), which is similar to this. syntax for class methods in other languages. If a class method returns a value, you can use it anywhere an expression is allowed. The most typical case is using Set to assign the result of a class method to a variable.
USER>set cpus = ##class(%SYSTEM.Util).NumberOfCPUs() USER>write cpus 4 USER>
InterSystems IRIS class methods belonging to % classes (classes that start with the % character) can be called from any namespace. Class names and method names are case-sensitive.
Here's a summary of the several syntaxes you've seen for running code, calling either class methods or system routines. What's the difference between class methods and routines? Routines (and procedures within them) are an older form, still supported for backwards compatibility. This tutorial focuses on class methods; note that most of what is taught about class methods also applies to routines and procedures. You can use VS Code - ObjectScript to create routines also.
|do ##class(ObjectScript.RightTriangle).Main()||Call the Main() class method of the ObjectScript.RightTriangle class.|
|while ..IsNegative(side1)||Call the IsNegative() class method of the current class (ObjectScript.RightTriangle) to decide whether or not to stop looping.|
|do ..Compute(units, side1, side2)||Call the Compute() class method of the current class (ObjectScript.RightTriangle) to do the computations.|
|set cpus = ##class(%SYSTEM.Util).NumberOfCPUs()||Call the NumberOfCPUs() class method of the %SYSTEM.UtilOpens in a new window class, and assign its return value to a variable.|
|do ^%D||Call the %D routine to display the current date.|
|do ^%T||Call the %T routine to display the current time.|
|do ^%CD||Call the %CD routine to change to another namespace.|
|do ^%FREECNT||Call the %FREECNT routine to display the available space in the current database.|
|do ALL^%FREECNT||Call the ALL procedure within the %FREECNT routine to display the available space in ALL databases.|