User Language: Difference between revisions

From m204wiki
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
'''User Language''' (renamed '''SOUL''' in version 7.5 of Model 204) is the internal language of the <var class="product">[[Model 204]]</var> DBMS, a product of [http://www.rocketsoftware.com/m204 Rocket Software].  It is a 4th Generation Language (4GL), which means it was designed to be a "high level" language, with a good deal of abstraction and power embedded in relatively simple programming directives.
'''User Language''' (renamed '''SOUL''' in version 7.5 of Model 204) is the internal language of the <var class="product">[[Model 204]]</var> DBMS, a product of [http://www.rocketsoftware.com/m204 Rocket Software].  It is a 4th Generation Language (4GL), which means it was designed to be a "high level" language, with a good deal of abstraction and power embedded in relatively simple programming directives.


<var class="product">User Language</var> is characterized by its very easy, English-like syntax and its tight integration with the <var class="product">Model 204</var> DBMS.  Programs begin with a "Begin" statement and end with "End":
<var class="product">User Language</var> is characterized by its very easy, English-like syntax and its tight integration with the <var class="product">Model 204</var> DBMS.  Programs begin with a BEGIN statement and end with END (statements uppercased prior to version 7.5):
<p class="code">Begin
<p class="code">BEGIN
PRINT 'HELLO WORLD'
PRINT 'HELLO WORLD'
END  
END  
Line 8: Line 8:


Because it is tightly integrated into <var class="product">Model 204</var>, <var class="product">User Language</var> contains native instructions for manipulating data held in <var class="product">Model 204</var> files.  Records in a file are selected using variations on the '''FIND''' statement and can be looped over using a variety of structures, the main one being the '''FOR EACH RECORD''' loop.
Because it is tightly integrated into <var class="product">Model 204</var>, <var class="product">User Language</var> contains native instructions for manipulating data held in <var class="product">Model 204</var> files.  Records in a file are selected using variations on the '''FIND''' statement and can be looped over using a variety of structures, the main one being the '''FOR EACH RECORD''' loop.
 
<p class="code">BEGIN
BEGIN
X: IN FILE INVENTORY FIND ALL RECORDS FOR WHICH ITEMTYPE = 'BOOK'
X: IN FILE INVENTORY FIND ALL RECORDS FOR WHICH ITEMTYPE = 'BOOK'
  END FIND
    END FIND
  FOR EACH RECORD IN X
    FOR EACH RECORD IN X
      PRINT TITLE AND AUTHOR AND PUBLISHER AND PRICE
      PRINT TITLE AND AUTHOR AND PUBLISHER AND PRICE
  END FOR
    END FOR
END
END
</p>
 
In <var class="product">User Language</var>, variables begin with the percent sign (%), and native "functions," which implement many complex features of the language, begin with a dollar sign ($) &mdash; or a pound-sign in England or a Yen sign in Japan.
In <var class="product">User Language</var>, variables begin with the percent sign (%), and native "functions," which implement many complex features of the language, begin with a dollar sign ($) (or a pound-sign in England or a Yen sign in Japan).
<p class="code">BEGIN
<p class="code">BEGIN
   %X IS FLOAT
   %X IS FLOAT
Line 62: Line 61:
<li>[[:Category:SOUL $functions|$functions]]
<li>[[:Category:SOUL $functions|$functions]]
<li>[[:Category:File architecture and management|File architecure and management]]  
<li>[[:Category:File architecture and management|File architecure and management]]  
<li>[http://www.rocketsoftware.com/m204/products/index/documentation Model 204 PDFs]
<li>[http://www.rocketsoftware.com/m204/products/index/documentation Model 204 PDFs] (some [[Model 204 and Sirius documentation#Model 204 core documentation|converted]] to M204wiki)
</ul>
</ul>


[[Category:Overviews]]
[[Category:Overviews]]

Revision as of 20:47, 10 May 2013

User Language (renamed SOUL in version 7.5 of Model 204) is the internal language of the Model 204 DBMS, a product of Rocket Software. It is a 4th Generation Language (4GL), which means it was designed to be a "high level" language, with a good deal of abstraction and power embedded in relatively simple programming directives.

User Language is characterized by its very easy, English-like syntax and its tight integration with the Model 204 DBMS. Programs begin with a BEGIN statement and end with END (statements uppercased prior to version 7.5):

BEGIN PRINT 'HELLO WORLD' END

Because it is tightly integrated into Model 204, User Language contains native instructions for manipulating data held in Model 204 files. Records in a file are selected using variations on the FIND statement and can be looped over using a variety of structures, the main one being the FOR EACH RECORD loop.

BEGIN X: IN FILE INVENTORY FIND ALL RECORDS FOR WHICH ITEMTYPE = 'BOOK' END FIND FOR EACH RECORD IN X PRINT TITLE AND AUTHOR AND PUBLISHER AND PRICE END FOR END

In User Language, variables begin with the percent sign (%), and native "functions," which implement many complex features of the language, begin with a dollar sign ($) — or a pound-sign in England or a Yen sign in Japan.

BEGIN %X IS FLOAT FOR %X FROM 1 TO 10 IF $MOD(%X,2) THEN PRINT %X WITH ' IS ODD' ELSE PRINT %X WITH ' IS EVEN' END IF END FOR END

A wide variety of variations are possible with the language, allowing novice coders to start using the language quickly, and expert users to learn the shortcuts and abbreviations.

Model 204 provides its own terminal services, and User Language procedures are typically stored in Model 204 database files, so User Language programmers usually work directly inside the database environment, opening database files at the command level, editing User Language with Model 204's internal editor, and running programs with the "GO" directive from inside the editor.

It is also possible to access Model 204 from external programs using Host Language Interfaces or Model 204's SQL capability but, because User Language is so highly optimized, the majority of Model 204 applications are written in User Language.

Sirius Software extensions to User Language

Any Model 204 site with the Sirius Mods linked in, gains a number of enhancements to User Language, the most obvious one being mixed-case User Language:

Begin print 'Hello World' End

The Sirius-added Object-Oriented additions to User Language let you write sophisticated applications using a range of classes, some provided by Sirius and others that you can write locally. The Object-Oriented additions to User Language were contained in the Janus SOAP User Language Interface prior to version 7.5 of Model 204.

For a non-exhaustive list of User Language enhancements, some available throughout the Sirius Mods and some exclusive to the Janus SOAP User Language Interface, see "Non-OO User Language enhancements".

Before its emphasis evolved to the development of classes, Sirius also provided a large set of User Language $functions. These $functions and classes range from simple functions useful in the language ($Parse and $ParseX) to complex structures and constructs like Stringlists and Daemons that open up new ways of programming and new possibilities for managing complex, in-memory data manipulation.

In addition, many of the Sirius extensions to User Language support the Janus product set, which provides access to Model 204 via HTTP, sockets, Sybase Omni servers, FTP clients, and more.

See also