<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://m204wiki.rocketsoftware.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JAL3</id>
	<title>m204wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://m204wiki.rocketsoftware.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JAL3"/>
	<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Special:Contributions/JAL3"/>
	<updated>2026-05-08T12:29:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Serial_(XmlDoc/XmlNode_function)&amp;diff=11482</id>
		<title>Serial (XmlDoc/XmlNode function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Serial_(XmlDoc/XmlNode_function)&amp;diff=11482"/>
		<updated>2011-03-29T21:25:43Z</updated>

		<summary type="html">&lt;p&gt;JAL3: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:XmlDoc/XmlNode:Serial subtitle}}&lt;br /&gt;
&lt;br /&gt;
This function converts an &amp;lt;var&amp;gt;XmlDoc&amp;lt;/var&amp;gt; subtree to the UTF-8 or EBCDIC&lt;br /&gt;
text string representation of the subtree.&lt;br /&gt;
(This process is called &#039;&#039;&#039;serialization&#039;&#039;&#039;,&lt;br /&gt;
because the text representation of a document is called the &#039;&#039;&#039;serial&#039;&#039;&#039;&lt;br /&gt;
form.)&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:XmlDoc/XmlNode:Serial syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A string variable for the string serialization of the subtree, encoded either in UTF-8 or, if the &amp;lt;var&amp;gt;EBCDIC&amp;lt;/var&amp;gt; option (see below) is used, in EBCDIC. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;nr&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;An &amp;lt;var&amp;gt;XmlDoc&amp;lt;/var&amp;gt; or &amp;lt;var&amp;gt;XmlNode&amp;lt;/var&amp;gt;, used as the context node for the &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;xpath&amp;lt;/var&amp;gt; expression. If an &amp;lt;var&amp;gt;XmlDoc&amp;lt;/var&amp;gt;, the &amp;lt;var&amp;gt;Root&amp;lt;/var&amp;gt; node is the context node. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;xpath&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A &amp;lt;var&amp;gt;Unicode&amp;lt;/var&amp;gt; string that is an [[XML processing in Janus SOAP#XML Path Language (XPath) in the XmlDoc API|XPath]] expression that results in a nodelist, the head of which is the top of the subtree to serialize. This is an optional argument; its default is a period (&amp;lt;tt&amp;gt;.&amp;lt;/tt&amp;gt;), that is, the node referenced by the method object (&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;nr&amp;lt;/var&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Prior to &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Mods&amp;lt;/var&amp;gt; version 7.6, this is an EBCDIC string. &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;options&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A blank delimited string that can contain one or more of the following options (but no repeats), which are identified below and described in greater detail in [[XmlDoc API serialization options|&amp;quot;XmlDoc API serialization options&amp;quot;]]: &lt;br /&gt;
&amp;lt;ul&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;EBCDIC&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Produces serialized output in EBCDIC text rather than the default encoding, UTF-8. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;ExclCanonical&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Produces serialized output in exclusive XML canonical form, as defined in the W3C &amp;quot;Exclusive XML Canonicalization&amp;quot; specification (http://www.w3.org/tr/xml-exc-c14n). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Indent &amp;lt;i&amp;gt;n&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Inserts space characters and line-ends into the serialized string such that if the string is broken at the line-ends and displayed as a tree, the display of each lower level in the subtree is indented &#039;&#039;n&#039;&#039; spaces from the previous level&#039;s starting point. You must also specify &amp;lt;var&amp;gt;CR&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;LF&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;CRLF&amp;lt;/var&amp;gt; (see below).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;CR&amp;lt;/b&amp;gt; (carriage-return), &amp;lt;b&amp;gt;LF&amp;lt;/b&amp;gt; (linefeed), or &amp;lt;b&amp;gt;CRLF&amp;lt;/b&amp;gt; (carriage-return followed by a linefeed)&amp;lt;br&amp;gt;&lt;br /&gt;
Inserts one of these line-end characters to provide line breaks in the serialized output. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;NoEmptyElt&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Deprecated as of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Mods&amp;lt;/var&amp;gt; version 7.0, this option ensures that all empty elements are serialized with a start tag followed by an end tag. The default is to serialize an empty element with an empty element tag (as in &amp;lt;code&amp;gt;&amp;lt;middleName/&amp;gt;&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;OmitNullElement&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
An &amp;lt;var&amp;gt;Element&amp;lt;/var&amp;gt; node that has no children and no &amp;lt;var&amp;gt;Attributes&amp;lt;/var&amp;gt; will not be serialized, unless it is the top level &amp;lt;var&amp;gt;Element&amp;lt;/var&amp;gt; in the subtree being serialized. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;SortCanonical&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This deprecated option serializes namespace declarations and attributes in sorted order (from lowest to highest with Unicode code ordering).&lt;br /&gt;
It is superseded by the &amp;lt;var&amp;gt;ExclCanonical&amp;lt;/var&amp;gt; option. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;WithComments&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
Includes in the serialized output all &amp;lt;var&amp;gt;Comment&amp;lt;/var&amp;gt; nodes in the specified subtree. &lt;br /&gt;
&amp;lt;p&amp;gt;&#039;&#039;&#039;Note:&#039;&#039;&#039; Specifying &amp;lt;var&amp;gt;WithComments&amp;lt;/var&amp;gt; without specifying &amp;lt;var&amp;gt;ExclCanonical&amp;lt;/var&amp;gt; has no effect. Specifying &amp;lt;var&amp;gt;ExclCanonical&amp;lt;/var&amp;gt; without specifying &amp;lt;var&amp;gt;WithComments&amp;lt;/var&amp;gt; suppresses all &amp;lt;var&amp;gt;Comment&amp;lt;/var&amp;gt; nodes from the result.&amp;lt;/p&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;b&amp;gt;XmlDecl&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Ensures that the serialization will contain the &amp;quot;XML Declaration&amp;quot; (&amp;lt;code&amp;gt;&amp;lt;?xml version=...?&amp;gt;&amp;lt;/code&amp;gt;), if the value of the &amp;lt;var&amp;gt;[[Version (XmlDoc property)|Version]]&amp;lt;/var&amp;gt; property is a non-null string, if the &amp;lt;var&amp;gt;XmlDoc&amp;lt;/var&amp;gt; is not empty,&lt;br /&gt;
and if the top of the subtree being serialized is the &amp;lt;var&amp;gt;Root&amp;lt;/var&amp;gt; node.&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;&amp;lt;var&amp;gt;AddTrailingDelimiter&amp;lt;/var&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This &amp;lt;var&amp;gt;[[Boolean]]&amp;lt;/var&amp;gt;, [[Methods#Named_parameters|name required]] parameter determines whether a final line-end character is added to the serialization when one of the &amp;lt;var&amp;gt;Serial&amp;lt;/var&amp;gt; method line-end options (&amp;lt;var&amp;gt;LF&amp;lt;/var&amp;gt;, &amp;lt;var&amp;gt;CR&amp;lt;/var&amp;gt;, or &amp;lt;var&amp;gt;CRLF&amp;lt;/var&amp;gt;) is specified.&lt;br /&gt;
&lt;br /&gt;
The default value of &amp;lt;var&amp;gt;AddTrailingDelimiter&amp;lt;/var&amp;gt; is &amp;lt;var&amp;gt;True&amp;lt;/var&amp;gt;, so &amp;lt;var&amp;gt;Serial&amp;lt;/var&amp;gt; specified with a line-end option adds a trailing line-end by default. If &amp;lt;var&amp;gt;AddTrailingDelimiter&amp;lt;/var&amp;gt; is &amp;lt;var&amp;gt;False&amp;lt;/var&amp;gt;, no final line-end character is added.&lt;br /&gt;
Specifying the &amp;lt;var&amp;gt;AddTrailingDelimiter&amp;lt;/var&amp;gt; argument without also specifying one of the line-end options has no effect on the resulting serialization.&lt;br /&gt;
&amp;lt;var&amp;gt;AddTrailingDelimiter&amp;lt;/var&amp;gt; is new as of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Mods&amp;lt;/var&amp;gt; version 7.0. It may be useful if a digital signature must be created which includes line-end characters between XML tags, but the &amp;lt;var&amp;gt;XmlDoc&amp;lt;/var&amp;gt; does not contain those line-end &amp;lt;var&amp;gt;Text&amp;lt;/var&amp;gt; nodes.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;options&amp;lt;/var&amp;gt; argument values may be specified in any case.&lt;br /&gt;
For example, &amp;lt;code&amp;gt;XmlDecl&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;xmldecl&amp;lt;/code&amp;gt; are interchangeable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;As of &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Sirius Mods&amp;lt;/var&amp;gt; version 7.6, &amp;lt;var&amp;gt;Attribute&amp;lt;/var&amp;gt; values are always serialized&lt;br /&gt;
within double-quotation-mark (&amp;lt;tt&amp;gt;&amp;quot;&amp;lt;/tt&amp;gt;) delimiters,&lt;br /&gt;
and a double-quotation mark character in an &amp;lt;var&amp;gt;Attribute&amp;lt;/var&amp;gt; value is serialized&lt;br /&gt;
as &amp;lt;code&amp;gt;&amp;amp;amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
Prior to version 7.6, this convention was not strictly observed.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
In the following example, the &amp;lt;var&amp;gt;Serial&amp;lt;/var&amp;gt; method EBCDIC&lt;br /&gt;
formatting of a document is shown.&lt;br /&gt;
A &amp;lt;var&amp;gt;Print&amp;lt;/var&amp;gt; statement display of the default UTF-8 formatting of &amp;lt;var&amp;gt;Serial&amp;lt;/var&amp;gt; is a&lt;br /&gt;
string that is not readily decipherable.&lt;br /&gt;
&amp;lt;p class=&amp;quot;code&amp;quot;&amp;gt;Begin&lt;br /&gt;
%doc is Object XmlDoc&lt;br /&gt;
%sl is Object Stringlist&lt;br /&gt;
%doc = New&lt;br /&gt;
%sl = New&lt;br /&gt;
&lt;br /&gt;
text to %sl&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;top&amp;gt;&lt;br /&gt;
   &amp;lt;a&amp;gt;&lt;br /&gt;
      &amp;lt;b&amp;gt;05&amp;lt;/b&amp;gt;&lt;br /&gt;
   &amp;lt;/a&amp;gt;&lt;br /&gt;
   &amp;lt;c&amp;gt;&lt;br /&gt;
      &amp;lt;d att=&amp;quot;val&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/c&amp;gt;&lt;br /&gt;
&amp;lt;/top&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
end text&lt;br /&gt;
&lt;br /&gt;
Call %doc:LoadXml(%sl)&lt;br /&gt;
Print &#039;Serial method output follows:&#039;&lt;br /&gt;
Print %doc:Serial(&#039;top&#039;, &#039;ebcdic&#039;)&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The example results follow:&lt;br /&gt;
&amp;lt;p class=&amp;quot;output&amp;quot;&amp;gt;Serial method output follows:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;top&amp;gt;&amp;lt;a&amp;gt;&amp;lt;b&amp;gt;05&amp;lt;/b&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;c&amp;gt;&amp;lt;d att=&amp;quot;val&amp;quot;/&amp;gt;&amp;lt;/c&amp;gt;&amp;lt;/top&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Request-Cancellation Errors==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;xpath&amp;lt;/var&amp;gt; is invalid.&lt;br /&gt;
&amp;lt;li&amp;gt;Result of &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;xpath&amp;lt;/var&amp;gt; is empty.&lt;br /&gt;
&amp;lt;li&amp;gt;An &amp;lt;var class=&amp;quot;term&amp;quot;&amp;gt;options&amp;lt;/var&amp;gt; setting is invalid.&lt;br /&gt;
&amp;lt;li&amp;gt;Insufficient free space exists in CCATEMP.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The subroutine that serializes an &amp;lt;var&amp;gt;XmlDoc&amp;lt;/var&amp;gt; and sends it as a&lt;br /&gt;
Web response is &amp;lt;var&amp;gt;[[WebSend (XmlDoc subroutine)|WebSend]]&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;li&amp;gt;Additional serializing methods include:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;[[Xml (XmlDoc function)|Xml]]&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;[[Print (XmlDoc/XmlNode subroutine)|Print]]&amp;lt;/var&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;[[AddXml]]&amp;lt;/var&amp;gt; (&amp;lt;var&amp;gt;[[HttpRequest]]&amp;lt;/var&amp;gt; class)&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To deserialize a string,&lt;br /&gt;
use &amp;lt;var&amp;gt;[[LoadXml (XmlDoc/XmlNode function)|LoadXml]]&amp;lt;/var&amp;gt;&lt;br /&gt;
or &amp;lt;var&amp;gt;[[WebReceive (XmlDoc function)|WebReceive]]&amp;lt;/var&amp;gt;.&lt;br /&gt;
&amp;lt;li&amp;gt;For more information about using XPath expressions, see [[XPath|&amp;quot;XPath&amp;quot;]].&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Template:XmlDoc/XmlNode:Serial footer}}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=CurrentTimeMilliseconds_(System_function)&amp;diff=41201</id>
		<title>CurrentTimeMilliseconds (System function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=CurrentTimeMilliseconds_(System_function)&amp;diff=41201"/>
		<updated>2011-03-29T21:19:05Z</updated>

		<summary type="html">&lt;p&gt;JAL3: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:System:CurrentTimeMilliseconds subtitle}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:System:CurrentTimeMilliseconds syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;A numeric variable to receive the current time, in milli-seconds, since January 1, 1900.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(System)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;CurrentTimeMilliseconds&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;System&amp;lt;/var&amp;gt; object variable, which may be null.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Oohh bad&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;CurrentTimeMilliseconds&amp;lt;/var&amp;gt; is the same as &amp;lt;var&amp;gt;[[$Sir_DateNM]]&amp;lt;/var&amp;gt;.&amp;lt;/ul&amp;gt;&lt;br /&gt;
{{Template:System:CurrentTimeMilliseconds footer}}&lt;br /&gt;
&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[Talk:CurrentTimeMilliseconds (System function)|User contributions]] &amp;lt;br&amp;gt;You are encouraged to add examples, corrections, etc. User contributions are not validated by Sirius.&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=CurrentTimeMilliseconds_(System_function)&amp;diff=41199</id>
		<title>CurrentTimeMilliseconds (System function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=CurrentTimeMilliseconds_(System_function)&amp;diff=41199"/>
		<updated>2011-03-29T15:58:02Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:System:CurrentTimeMilliseconds subtitle}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:System:CurrentTimeMilliseconds syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;A numeric variable to receive the current time, in milli-seconds, since January 1, 1900.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(System)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;CurrentTimeMilliseconds&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;[[System object]]&amp;lt;/var&amp;gt; variable, which may be null.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Oohh bad&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;CurrentTimeMilliseconds&amp;lt;/var&amp;gt; is the same as &amp;lt;var&amp;gt;[[$Sir_DateNM]]&amp;lt;/var&amp;gt;.&amp;lt;/ul&amp;gt;&lt;br /&gt;
{{Template:System:CurrentTimeMilliseconds footer}}&lt;br /&gt;
&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;[[Talk:CurrentTimeMilliseconds (System function)|User contributions]]: You are encouraged to add examples, corrections, etc. User contributions are not validated by Sirius.&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=CurrentTimeMilliseconds_(System_function)&amp;diff=41198</id>
		<title>CurrentTimeMilliseconds (System function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=CurrentTimeMilliseconds_(System_function)&amp;diff=41198"/>
		<updated>2011-03-29T15:55:11Z</updated>

		<summary type="html">&lt;p&gt;JAL3: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:System:CurrentTimeMilliseconds subtitle}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:System:CurrentTimeMilliseconds syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;A numeric variable to receive the current time, in milli-seconds, since January 1, 1900.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(System)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;CurrentTimeMilliseconds&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;[[System object]]&amp;lt;/var&amp;gt; variable, which may be null.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Usage notes==&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Oohh bad&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;var&amp;gt;CurrentTimeMilliseconds&amp;lt;/var&amp;gt; is the same as &amp;lt;var&amp;gt;[[$Sir_DateNM]]&amp;lt;/var&amp;gt;.&amp;lt;/ul&amp;gt;&lt;br /&gt;
{{Template:System:CurrentTimeMilliseconds footer}}&lt;br /&gt;
&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[Talk:CurrentTimeMilliseconds (System function)|User contributions]]: You are encouraged to add examples, corrections, etc. User contributions are not validated by Sirius.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Journal_class&amp;diff=14009</id>
		<title>Journal class</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Journal_class&amp;diff=14009"/>
		<updated>2011-03-25T21:53:12Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- Journal class --&amp;gt;&lt;br /&gt;
The Journal class provides an object-oriented interface to&lt;br /&gt;
CCAJLOG or CCAJRNL datasets and streams, including those that have&lt;br /&gt;
been aggregated by the MERGEJ utility.&lt;br /&gt;
A &#039;&#039;Model 204&#039;&#039; stream is a&lt;br /&gt;
datastream comprising one or more sequential journals which is created by the &#039;&#039;Model 204&#039;&#039;&lt;br /&gt;
DEFINE STREAM command (see the [[Model 204 Command Reference Manual]]).&lt;br /&gt;
 &lt;br /&gt;
To extract information programmatically&lt;br /&gt;
about the contents of a Journal object, you use&lt;br /&gt;
the methods of the Journal class.&lt;br /&gt;
To view such a journal&#039;s actual data, you use the Stringlist class&lt;br /&gt;
[[AppendJournalData (Stringlist function)|AppendJournalData]] function&lt;br /&gt;
&amp;amp;mdash;&lt;br /&gt;
or you use [[SirScan]], which implicitly calls AppendJournalData.&lt;br /&gt;
 &lt;br /&gt;
The Journal class is available in &#039;&#039;Sirius Mods&#039;&#039; 7.7 and later.&lt;br /&gt;
 &lt;br /&gt;
The Journal class operates on CCAJRNL or CCAJLOG datasets or streams,&lt;br /&gt;
which you make available to your Online by any of the following:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;An MVS DD card.&lt;br /&gt;
&amp;lt;li&amp;gt;A VSE DLBL card.&lt;br /&gt;
&amp;lt;li&amp;gt;A CMS FILEDEF command.&lt;br /&gt;
&amp;lt;li&amp;gt;A &#039;&#039;Model 204&#039;&#039; ALLOCATE command (see the &#039;&#039;Model 204 Command Reference Manual&#039;&#039;).&lt;br /&gt;
&amp;lt;li&amp;gt;A &#039;&#039;Model 204&#039;&#039; DEFINE STREAM command (see the &#039;&#039;Model 204 Command Reference Manual&#039;&#039;).&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[List of Journal methods]] lists all the methods in this class.&lt;br /&gt;
&lt;br /&gt;
==Journal example==&lt;br /&gt;
 &lt;br /&gt;
The following example is a program that displays the properties and contents of a&lt;br /&gt;
historical CCAJRNL.&lt;br /&gt;
The request makes use of a low setting of the parameter option MAXREC of the&lt;br /&gt;
AppendJournalData method to control the amount of journal data that is displayed:&lt;br /&gt;
&amp;lt;!-- pre style=&amp;quot;xmp&amp;quot;--&amp;gt;&lt;br /&gt;
    Begin&lt;br /&gt;
    %list is object stringlist&lt;br /&gt;
    %rc is float&lt;br /&gt;
    %jStartTime is longstring&lt;br /&gt;
    %jEndTime is longstring&lt;br /&gt;
    %journal is object Journal&lt;br /&gt;
    %msg is longstring&lt;br /&gt;
    %sTime is longstring&lt;br /&gt;
    %eTime is longstring&lt;br /&gt;
    %jHold is longstring&lt;br /&gt;
    %parm is longstring&lt;br /&gt;
    %threads is longstring&lt;br /&gt;
 &lt;br /&gt;
    &#039;&#039;&#039;* Get old journal and view its properties&#039;&#039;&#039;&lt;br /&gt;
    %journal  = new(&#039;OLDJRNL&#039;)&lt;br /&gt;
    if %journal eq Null then&lt;br /&gt;
       %msg = &#039;Journal is invalid or not allocated.&#039;&lt;br /&gt;
       jump to someErrorCondition&lt;br /&gt;
    end if&lt;br /&gt;
 &lt;br /&gt;
    printText {~} is {%journal:isMerged:tostring}&lt;br /&gt;
    printText {~} is {%journal:MergeCount}&lt;br /&gt;
    printText {~} is {%journal:stringFirstDateTime}&lt;br /&gt;
    printText {~} is {%journal:stringLastDateTime}&lt;br /&gt;
 &lt;br /&gt;
    &#039;&#039;&#039;* Set values for appendJournalData call&#039;&#039;&#039;&lt;br /&gt;
    %list = new&lt;br /&gt;
    %parm = &#039;AA USER MAXREC=100&#039;&lt;br /&gt;
    %threads = &#039;*&#039;&lt;br /&gt;
    %sTime = &#039;1012202370444&#039;&lt;br /&gt;
    %eTime = &#039;1012302373097&#039;&lt;br /&gt;
 &lt;br /&gt;
    &#039;&#039;&#039;* Test for time values that are out of range&#039;&#039;&#039;&lt;br /&gt;
    %jStartTime = %journal:stringFirstDateTime&lt;br /&gt;
    %jEndTime   = %journal:stringLastDateTime&lt;br /&gt;
    if %sTime ge %jEndTime:subString(2) Then&lt;br /&gt;
       %jHold = %jEndTime&lt;br /&gt;
       %msg = &#039;Requested start time is after end of journal.&#039;&lt;br /&gt;
       jump to someErrorCondition&lt;br /&gt;
    elseIf %eTime lt %jStartTime:subString(2) then&lt;br /&gt;
       %jHold = %jStartTime&lt;br /&gt;
       %msg = &#039;Requested end time is before start of journal.&#039;&lt;br /&gt;
       jump to someErrorCondition&lt;br /&gt;
    end if&lt;br /&gt;
 &lt;br /&gt;
    &#039;&#039;&#039;* Call the method&#039;&#039;&#039;&lt;br /&gt;
    %rc = %list:appendJournalData(  -&lt;br /&gt;
                StartTime=%sTime,   -&lt;br /&gt;
                EndTime=%eTime,     -&lt;br /&gt;
                Options=%parm,      -&lt;br /&gt;
                Threads=%threads,   -&lt;br /&gt;
                journal=%journal)&lt;br /&gt;
 &lt;br /&gt;
    Print %list:count AND &#039;list items:&#039;&lt;br /&gt;
    If %list:count eq 0 then&lt;br /&gt;
       Print %rc And &#039;is return code&#039;&lt;br /&gt;
    End If&lt;br /&gt;
    %list:print&lt;br /&gt;
 &lt;br /&gt;
    someErrorCondition:&lt;br /&gt;
          * do some error processing here&lt;br /&gt;
          Print %msg&lt;br /&gt;
 &lt;br /&gt;
    End&lt;br /&gt;
&amp;lt;!-- /pre--&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
The result is:&lt;br /&gt;
&amp;lt;!-- pre style=&amp;quot;xmp&amp;quot;--&amp;gt;&lt;br /&gt;
    %journal:isMerged:tostring is False&lt;br /&gt;
    %journal:MergeCount is 0&lt;br /&gt;
    %journal:stringFirstDateTime is 11012202370444&lt;br /&gt;
    %journal:stringLastDateTime is 11012509464897&lt;br /&gt;
    100 list items:&lt;br /&gt;
        0 ************************************************************************&lt;br /&gt;
          **&lt;br /&gt;
        0 * MODEL 204 IS PROPRIETARY TO AND A REGISTERED TRADEMARK OF COMPUTER&lt;br /&gt;
            *&lt;br /&gt;
        0 * CORPORATION OF AMERICA. ALL TITLE, COPYRIGHT AND OTHER PROPRIETARY&lt;br /&gt;
            *&lt;br /&gt;
        0 * RIGHTS SHALL BE RETAINED BY COMPUTER CORPORATION OF AMERICA. MODEL&lt;br /&gt;
           204 *&lt;br /&gt;
        0 * HAS BEEN LICENSED BY THIS CUSTOMER AND THE USE AND PROTECTION OF&lt;br /&gt;
            *&lt;br /&gt;
        0 * MODEL 204 IS GOVERNED BY THE LICENSE AGREEMENT BETWEEN THE CUSTOMER&lt;br /&gt;
            *&lt;br /&gt;
        0 * AND COMPUTER CORPORATION OF AMERICA.&lt;br /&gt;
            *&lt;br /&gt;
        0 *&lt;br /&gt;
            *&lt;br /&gt;
        0 * COPYRIGHT (C) 2010 COMPUTER CORPORATION OF AMERICA&lt;br /&gt;
            *&lt;br /&gt;
        0 * ALL RIGHTS RESERVED&lt;br /&gt;
            *&lt;br /&gt;
        0 ************************************************************************&lt;br /&gt;
          **&lt;br /&gt;
        0 M204.0060: MODEL 204 INITIALIZATION.  VERSION = 7.2.0D    EVCP/RSQL&lt;br /&gt;
           VERSION = 7.2.0D  03/01/10 23.11&lt;br /&gt;
        0 M204.0061: SMF SYSTEM ID = CMS, JOB NAME = ULSPFPRO, STEP NAME =&lt;br /&gt;
           02?³?2, JES ID =&lt;br /&gt;
        0 M204.0062: EXECUTE PARAMETERS: SYSOPT=187,LIBUFF=1600,NJBUFF=31,&lt;br /&gt;
          RESTARTU=1,SIRTUNE=0&lt;br /&gt;
        0 M204.1119: READING PARAMETERS&lt;br /&gt;
    &#039;&#039;&#039;      . . . (70+ lines not shown)&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;!-- /pre--&amp;gt;&lt;br /&gt;
[[Category:System classes]]&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=CharacterMap_class&amp;diff=12345</id>
		<title>CharacterMap class</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=CharacterMap_class&amp;diff=12345"/>
		<updated>2011-03-25T21:51:50Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A CharacterMap class object contains a mapping of characters to characters.&lt;br /&gt;
Each character in an In string&lt;br /&gt;
(the &amp;amp;ldquo;input table&amp;amp;rdquo;) is associated with, or mapped to, an individual character&lt;br /&gt;
from an Out string (the &amp;amp;ldquo;output table&amp;amp;rdquo;).&lt;br /&gt;
The output table may be supplemented with instances of a pad character&lt;br /&gt;
to ensure a one-to-one mapping with the input table characters.&lt;br /&gt;
 &lt;br /&gt;
The [[List of CharacterMap methods]] lists all the methods in this class.&lt;br /&gt;
 &lt;br /&gt;
CharacterMap includes a constructor, copy methods, and an update method&lt;br /&gt;
for modifying the map.&lt;br /&gt;
===Example===&lt;br /&gt;
Most of these methods are shown in the following example,&lt;br /&gt;
which features the intrinsic String [[Translate (String function)|Translate]] function.&lt;br /&gt;
In the example, a new CharacterMap is the argument for the Translate method;&lt;br /&gt;
then that map is copied and modified, and the modified map is used in a&lt;br /&gt;
second Translate call:&lt;br /&gt;
&lt;br /&gt;
    begin&lt;br /&gt;
    %map is object characterMap&lt;br /&gt;
    %map2 is object characterMap&lt;br /&gt;
    %ls is longstring&lt;br /&gt;
 &lt;br /&gt;
    %map = New(in=&#039;x-&#039;, out=&#039;!c&#039;)&lt;br /&gt;
    %ls = &#039;xu--exx&#039;&lt;br /&gt;
    [[Targeted Text statements|printtext]] {~} = &#039;{%ls:translate(%map)}&#039;&lt;br /&gt;
 &lt;br /&gt;
    %map2 = %map:Copy&lt;br /&gt;
    %map2:Update(in=&#039;x&#039;,out=&#039;s&#039;)&lt;br /&gt;
    printtext {~} = &#039;{%ls:translate(%map2)}&#039;&lt;br /&gt;
 &lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
The result is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    %ls:translate(%map) = &#039;!ucce!!&#039;&lt;br /&gt;
    %ls:translate(%map2) = &#039;success&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
This class is new as of version 7.3 of the &#039;&#039;Sirius Mods&#039;&#039;.&lt;br /&gt;
[[Category:System classes]]&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=Daemon_class&amp;diff=2325</id>
		<title>Daemon class</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=Daemon_class&amp;diff=2325"/>
		<updated>2011-03-25T21:41:40Z</updated>

		<summary type="html">&lt;p&gt;JAL3: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Daemon class&#039;&#039;&#039; provides a facility for issuing [[Model 204]] commands from inside a [[User Language]] request, simulating the calling of programs as if they were subroutines. &lt;br /&gt;
&lt;br /&gt;
Daemon objects are much like an object-oriented version of the Sirius $COMMxx $functions, which use Sirius sdaemons to run a command on another thread on behalf of the issuing user.  Daemon objects offer a number of advantage over $COMMxx function, and over non-daemon program execution:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;They can execute multiple calls per sdaemon login/logout sequence.&lt;br /&gt;
&amp;lt;li&amp;gt;From within a User Language program, you can issue commands that ordinarily cannot be executed within that program, for example, a REORG (for which you typically have to exit the program and execute another procedure).&lt;br /&gt;
&amp;lt;li&amp;gt;From within a User Language program, you can call a legacy application that is already packaged as a program as if it were a subroutine.  Ordinarily, such a program is equivalent to a command, and it cannot be called as a subroutine. You have to switch to it and set up complex mechanisms to pass control between the two routines.&lt;br /&gt;
&amp;lt;li&amp;gt;You can reduce the size of your programs, gaining relief from server size limitations.  Although a network service like a socket might also provide benefits comparable to those listed above, a Daemon object offers simplicity, both in the ability to implement and in the ease of adoption. Security-wise, there is no doubt which user is issuing the command, what subsystem that user is running, what files the user has open, what privileges the user has, etc.&lt;br /&gt;
&amp;lt;li&amp;gt;Data structures are more easily passed between a master and an sdaemon than over a communications connection, where every data structure has to be serialized by the sender and deserialized by the receiver.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Daemon API is implemented as a set of functions, subroutines and properties, documented as the [[:Category:Daemon methods|Daemon methods]].&lt;br /&gt;
&lt;br /&gt;
=Working with Daemon objects=&lt;br /&gt;
&lt;br /&gt;
In this Wiki the terms “daemon” or “daemon thread” are often used to mean “the sdaemon thread that is activated or involved when you employ or operate on a Daemon object.” The user or thread that invokes a daemon is the “master” or “master thread.” If a daemon itself invokes another daemon, both daemons have the same master, and the first daemon is the “parent” of the second. For more information about the master/parent distinction, see the [[#MasterNumber property|MasterNumber property]].&lt;br /&gt;
&lt;br /&gt;
A daemon thread runs a command on behalf of the issuing user, and the thread is only available to that master user. The thread does not, for example, maintain some context and accept requests from different users. A daemon thread operates (only) synchronously: processing on the issuing thread pauses to wait for the daemon thread to run the command(s) it receives. To pass a command to a daemon, you use the [[Run (Daemon function)|Run function]] with the command as argument. Two examples follow for the %foo Daemon object:&lt;br /&gt;
&lt;br /&gt;
 %foo:Run(&#039;OPEN FILE MYPROC&#039;)&lt;br /&gt;
 %list = %foo:Run(&#039;I REPORT&#039;)&lt;br /&gt;
&lt;br /&gt;
To have a daemon thread run multiple commands, you can specify multiple Run method calls, or you can define the commands as items in a Stringlist, and then specify the Stringlist as the argument in the Run method. The Stringlist is fed to the daemon as terminal input and executed item by item until that input runs out. For example, if the commands from the examples above were defined in that order as the items in Stringlist %testproc, the following statement would include the procedure REPORT from the MYPROC file:&lt;br /&gt;
&lt;br /&gt;
 %foo:run(%testproc)&lt;br /&gt;
&lt;br /&gt;
You use a Stringlist argument in this way to pass a User Language request to a daemon. Note: If the code in a request you pass to a daemon in a Stringlist depends on being mixed case, precede your Run method call with a statement like the following, so the daemon thread will preserve mixed case:&lt;br /&gt;
&lt;br /&gt;
 %foo:run(&#039;*LOWER&#039;)&lt;br /&gt;
&lt;br /&gt;
Although a daemon thread is request-specific, Daemon objects do have persistence. The daemon thread waits for work as long as the Daemon object exists. Since the Daemon object can be Global or Session as well as not, its span of existence can be arbitrarily long or short, depending on how it is being used.&lt;br /&gt;
&lt;br /&gt;
By default, a daemon thread does not share record locks or transactions with its master thread, and Commits and Backouts apply only to the thread that issues them. However, you can easily create daemons that share the update unit with the issuing thread. When such a daemon (“[[#Transactional daemons|Transactional daemons]]”, below) commits or backs out a transaction, the issuing thread&#039;s updates are committed or backed out as well.&lt;br /&gt;
&lt;br /&gt;
If a daemon thread does a user restart, the request is cancelled, but the calling thread is not also restarted. If a calling thread is logged off or restarted, its associated daemon threads are deleted. A daemon is not automatically restarted if the master restarts. The daemon does a user restart if it is processing a User Language request that calls for terminal input, and no Run method input follows the end of request.&lt;br /&gt;
&lt;br /&gt;
=A Daemon example=&lt;br /&gt;
&lt;br /&gt;
In the following example, the Run method is called three times for the %speed daemon. In the first two calls, the daemon executes a command that has no output object. In the final call, it executes a request and returns an XmlDoc.  Note the use of &amp;quot;text to %list&amp;quot; which captures to a stringList object the program we&#039;re submitting to the daemon:&lt;br /&gt;
&lt;br /&gt;
 b&lt;br /&gt;
   %speed is object daemon&lt;br /&gt;
   %list  is object stringList&lt;br /&gt;
   %silly is object xmlDoc&lt;br /&gt;
   %speed = new&lt;br /&gt;
   %speed:run(&#039;V UTABLE&#039;):print&lt;br /&gt;
   %speed:run(&#039;*LOWER&#039;):print&lt;br /&gt;
   %list = new&lt;br /&gt;
   text to %list&lt;br /&gt;
   b&lt;br /&gt;
     %doc is object xmlDoc&lt;br /&gt;
     %(daemon):getInputObject(%doc)&lt;br /&gt;
     %doc:selectSingleNode(&#039;/outer/inner&#039;):addAttribute(&#039;foo&#039;,&#039;bar&#039;)&lt;br /&gt;
     %(daemon):returnObject(%doc)&lt;br /&gt;
   end&lt;br /&gt;
   end text&lt;br /&gt;
   %silly = new&lt;br /&gt;
   %silly:loadXml(&#039;&amp;lt;outer&amp;gt;&amp;lt;inner&amp;gt;&amp;lt;innest&amp;gt;huh?&amp;lt;/innest&amp;gt;&amp;lt;/inner&amp;gt;&amp;lt;/outer&amp;gt;&#039;)&lt;br /&gt;
   %speed:run(%list, %silly, %silly)&lt;br /&gt;
   %silly:print&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
The example result follows:&lt;br /&gt;
&lt;br /&gt;
 HDRCTL X&#039;01&#039; HEADER CONTROL&lt;br /&gt;
 LVTBL 3000 LENGTH OF VTBL&lt;br /&gt;
 LNTBL 150 LENGTH OF NTBL&lt;br /&gt;
 . . .&lt;br /&gt;
 . . .&lt;br /&gt;
 . . .&lt;br /&gt;
 FIXSIZE 20392 FIXED SERVER SIZE REQUIREMENT&lt;br /&gt;
 SERVACTV 150416 CURRENT SIZE OF THIS SERVER&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;outer&amp;gt;&lt;br /&gt;
 &amp;lt;inner foo=&amp;quot;bar&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;innest&amp;gt;huh?&amp;lt;/innest&amp;gt;&lt;br /&gt;
 &amp;lt;/inner&amp;gt;&lt;br /&gt;
 &amp;lt;/outer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Daemon record locking=&lt;br /&gt;
&lt;br /&gt;
Prior to Sirius Mods version 6.8, sdaemons running on behalf of other threads, via the $COMMxx functions or via Daemon objects, can suffer record locking conflicts with other threads in the same thread family, because they are separate update units. Two threads are in the same family if one is a synchronous child daemon of the other via a $COMMxx function or via a Daemon object. In addition, all families with common threads are considered to be a single family. So, if thread A is a synchronous parent of thread B, which is a synchronous parent of thread C, threads A, B, and C are all considered part of the same family. Furthermore, if in this example, thread B has two other synchronous children (via Daemon objects), threads D and E, then threads A, B, C, D, and E are all considered part of the same family.&lt;br /&gt;
&lt;br /&gt;
As of version 6.8, only one condition remains under which two threads in the same family can suffer a record locking conflict: if they both try to update the same record, which would require both threads to have an exclusive pending update lock on the record being updated. However, even this possibility of a record locking conflict is eliminated for [[#Transactional daemons|transactional daemons]].&lt;br /&gt;
&lt;br /&gt;
Sirius Mods version 7.0 introduced support for [[#Asynchronous and Independent daemons|asynchronous and independent]] running of daemon requests. A daemon running asynchronously or independently is, at that point, no longer part of the family for the purposes of record locking. That is, an independently or asynchronously running daemon, or any of its daemons, cannot hold record locks that would conflict with its original master or any other daemons in the master&#039;s family.&lt;br /&gt;
&lt;br /&gt;
Effectively, while a daemon is running independently or asynchronously, the master&#039;s family is split from the daemon&#039;s family. For example, thread A has daemon threads B, C, and D, and D has daemon threads E and F; if D runs asynchronously, then while it is running asynchronously, the family A, B, and C is considered separate from D, E, and F as far as record locking goes. Since an asynchronous request will (usually) eventually go back to waiting for its parent, at that point the families are rejoined. Since an independent request never rejoins its parent, once a family is split because a daemon is running independently, it is never rejoined. Since a daemon thread (and its daemons) that is running asynchronously or independently leaves its family at the moment it starts running asynchronously or independently, it is possible for the RunAsynchronously or RunIndependently methods to fail because they would result in a record locking conflict between the newly split families.&lt;br /&gt;
&lt;br /&gt;
=Transactional daemons=&lt;br /&gt;
&lt;br /&gt;
As of Sirius Mods version 6.8, the New constructor for Daemon objects has a Boolean, named parameter called Transactional:&lt;br /&gt;
&lt;br /&gt;
 %pantalaimon is object daemon&lt;br /&gt;
 ...&lt;br /&gt;
 %pantalaimon = new(transactional=true)&lt;br /&gt;
&lt;br /&gt;
If Transactional is set to True, the master and daemon thread will share a single updating transaction. This means that if updates are performed by both the master and daemon thread, these updates are all committed or all backed out when a commit or backout is performed on either the daemon or master thread. If the master thread of a transactional daemon closes a file that was open in update mode, the transaction is committed; if the transactional daemon closes the file, the transaction is unaffected. If a transactional daemon thread is bumped, its master is also bumped.&lt;br /&gt;
&lt;br /&gt;
If a thread has multiple transactional daemons, then all those daemons share a single updating transaction with the master thread. In addition, if a transactional daemon thread itself has transactional daemon threads, those threads also share a single updating transaction with the ultimate master thread. Effectively, all of a thread&#039;s transactional daemons, and all those transactional daemon&#039;s transactional daemons, and so on, make up a transactional family that shares a single updating transaction. The processing of updating transactions on a transactional daemon thread differs from other threads in these ways:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Transactional daemon threads never do an implied commit. Other threads typically do implied commits at end of request, unless inside a nonautocommit subsystem. In addition, certain operations, such as a procedure update, cause an implied commit on non-transactional daemon threads. Of course, an explicit Commit or Backout statement run on a transactional daemon thread results in the transaction being committed or backed out, including those updates performed on the master thread or some other thread in the transactional family.&lt;br /&gt;
&amp;lt;li&amp;gt;As an outgrowth of the previous item, transactional daemon threads can perform procedure updates in the middle of an updating transaction, as well as other file maintenance operations, such as field definitions.&lt;br /&gt;
&amp;lt;li&amp;gt;Transactional daemon threads cannot perform User Language updates against files that their ultimate master thread does not have open in update mode. The ultimate master thread is the thread&#039;s master or the master&#039;s master, if that thread is, itself, a transactional daemon, and so on. The actual commit or backout is always performed on the highest level master thread in a transactional family, so that thread must have update privileges for all files in an updating transaction. One benefit of this approach is that it&#039;s possible for a daemon thread to perform some updates, go away (log off), and for the update to still not be committed. As noted in &amp;quot;[[#Daemon record locking|Daemon record locking]]&amp;quot; below, transactional daemons cannot suffer record locking conflicts with other threads in the family, and they can even update the same records as other threads in the transactional family.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Asynchronous and Independent daemons=&lt;br /&gt;
&lt;br /&gt;
As of Sirius Mods version 7.0, there are two new daemon methods: RunAsynchronously and RunIndependently:&lt;br /&gt;
&lt;br /&gt;
 %pantalaimon is object daemon&lt;br /&gt;
 ...&lt;br /&gt;
 %pantalaimon = new&lt;br /&gt;
 ...&lt;br /&gt;
 %pantalaimon:runAsynchronously(%commands)&lt;br /&gt;
 ...&lt;br /&gt;
 %pantalaimon:runIndependently(%commands)&lt;br /&gt;
&lt;br /&gt;
As the names suggest, both of these methods return immediately, before the daemon has completed processing its input commands. With RunAsynchronously, when the daemon commands are all processed, the daemon goes back to waiting for the master to tell it what to do next. To do this, the master thread has to make sure the daemon thread has completed processing by issuing the WaitAsynchronous method (new in Sirius Mods 7.0) against the Daemon object:&lt;br /&gt;
&lt;br /&gt;
 %pantalaimon is object daemon&lt;br /&gt;
 ...&lt;br /&gt;
 %pantalaimon:runAsynchronously(%commands)&lt;br /&gt;
 ...&lt;br /&gt;
 %pantalaimon:waitAsynchronous&lt;br /&gt;
&lt;br /&gt;
Even if a daemon thread running asynchronously has completed processing its commands, a WaitAsynchronous method must be issued against the Daemon object before further commands can be sent to the daemon. Most methods applied to a Daemon object that is running asynchronously result in request cancellation. Once the daemon that had been running asynchronously has been resynched with the master thread via WaitAsynchronous, the master thread can treat it just as any other daemon thread and issue further Open, Run, RunAsynchronous, RunIndependently, or other methods against the daemon.&lt;br /&gt;
&lt;br /&gt;
With RunIndependently, the daemon logs off when the daemon commands are all processed. This means that a daemon thread for which RunIndependently is issued can no longer be controlled by its master thread (as the method name would suggest). In fact, upon return from the RunIndependently method, the Daemon object is set to null, so any further methods invoked against it would result in request cancellation. RunIndependently is roughly analogous to the $commbg function with some important differences:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The RunIndependently method allows interaction with the daemon before it does its independent processing.&lt;br /&gt;
&amp;lt;li&amp;gt;RunIndependently operates on a Daemon object that already has a daemon thread associated with it. $commbg obtains a daemon thread as part of its processing and,&lt;br /&gt;
&amp;lt;li&amp;gt;if one is not available or the maximum independent/background daemons are already running, the request is enqueued.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That RunIndependently already has a thread has positive and negative aspects: If the master thread wants to be sure that the daemon thread is actually running, RunIndependently has the preferred behavior. If the master thread doesn&#039;t care whether the request runs immediately (and in fact, would prefer that the request be run later if/when it is convenient), then $commbg&#039;s behavior is preferable. Note, however, that there is no guarantee that a request enqueued by $commbg will ever be run — it is quite possible that the request remains enqueued until the ONLINE is brought down.&lt;br /&gt;
&lt;br /&gt;
Despite their similarities, $commbg and RunIndependently use different terminology for the daemon threads. $commbg refers to the threads running “in the background,” while RunIndependently refers to them running “independently.” As alluded to above, there is a limit to the number of background or independent requests that may be running at a time. When this limit is exceeded for $commbg requests (or when there are simply no daemon threads available to run the requests), the requests are enqueued, until a daemon thread is available to run the request and the limit for background/independent requests would not be exceeded. RunIndependently, on the other hand, causes a request cancellation if the limit for background/independent requests is to be exceeded. RunIndependently cannot fail, because there are no daemon threads available since the daemon thread is assigned to the object at the time it is instantiated (with the New method), so RunIndependently does not have to allocate a daemon thread for the request.&lt;br /&gt;
&lt;br /&gt;
Before Sirius Mods 7.0, the limit for background/independent requests was one-half of, or ten fewer than, the number of daemon threads, whichever was greater. That is, if there were 10 daemon threads defined in an ONLINE, no more than 5 of them could be running $commbg requests. If there were 40 daemon threads defined, no more than 30 could be running $commbg requests. Under Sirius Mods 7.0 and later, the system parameter MAXBG indicates the maximum number of simultaneously running background/independent requests that are allowed at a time. For backward compatibility with previous Sirius Mods versions, the default value for MAXBG is one-half of, or ten fewer than, the number of daemon threads defined to the ONLINE, whichever is greater.&lt;br /&gt;
&lt;br /&gt;
Daemon threads running asynchronously, as well as threads that are about to run independently (but aren&#039;t yet), are counted against the master thread&#039;s MAXDAEM limit. When a thread switches to running independently, it is no longer counted against the master&#039;s MAXDAEM limit.&lt;br /&gt;
&lt;br /&gt;
RunAsynchronously can be used to allow a thread to do parts of large, complex tasks in parallel. The master thread could be doing some of the work at the same time a daemon thread is asynchronously doing some of it. In fact, multiple daemon threads can be running asynchronously at the same time for a given master thread. When the master thread is done with its work, it can then do a WaitAsynchronous for each daemon running asynchronously until all the work is completed.&lt;br /&gt;
&lt;br /&gt;
If the work being run in parallel is very CPU intensive, there is not likely to be any benefit in running work asynchronously unless the ONLINE is using multiple tasks (MP/204 authorized and AMPSUBS &amp;gt; 0). On the other hand, if the work being performed asynchronously is I/O intensive, a significant reduction in the time required to perform the work can be achieved compared to doing all the I/O serially in the master thread. Work involving network delays is an ideal candidate for running asynchronously, especially if multiple such delays are present in a batch of work.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:Daemon methods]] page for detailed Daemon use information&lt;br /&gt;
&lt;br /&gt;
[[Category:System classes]]&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42792</id>
		<title>User:JAL3/monobook.css</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42792"/>
		<updated>2011-03-25T02:53:06Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.term {&lt;br /&gt;
    text-transform: none;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.product {&lt;br /&gt;
    color: black;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 13.97px;&lt;br /&gt;
    line-height: 15.37px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.code, p.output {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 13.33px;&lt;br /&gt;
    line-height: 14.67px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax2 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax2 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax2 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax3 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax3 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax3 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
code {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 1.05em;&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42791</id>
		<title>User:JAL3/monobook.css</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42791"/>
		<updated>2011-03-25T02:50:30Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.term {&lt;br /&gt;
    text-transform: none;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.product {&lt;br /&gt;
    color: black;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 13.97px;&lt;br /&gt;
    line-height: 15.37px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.code {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 13.33px;&lt;br /&gt;
    line-height: 14.67px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax2 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax2 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax2 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax3 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax3 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax3 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
code {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 1.05em;&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=System_and_Subsystem_classes&amp;diff=13964</id>
		<title>System and Subsystem classes</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=System_and_Subsystem_classes&amp;diff=13964"/>
		<updated>2011-03-24T23:06:33Z</updated>

		<summary type="html">&lt;p&gt;JAL3: /* Lists of System and Subsystem methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- System and Subsystem classes --&amp;gt;&lt;br /&gt;
&amp;lt;!-- on System class page, #REDIRECT [[System and Subsystem classes]]&lt;br /&gt;
     on Subystem class page, #REDIRECT [[System and Subsystem classes]] --&amp;gt; &lt;br /&gt;
The System and Subsystem classes are collections of shared methods that&lt;br /&gt;
operate on entities (globals, strings, objects) made&lt;br /&gt;
available to all users in an Online system or all users in a subsystem,&lt;br /&gt;
or that operate on environmental entities such as the current INCLUDE&lt;br /&gt;
arguments, or the current call stack that are essentially part of the&lt;br /&gt;
&amp;amp;ldquo;system.&amp;amp;rdquo;&lt;br /&gt;
 &lt;br /&gt;
There are no System or Subsystem objects, per se.&lt;br /&gt;
That is, you cannot instantiate an instance of a System or Subsystem object,&lt;br /&gt;
nor assign references from one variable to another, nor are there any&lt;br /&gt;
instance-specific methods in these classes.&lt;br /&gt;
You can, however, declare objects of these classes.&lt;br /&gt;
The main use of such objects is to provide a short-hand way of referencing&lt;br /&gt;
the classes:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %sys       is object system&lt;br /&gt;
    %subsys    is object subsystem&lt;br /&gt;
     ...&lt;br /&gt;
    %sys:setGlobal(&#039;GOOSE&#039;, &#039;SAUCE&#039;)&lt;br /&gt;
    %subsys:setGlobal(&#039;GANDER&#039;, &#039;SAUCE&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Even though you cannot instantiate or invoke instance-specific&lt;br /&gt;
methods against System or Subsystem objects, you may find it&lt;br /&gt;
helpful to think of there being an implicit System object&lt;br /&gt;
that contains system-wide and thread-specific context for the system,&lt;br /&gt;
and a SubSystem object for every valid subsystem context.&lt;br /&gt;
Still, all System and Subsystem class methods are shared methods,&lt;br /&gt;
so they are invokable via their class names:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %(system):setString(&#039;STATUS&#039;, %status)&lt;br /&gt;
    print %(subsystem):string(&#039;INFO&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Subsystem context==&lt;br /&gt;
Subsystem class methods operate on entities associated with the current&lt;br /&gt;
subsystem context.&lt;br /&gt;
This context is, by default, the current subsystem in which a request&lt;br /&gt;
is running.&lt;br /&gt;
It is, possible, however, to run with a subsystem context different from&lt;br /&gt;
the current subsystem.&lt;br /&gt;
This subsystem context can be a subsystem other than the one being run,&lt;br /&gt;
or it can even be a context that isn&#039;t associated with a real subsystem &amp;amp;mdash;&lt;br /&gt;
the context is simply a name, and it is not required to be a started or&lt;br /&gt;
even defined subsystem.&lt;br /&gt;
It is also possible to set a subsystem context for requests that are not even&lt;br /&gt;
inside a subsystem.&lt;br /&gt;
 &lt;br /&gt;
When a subsystem is entered, the subsystem context is automatically set to&lt;br /&gt;
the name of the one being entered.&lt;br /&gt;
When the subsystem is exited, the context is set back to the subsystem&lt;br /&gt;
context in effect at entry to the subsystem, whether or not the subsystem was&lt;br /&gt;
changed inside the subsystem.&lt;br /&gt;
 &lt;br /&gt;
Once the subsystem context is set, all Subsystem class methods apply to&lt;br /&gt;
that subsystem context.&lt;br /&gt;
For example, if subsystem ORDER is entered, the following statement&lt;br /&gt;
sets a subsystem string for that subsystem:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %(subsystem):setString(&#039;DEBUG&#039;, &#039;ON&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, if the following statement is run before it,&lt;br /&gt;
the SetString method actually applies to the DISORDER subsystem context:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %(subsystem):context = &#039;DISORDER&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Since setting the subsystem context allows a request to modify entities&lt;br /&gt;
associated with another subsystem, the ability to set subsystem context&lt;br /&gt;
is protected.&lt;br /&gt;
Ordinarily, only a system manager can set the subsystem context, though&lt;br /&gt;
the ability to set subsystem context can be controlled with SIRMETH&lt;br /&gt;
rules.&lt;br /&gt;
==Using SIRMETH to specify security rules==&lt;br /&gt;
The ability to modify system or subsystem entities gives a user the&lt;br /&gt;
ability to cause problems in threads other than their own.&lt;br /&gt;
As such, this capability must be protected to prevent malicious or&lt;br /&gt;
unintentional modification of system-wide or subsystem-wide&lt;br /&gt;
entities.&lt;br /&gt;
 &lt;br /&gt;
The default protection for system-wide and subsystem-wide entities&lt;br /&gt;
is:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Only system managers can modify system-wide entities (system globals&lt;br /&gt;
and strings, for example).&lt;br /&gt;
&amp;lt;li&amp;gt;Only pre-compiled procedures in a subsystem can modify subsystem-wide&lt;br /&gt;
entities.&lt;br /&gt;
&amp;lt;li&amp;gt;Only system managers can set their subsystem context.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
While these rules prevent intentional or unintentional tampering&lt;br /&gt;
with system or subsystem entities, they can also be onerous:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;There might be several trusted subsystems that one would want to&lt;br /&gt;
allow to set System globals.&lt;br /&gt;
&amp;lt;li&amp;gt;One might want to set SubSystem globals in non-precompiled procedures.&lt;br /&gt;
&amp;lt;li&amp;gt;One might want several subsystems to operate under the same subsystem&lt;br /&gt;
context, that is, share subsystem entities.&lt;br /&gt;
&amp;lt;li&amp;gt;For development and debugging, one might want very loose restrictions&lt;br /&gt;
on what programmers can and cannot do.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
While most of these problems can be worked around by giving programmers system&lt;br /&gt;
manager privileges or by having subsystems run with system manager privileges,&lt;br /&gt;
this might be further than one wants to go to provide these capabilities.&lt;br /&gt;
 &lt;br /&gt;
To ameliorate these problems, the SIRMETH command is provided.&lt;br /&gt;
The SIRMETH command provides a way of giving specific subsystems or all&lt;br /&gt;
users access to certain System or Subsystem class capabilities.&lt;br /&gt;
Of course, the SIRMETH command itself requires system manager privileges.&lt;br /&gt;
===SIRMETH command syntax===&lt;br /&gt;
   SIRMETH {ALLOW | DISALLOW}                   -&lt;br /&gt;
           {SYSTEMSET | SUBSYSTEMSET |          -&lt;br /&gt;
            SUBSYSTEMCONTEXT csubsys | ALL}     -&lt;br /&gt;
           [SUBSYSTEM subsys [NONPRE] ]&lt;br /&gt;
Where:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;ALLOW&lt;br /&gt;
&amp;lt;dd&amp;gt;Indicates that requests matching the rule will be allowed to perform&lt;br /&gt;
the indicated action.&lt;br /&gt;
&amp;lt;dt&amp;gt;DISALLOW&lt;br /&gt;
&amp;lt;dd&amp;gt;Indicates that requests matching the rule will not be allowed to perform&lt;br /&gt;
the indicated action.&lt;br /&gt;
&amp;lt;dt&amp;gt;SYSTEMSET&lt;br /&gt;
&amp;lt;dd&amp;gt;Indicates the ability to set system strings or globals.&lt;br /&gt;
This applies to the SetGlobal and SetString methods in the System&lt;br /&gt;
class, as well as the $setg_sys function.&lt;br /&gt;
&amp;lt;dt&amp;gt;SUBSYSTEMSET&lt;br /&gt;
&amp;lt;dd&amp;gt;Indicates the ability to set subsytem strings or globals.&lt;br /&gt;
This applies to the SetGlobal and SetString methods in the SubSystem&lt;br /&gt;
class, as well as the $setg_subsys function (when the third argument,&lt;br /&gt;
the subsystem name, is not specified).&lt;br /&gt;
&amp;lt;dt&amp;gt;SUBSYSTEMCONTEXT&lt;br /&gt;
&amp;lt;dd&amp;gt;Indicates the ability to change subsytem context to the subsystem&lt;br /&gt;
indicated by &#039;&#039;csubsys&#039;&#039;.&lt;br /&gt;
&#039;&#039;csubsys&#039;&#039; can be a specific subsystem name such as SIRPRO,&lt;br /&gt;
or it can be a wild-card such as SIR* or ???PRO.&lt;br /&gt;
&amp;lt;dt&amp;gt;ALL&lt;br /&gt;
&amp;lt;dd&amp;gt;Only allowed on a DISALLOW rule, this indicates that no extra&lt;br /&gt;
capabilities are to be provided to requests matching the rule.&lt;br /&gt;
&amp;lt;dt&amp;gt;SUBSYSTEM&lt;br /&gt;
&amp;lt;dd&amp;gt;Indicates that the action is to be allowed to methods in the subsystem&lt;br /&gt;
indicated by &#039;&#039;subsys&#039;&#039;.&lt;br /&gt;
&#039;&#039;subsys&#039;&#039; can be a specific subsystem name such as INVENTORY, or it&lt;br /&gt;
can be a wild-card such as INV* or INVENTO?Y.&lt;br /&gt;
 &lt;br /&gt;
Note that if SUBSYSTEM is specified, the rule applies to the real subsystem&lt;br /&gt;
being run, regardless of the current subsystem context.&lt;br /&gt;
Note also that unless followed by the keyword NONPRE, the rule only applies&lt;br /&gt;
to pre-compiled procedures in the subsystem.&lt;br /&gt;
&amp;lt;dt&amp;gt;NONPRE&lt;br /&gt;
&amp;lt;dd&amp;gt;Indicates that non-pre-compiled&lt;br /&gt;
procedures in the subsystem are also to be given the capabilities indicated by&lt;br /&gt;
the SIRMETH rule.&lt;br /&gt;
NONPRE must immediately follow the subsystem name.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
You can specify as many SIRMETH rules as you want.&lt;br /&gt;
A SIRMETH rule that&lt;br /&gt;
totally encompasses a previous rule preempts that rule.&lt;br /&gt;
For example, in the following two rules,&lt;br /&gt;
the second SIRMETH rule completely encompasses the first, so the first&lt;br /&gt;
rule is discarded:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    SIRMETH ALLOW SUBSYSTEMSET SUBSYS FOOBAR&lt;br /&gt;
    SIRMETH ALLOW SUBSYSTEMSET SUBSYS FOO*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
A SIRMETH DISALLOW ALL preempts all previous rules,&lt;br /&gt;
so it is a way of starting from a clean slate.&lt;br /&gt;
If you place a SIRMETH DISALLOW ALL at the start of a&lt;br /&gt;
sequence of SIRMETH rules (most likely in a procedure), those rules&lt;br /&gt;
can be run again and again, perhaps after some of the rules have been&lt;br /&gt;
modified.&lt;br /&gt;
Of course, in the interval between the SIRMETH DISALLOW ALL and the&lt;br /&gt;
subsequent rules, some ordinarily legal requests might be disallowed,&lt;br /&gt;
so it is probably not a good idea to reapply SIRMETH rules in&lt;br /&gt;
a production region.&lt;br /&gt;
 &lt;br /&gt;
Generally, SIRMETH rules are placed in the CCAIN stream or in&lt;br /&gt;
a procedure INCLUDE&#039;d in the CCAIN stream.&lt;br /&gt;
 &lt;br /&gt;
The reason for the NONPRE keyword is that many debugging and development&lt;br /&gt;
subsystems allow users (programmers, typically) to run arbitrary code&lt;br /&gt;
from inside the subsystem.&lt;br /&gt;
Typically, this arbitrary code is run from a non-pre-compiled&lt;br /&gt;
procedure that includes the programmer&#039;s code.&lt;br /&gt;
To prevent such code from picking up the subsystem&#039;s capabilities,&lt;br /&gt;
System and Subsystem class security does not apply SIRMETH rules&lt;br /&gt;
to non-pre-compiled procedures, unless the NONPRE keyword is specified&lt;br /&gt;
on the rule.&lt;br /&gt;
Since most subsystems don&#039;t allow users to run arbitrary code inside&lt;br /&gt;
them, and since it is quite likely that you might want to set&lt;br /&gt;
subsystem globals or switch subsystem contexts inside a non-pre-compiled&lt;br /&gt;
procedure, it is probably a good idea to specify NONPRE for those&lt;br /&gt;
subsystems.&lt;br /&gt;
 &lt;br /&gt;
In a development environment,&lt;br /&gt;
to avoid the effort of modifying multiple individual SIRMETH rules,&lt;br /&gt;
you may be willing to risk letting&lt;br /&gt;
programmers modify any system or subsystem entity.&lt;br /&gt;
If so, the following rules allow everyone&lt;br /&gt;
to do everything with system and subsystem entities:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    SIRMETH ALLOW SUBSYSTEMSET&lt;br /&gt;
    SIRMETH ALLOW SUBSYSTEMSET&lt;br /&gt;
    SIRMETH ALLOW SUBSYSTEMCONTEXT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
It is worth reiterating that while the System and Subsystem classes are&lt;br /&gt;
the preferred interface for setting system and subsystem globals,&lt;br /&gt;
the SIRMETH rules also apply to $setg_sys and $setg_subsys.&lt;br /&gt;
If the third parameter of $setg_subsys (subsystem name) is specified,&lt;br /&gt;
no SIRMETH rules apply, and the user must be a system manager.&lt;br /&gt;
You can get the same effect as a $setg_subsys with a subsystem&lt;br /&gt;
name by saving the subsystem context, setting it, and then restoring it:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %oldContext = %(subsystem):context&lt;br /&gt;
    %(subsystem):context = &#039;CUSTOMER&#039;&lt;br /&gt;
    %(subsystem):setGlobal(&#039;CUSTFILE&#039;, &#039;GROUP CUST2004&#039;)&lt;br /&gt;
    %(subsystem):context = %oldContext&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==System and subsystem globals and strings==&lt;br /&gt;
Typically, a $getg function or a dummy string compile-time string&lt;br /&gt;
(that is, something that begins with &amp;lt;tt&amp;gt;?&amp;amp;&amp;lt;/tt&amp;gt;) is resolved from a thread-level&lt;br /&gt;
global variable (that is, a variable set via $setg).&lt;br /&gt;
Often, however, all requests in an Online or subsystem will use the&lt;br /&gt;
same value for some of these globals, so it seems appealing for these&lt;br /&gt;
users to share a copy of those globals rather than each wasting GTBL&lt;br /&gt;
space to hold a copy for each thread.&lt;br /&gt;
System and subsystem globals make this feasible.&lt;br /&gt;
 &lt;br /&gt;
By default, if a global reference (either a $getg or a dummy string)&lt;br /&gt;
cannot be resolved with thread-level globals, subsystem and then system&lt;br /&gt;
globals will be searched.&lt;br /&gt;
If one of these matches the requested global, that global will be&lt;br /&gt;
returned for the $getg or the dummy string.&lt;br /&gt;
 &lt;br /&gt;
For example, if the following statement exists in a subsystem initialization&lt;br /&gt;
procedure:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %(subsystem):setGlobal(&#039;INVFILE&#039;, &#039;PERM GROUP INV2004&#039;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
the following line&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %inventoryRecords is object recordSet in ?&amp;amp;INVFILE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
is resolved as&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %inventoryRecords is object recordSet in PERM GROUP INV2004&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
$SIRPARM has settings to indicate that $get or dummy string lookup&lt;br /&gt;
should use subsystem or system globals ahead of thread-specific globals.&lt;br /&gt;
For example, the following statement&lt;br /&gt;
indicates that subsystem or system globals are to be used ahead of thread-specific&lt;br /&gt;
globals for dummy strings:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %rc = $sirparm(&#039;DUMMYSYS&#039;, 1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And the following call indicates that subsystem or system globals are to be used&lt;br /&gt;
ahead of thread-specific globals for $getg calls:&lt;br /&gt;
&amp;lt;pre style=&amp;quot;xmp&amp;quot;&amp;gt;&lt;br /&gt;
    %rc = $sirparm(&#039;GETGSYS&#039;, 1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Note that system and subsystem globals are different from system and&lt;br /&gt;
subsystem strings.&lt;br /&gt;
The latter are never returned for $getg or dummy string requests,&lt;br /&gt;
and they can only be retrieved via the [[String (System/Subsystem function)|String]]&lt;br /&gt;
function.&lt;br /&gt;
Also, system and subsystem global values can never be longer than 255 bytes,&lt;br /&gt;
whereas&lt;br /&gt;
system and subsystem strings are longstrings, which can be up to 2**31-1 bytes&lt;br /&gt;
long.&lt;br /&gt;
==System-wide objects==&lt;br /&gt;
&#039;&#039;Sirius Mods&#039;&#039; version 6.7 adds methods to the Janus System and Subsystem classes&lt;br /&gt;
that make designated objects available to all users in an Online or of a subsystem.&lt;br /&gt;
Such objects, referred to as &#039;&#039;&#039;system-wide&#039;&#039;&#039; objects, are made available&lt;br /&gt;
via deep copy, so only&lt;br /&gt;
deep copyable (see [[Copying objects]]) objects are eligible.&lt;br /&gt;
 &lt;br /&gt;
An object becomes system-wide if and only if it is saved by the System class&lt;br /&gt;
SetObject method or by the Subsystem class SetObject method.&lt;br /&gt;
If by the System class SetObject method, the &amp;amp;ldquo;system&amp;amp;rdquo; in system-wide&lt;br /&gt;
refers to all users in the Online; if by the Subsystem SetObject method, all&lt;br /&gt;
users in the current or a specified subsystem.&lt;br /&gt;
 &lt;br /&gt;
System-wide objects belong to a namespace that is not the same as&lt;br /&gt;
that for System and Subsystem longstrings.&lt;br /&gt;
That is, both a System longstring and a system-wide object may be called by the&lt;br /&gt;
same name at the same time.&lt;br /&gt;
 &lt;br /&gt;
The methods that work with system-wide objects are one System and one Subsystem&lt;br /&gt;
class version of each of the following:&lt;br /&gt;
&amp;lt;dl&amp;gt;&lt;br /&gt;
&amp;lt;dt&amp;gt;SetObject&lt;br /&gt;
&amp;lt;dd&amp;gt;Makes an object available system-wide with a&lt;br /&gt;
specified name, as described in [[SetObject (System/Subsystem function)|SetObject]].&lt;br /&gt;
&amp;lt;dt&amp;gt;GetObject&lt;br /&gt;
&amp;lt;dd&amp;gt;Retrieves a copy of the specified system-wide object,&lt;br /&gt;
as described in [[GetObject (System/Subsystem function)|GetObject]].&lt;br /&gt;
&amp;lt;dt&amp;gt;DeleteObject&lt;br /&gt;
&amp;lt;dd&amp;gt;Deletes the specified system-wide object,&lt;br /&gt;
as described in [[DeleteObject (System/Subsystem subroutine)|DeleteObject]].&lt;br /&gt;
&amp;lt;dt&amp;gt;ListOfObjects&lt;br /&gt;
&amp;lt;dd&amp;gt;Returns a Stringlist containing information about system-wide objects,&lt;br /&gt;
as described in [[ListOfObjects (System/Subsystem function)|ListOfObjects]].&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
==Lists of System and Subsystem methods==&lt;br /&gt;
The individual System methods are summarized in [[List of System methods|&amp;quot;List of System methods&amp;quot;]].&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
The individual Subsystem methods are summarized in [[List of Subsystem methods|&amp;quot;List of Subsystem methods&amp;quot;]].&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41612</id>
		<title>GetObject (Subsystem function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41612"/>
		<updated>2011-03-24T22:55:08Z</updated>

		<summary type="html">&lt;p&gt;JAL3: /* Syntax terms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Subsystem:GetObject subtitle}}&lt;br /&gt;
The &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; shared method retrieves a copy of a specified [[Subsystem_class#System-wide_objects|subsystem-wide]] object.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Subsystem:GetObject syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The generation number associated with name. This is a positive integer (initially set to 1) that increases by one each time the name object is updated. gen is set to 0 if the method encounters a problem and cannot retrieve the object.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(Subsystem)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;Subsystem&amp;lt;/var&amp;gt; object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The string name by which the subsystem-wide object is identified.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;object&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The object variable to which the subsystem-wide object is assigned.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Subsystem:GetObject footer}}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41611</id>
		<title>GetObject (Subsystem function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41611"/>
		<updated>2011-03-24T22:52:22Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Subsystem:GetObject subtitle}}&lt;br /&gt;
The &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; shared method retrieves a copy of a specified [[Subsystem_class#System-wide_objects|subsystem-wide]] object.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Subsystem:GetObject syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The generation number associated with name. This is a positive integer (initially set to 1) that increases by one each time the name object is updated. gen is set to 0 if the method encounters a problem and cannot retrieve the object.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(Subsystem)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;[[Subsystem_class|Subsystem]]&amp;lt;/var&amp;gt; object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The string name by which the subsystem-wide object is identified.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;object&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The object variable to which the subsystem-wide object is assigned.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Subsystem:GetObject footer}}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41610</id>
		<title>GetObject (Subsystem function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41610"/>
		<updated>2011-03-24T22:50:37Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Subsystem:GetObject subtitle}}&lt;br /&gt;
The &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; shared method retrieves a copy of a specified [[Subsystem_class#System-wide_objects|subsystem-wide]] object.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Subsystem:GetObject syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The generation number associated with name. This is a positive integer (initially set to 1) that increases by one each time the name object is updated. gen is set to 0 if the method encounters a problem and cannot retrieve the object.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(Subsystem)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;[[Subsystem_class|Subsystem]]&amp;lt;/var&amp;gt; class object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The string name by which the subsystem-wide object is identified.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;object&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The object variable to which the subsystem-wide object is assigned.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Subsystem:GetObject footer}}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42790</id>
		<title>User:JAL3/monobook.css</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42790"/>
		<updated>2011-03-24T22:48:42Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.term {&lt;br /&gt;
    text-transform: none;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.product {&lt;br /&gt;
    color: black;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 13.97px;&lt;br /&gt;
    line-height: 15.37px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.code {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 13.33px;&lt;br /&gt;
    line-height: 14.67px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax2 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax2 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax2 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax3 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax3 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax3 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.code {&lt;br /&gt;
	font-family: Consolas, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41609</id>
		<title>GetObject (Subsystem function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41609"/>
		<updated>2011-03-24T21:37:37Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Subsystem:GetObject subtitle}}&lt;br /&gt;
The &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; shared method retrieves a copy of a specified &amp;lt;var&amp;gt;[[Subsystem_class#System-wide_objects|subsystem-wide]]&amp;lt;/var&amp;gt; object.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Subsystem:GetObject syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The generation number associated with name. This is a positive integer (initially set to 1) that increases by one each time the name object is updated. gen is set to 0 if the method encounters a problem and cannot retrieve the object.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(Subsystem)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;[[Subsystem_class|Subsystem]]&amp;lt;/var&amp;gt; class object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The string name by which the subsystem-wide object is identified.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;object&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The object variable to which the subsystem-wide object is assigned.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Subsystem:GetObject footer}}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41608</id>
		<title>GetObject (Subsystem function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(Subsystem_function)&amp;diff=41608"/>
		<updated>2011-03-24T21:37:11Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Subsystem:GetObject subtitle}}&lt;br /&gt;
The &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt;shared method retrieves a copy of a specified &amp;lt;var&amp;gt;[[Subsystem_class#System-wide_objects|subsystem-wide]]&amp;lt;/var&amp;gt; object.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:Subsystem:GetObject syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The generation number associated with name. This is a positive integer (initially set to 1) that increases by one each time the name object is updated. gen is set to 0 if the method encounters a problem and cannot retrieve the object.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(Subsystem)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;[[Subsystem_class|Subsystem]]&amp;lt;/var&amp;gt; class object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The string name by which the subsystem-wide object is identified.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;object&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The object variable to which the subsystem-wide object is assigned.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:Subsystem:GetObject footer}}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(System_function)&amp;diff=41330</id>
		<title>GetObject (System function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(System_function)&amp;diff=41330"/>
		<updated>2011-03-24T21:27:17Z</updated>

		<summary type="html">&lt;p&gt;JAL3: /* Syntax terms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:System:GetObject subtitle}}&lt;br /&gt;
The &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; shared method retrieves a copy of a specified &amp;lt;var&amp;gt;[[System_class#System-wide_objects|system-wide]]&amp;lt;/var&amp;gt; object.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:System:GetObject syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The generation number associated with name. This is a positive integer (initially set to 1) that increases by one each time the name object is updated. gen is set to 0 if the method encounters a problem and cannot retrieve the object.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(System)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;System&amp;lt;/var&amp;gt; class object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The string name by which the system-wide object is identified.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;object&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The object variable to which the system-wide object is assigned.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:System:GetObject footer}}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(System_function)&amp;diff=41329</id>
		<title>GetObject (System function)</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=GetObject_(System_function)&amp;diff=41329"/>
		<updated>2011-03-24T21:25:26Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:System:GetObject subtitle}}&lt;br /&gt;
The &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; shared method retrieves a copy of a specified &amp;lt;var&amp;gt;[[System_class#System-wide_objects|system-wide]]&amp;lt;/var&amp;gt; object.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
{{Template:System:GetObject syntax}}&lt;br /&gt;
===Syntax terms===&lt;br /&gt;
&amp;lt;table class=&amp;quot;syntaxTable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%number&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;The generation number associated with name. This is a positive integer (initially set to 1) that increases by one each time the name object is updated. gen is set to 0 if the method encounters a problem and cannot retrieve the object.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;%(System)&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The class name in parentheses denotes a shared method. &amp;lt;var&amp;gt;GetObject&amp;lt;/var&amp;gt; can also be invoked via a &amp;lt;var&amp;gt;[[System_class|System]]&amp;lt;/var&amp;gt; class object variable, which may be &amp;lt;var&amp;gt;Null&amp;lt;/var&amp;gt;.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;string&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The string name by which the system-wide object is identified.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;object&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The object variable to which the system-wide object is assigned.&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template:System:GetObject footer}}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42789</id>
		<title>User:JAL3/monobook.css</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42789"/>
		<updated>2011-03-24T00:45:42Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    text-transform: none;&lt;br /&gt;
    font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.term {&lt;br /&gt;
    text-transform: none;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.product {&lt;br /&gt;
    color: black;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 13.97px;&lt;br /&gt;
    line-height: 15.37px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.code {&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 13.33px;&lt;br /&gt;
    line-height: 14.67px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Consolas&amp;quot;, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax2 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax2 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax2 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.syntax3 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax3 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax3 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Lucida Sans Typewriter&amp;quot;, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 {&lt;br /&gt;
    color: #000;&lt;br /&gt;
    background-color: #f9f9f9;&lt;br /&gt;
    padding: 5px 5px 5px 10px;&lt;br /&gt;
    border: 1px dashed #4169E1;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    font-size: 12.7px;&lt;br /&gt;
    line-height: 13.97px;&lt;br /&gt;
    vertical-align: baseline;&lt;br /&gt;
    white-space: pre; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax4 span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: &amp;quot;Lucida Console&amp;quot;, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.code {&lt;br /&gt;
	font-family: Consolas, &amp;quot;Courier New&amp;quot;, Courier, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: sans-serif;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42788</id>
		<title>User:JAL3/monobook.css</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42788"/>
		<updated>2011-03-21T19:24:07Z</updated>

		<summary type="html">&lt;p&gt;JAL3: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    text-transform: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.term {&lt;br /&gt;
    text-transform: none;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.product {&lt;br /&gt;
    color: black;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax {&lt;br /&gt;
	font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.code {&lt;br /&gt;
	font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42787</id>
		<title>User:JAL3/monobook.css</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=User:JAL3/monobook.css&amp;diff=42787"/>
		<updated>2011-03-18T21:43:21Z</updated>

		<summary type="html">&lt;p&gt;JAL3: Created page with &amp;quot;var {     font-style: normal;     text-transform: none; }  var.term {     text-transform: none;     font-style: italic; }  var.product {     color: black;     font-style: italic;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;var {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    text-transform: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.term {&lt;br /&gt;
    text-transform: none;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var.product {&lt;br /&gt;
    color: black;&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
span.literal {&lt;br /&gt;
    font-style: normal;&lt;br /&gt;
    font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
    font-weight: normal;&lt;br /&gt;
    color: #601010;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
span.term {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
    font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
    color: #000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.syntax {&lt;br /&gt;
	font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
p.code {&lt;br /&gt;
	font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.syntaxTable th {&lt;br /&gt;
    font-style: italic;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>JAL3</name></author>
	</entry>
</feed>