Caché ObjectScript
![]() | This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|
First appeared | 1997 |
---|---|
OS | Cross-platform |
Influenced by | |
MUMPS |
Caché ObjectScript is a part of the Caché database system sold by InterSystems. The language is a functional superset of the ANSI-standard MUMPS programming language. Since Caché is at its core a MUMPS implementation, it can run ANSI MUMPS routines with no change. To appeal as a commercial product, Caché implements support for object-oriented programming, a macro preprocessing language, embedded SQL for ANSI-standard SQL access to M's built-in database, procedure and control blocks using C-like brace syntax, procedure-scoped variables, and relaxed whitespace syntax limitations.
The language has private and public variables and globals. Global has a different meaning in this language than in most; such variables are global across routines, processes, and sessions. Thus, editing a global variable is making permanent and immediate changes to a system-universal database (which survives reboots, etc.). The scope of a private variable is the local function, the scope of a public variable is the entire process. Variables, private and public, may be single elements or complete multi-dimensional arrays.
The great majority of Caché's feature-set is inherited from the ANSI MUMPS standard. See that article for details on how data is represented and the different ways a programmer can think about the data during development.
Caché programming examples
[edit]Hello world program as a routine
[edit]hello // hello world routine write "hello world" end quit // end
Then in Caché Terminal (assuming you wrote the hello routine to the SAMPLE namespace):
SAMPLE> DO ^hello
Hello world program as a ClassMethod
[edit]Class User.Helloworld { ClassMethod HelloWorld() { // Write to console Write "Hello World" Quit } }
Then in Caché Terminal (assuming you wrote the User.Helloworld Class to the SAMPLE namespace):
SAMPLE> DO ##class(User.Helloworld).HelloWorld()
See also
[edit]- GT.M, an implementation of MUMPS
- Profile Scripting Language, an extension to MUMPS
References
[edit]External links
[edit]- http://www.intersystems.com/cache
- https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=PAGE_objectscript