<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.signature.net/skins/common/feed.css?270"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.signature.net/index.php?feed=atom&amp;target=Brian&amp;title=Special%3AContributions</id>
		<title>CometWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.signature.net/index.php?feed=atom&amp;target=Brian&amp;title=Special%3AContributions"/>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Special:Contributions/Brian"/>
		<updated>2026-04-21T10:11:27Z</updated>
		<subtitle>From CometWiki</subtitle>
		<generator>MediaWiki 1.16.0</generator>

	<entry>
		<id>http://wiki.signature.net/index.php/Replace</id>
		<title>Replace</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Replace"/>
				<updated>2012-04-18T15:21:48Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* The Replace function is used to replace names in a string with corresponding values, using a MAP to designate name/value pairs. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===The Replace function is used to replace names in a string with corresponding values, using a MAP to designate name/value pairs.===&lt;br /&gt;
&lt;br /&gt;
 Length dynamic &amp;amp; local section$ output$&lt;br /&gt;
 &lt;br /&gt;
  Top: Map _&lt;br /&gt;
    '**Title**',     Title$;_&lt;br /&gt;
    '**Name**',      Name$;_&lt;br /&gt;
    '**Date**',      Date$;_&lt;br /&gt;
    '**Prog**',      Prog$;_&lt;br /&gt;
    '**Partition**', Partition$;_&lt;br /&gt;
    '**Email**',     Eml$;_&lt;br /&gt;
    '**Time**',      time$;_&lt;br /&gt;
    '**timeout**',   timeout&lt;br /&gt;
 &lt;br /&gt;
 cust: Map _&lt;br /&gt;
    '**cusnum**,     cusnum$;_   &lt;br /&gt;
    '**custname** ,  custname$&lt;br /&gt;
    &lt;br /&gt;
 output$ = replace(top,section$)&lt;br /&gt;
 output$ = replace(cust,output$)&lt;br /&gt;
  &lt;br /&gt;
 Print output$&lt;br /&gt;
&lt;br /&gt;
Will replace all of those names found in the map named &amp;quot;top&amp;quot; with their corresponding values, and then replace the customer info as well before sending the text to the browser or anywhere else you desire. In the REPLACE function, names are case insensitive. If a given name is not found, nothing will change. The above example uses asterisks (&amp;quot;**&amp;quot;) to make the names unique and to imitate the legacy xap merge control, but any string can be used as the name.&lt;br /&gt;
&lt;br /&gt;
The replace function is general purpose and can be used in any program to manipulate string data. As a bonus, here is a small Comet32 proc that will replace multiple instances of one substring with another in a target string. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    ! Replaces All Instances Of From$ With To$ In The Target String.&lt;br /&gt;
 String Replacex(From$, To$, Target$)&lt;br /&gt;
    Map: Map To$, From$&lt;br /&gt;
    Procreturn Replace(Map,Target$)&lt;br /&gt;
 End&lt;br /&gt;
&lt;br /&gt;
Once this Proc is included in your program, all you have to do to call it is this:&lt;br /&gt;
 a$ = replacex('his','my',b$)&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:52:24Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* (SetViewportOrg) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use. This mnemonic should be issued after opening the printer and before printing begins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Open (Lun) &amp;quot;LPF&amp;quot; ! open printer&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
Print (Lun) (TR);(SetViewportOrg = 360, 360) ! 1440 TWIPS/inch&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:51:05Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* (SetViewportOrg) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use. This mnemonic should be issued after opening the printer and before printing begins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360) ! 1440 TWIPS/inch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:49:18Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* (SetViewportOrg) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch (1440 TWIPS/inch) from left and top.&lt;br /&gt;
&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:45:43Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* (SetViewportOrg) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch (1440 TWIPS/inch) from left and top.&lt;br /&gt;
&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:45:02Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* (SetViewportOrg) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:44:45Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* (SetViewportOrg) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:44:11Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* (SetViewportOrg) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use.&lt;br /&gt;
&lt;br /&gt;
! Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)    ! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:43:51Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* (SetViewportOrg) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
'''Where:'''&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use.&lt;br /&gt;
&lt;br /&gt;
! Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)    ! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:43:14Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* (SetViewportOrg) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use.&lt;br /&gt;
&lt;br /&gt;
! Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)    ! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Mnemonics_%22S%22</id>
		<title>Mnemonics &quot;S&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Mnemonics_%22S%22"/>
				<updated>2012-02-24T03:42:38Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== (SatisfyInput) ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SatisfyInput=data$)  &lt;br /&gt;
Discussion:  Typically, your program will be positioned at an INPUT statement when the user clicks on a hyperlink. When the event handling subroutine concludes, it returns to the same INPUT statement (assuming that you've concluded the subroutine with a RETURN statement). &lt;br /&gt;
The (SatisfyInput) mnemonic provides a way for the event handling subroutine to supply input data to the original INPUT statement. Here's an outline of the process: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
display a Comet hyperlink &lt;br /&gt;
set an eventsub trap &lt;br /&gt;
go to the main processing section of your program, which includes an INPUT statement &lt;br /&gt;
in the eventsub routine, use the (SatisfyInput) mnemonic to assign input data that will be fed to the INPUT statement when someone clicks on a hyperlink &lt;br /&gt;
Thus, when the user clicks on the hyperlink, the program will branch to the event handing subroutine, where it will provide the input data to the original data entry field. This is a perfect solution &lt;br /&gt;
 &lt;br /&gt;
Example:  Print @(40,3);&amp;quot;Run your favorite utility program&amp;quot;&lt;br /&gt;
Print @(40,4);(Hyperlink=&amp;quot;Spooler&amp;quot;,&amp;quot;LINK7&amp;quot;,1)&lt;br /&gt;
Print @(40,5);(Hyperlink=&amp;quot;Comet Editor&amp;quot;,&amp;quot;LINK8&amp;quot;,1)&lt;br /&gt;
Print @(40,6);(Hyperlink=&amp;quot;Utility menu&amp;quot;,&amp;quot;LINK9&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
! set EVENTSUB trap&lt;br /&gt;
&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
! MainLineProcessing&lt;br /&gt;
	Input @(34,20),Program$&lt;br /&gt;
&lt;br /&gt;
ProgEnd:&lt;br /&gt;
	if (Program$ EQ &amp;quot;&amp;quot;) Then_&lt;br /&gt;
		Program$ = &amp;quot;QMONITOR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
	Run Program$&lt;br /&gt;
&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
!&lt;br /&gt;
!   E V E N T   P R O C E S S I N G   S U B R O U T I N E&lt;br /&gt;
!&lt;br /&gt;
! = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =&lt;br /&gt;
&lt;br /&gt;
GetEvent:&lt;br /&gt;
&lt;br /&gt;
	Print (WC);(BF)&lt;br /&gt;
&lt;br /&gt;
	! make processing decisions based on the value of the EventString$&lt;br /&gt;
&lt;br /&gt;
	Select Case Event$&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
		Case &amp;quot;LINK7&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QSPOOL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK8&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;CED&amp;quot;&lt;br /&gt;
&lt;br /&gt;
		Case &amp;quot;LINK9&amp;quot;&lt;br /&gt;
			TempProg$ = &amp;quot;QTILITY&amp;quot;&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	.&lt;br /&gt;
	Endselect&lt;br /&gt;
&lt;br /&gt;
! Pass result back to main-line program and exit input&lt;br /&gt;
	If (TempProg$ NE &amp;quot;&amp;quot;)&lt;br /&gt;
		Print (SatisfyInput = TempProg$)&lt;br /&gt;
	EndIf&lt;br /&gt;
&lt;br /&gt;
	! re-set Eventsub trap&lt;br /&gt;
EVENTSUB GetEvent,Event$,Source$&lt;br /&gt;
&lt;br /&gt;
RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Save Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Save Screen)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040003@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic saves the current screen display, including all text and display attributes, variables, screen colors, the screen mode, and the memory and display contents of all Comet windows that are open. This mnemonic also frees up all windows memory for the console session. &lt;br /&gt;
This information is saved in a data file named &amp;quot;SCRN&amp;quot; + TERM$. This file is created automatically by Comet and placed on the first local RAM disk found among the accessed Comet directories; if no local RAM disk is found, Comet uses the current DOS directory. (This is the same directory where the partition environments are saved when ENTER statements are executed.) &lt;br /&gt;
&lt;br /&gt;
Note: This file is a DOS file, not a Comet file (i.e., there is no automatic entry in the QDIR file for this file). &lt;br /&gt;
&lt;br /&gt;
The console screen display does not change when this control is written. Your application may proceed to write new information to the screen, use windows memory blocks, etc. &lt;br /&gt;
&lt;br /&gt;
To restore the screen display, use (Restore Screen). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Save Screen)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Save Screen)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;08@&amp;quot;  &lt;br /&gt;
Discussion:  Start background display. &lt;br /&gt;
The (SB) control code sets background display mode and causes subsequent characters to be displayed as background (inverse video) characters. This is used for displaying data that is not expected to change, such as prompts and headings. &lt;br /&gt;
&lt;br /&gt;
Characteristics of background mode: &lt;br /&gt;
&lt;br /&gt;
Background fields are for display purposes only. Data cannot be input from a background field. &lt;br /&gt;
&lt;br /&gt;
Characters appear in the configured background color. &lt;br /&gt;
&lt;br /&gt;
The cursor cannot be positioned in a background field from the keyboard. An attempt to position the cursor in a background field with a FORMAT statement will cause the cursor to be positioned in the next available foreground field. &lt;br /&gt;
&lt;br /&gt;
Background mode must be set in each FORMAT statement where it is to be used. Unless set to background mode, the video device will display data in foreground mode. &lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (SB);(BF),@(10,0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (SB);(BF),@(10,0)&lt;br /&gt;
&lt;br /&gt;
This example sets the video mode to background (SB), and blank fills the top row of the screen (i.e., row 0) from position 10 to the end of the line.  &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Scan Codes Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Scan Codes Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E000F@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the &amp;quot;scan code mode.&amp;quot; For more information, see (Full Scan Codes Passed).  &lt;br /&gt;
Example:  a. 100 FORMAT (Scan Codes Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Scan Codes Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Screen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Screen=number-of-columns, number-of-rows)  &lt;br /&gt;
Discussion:  The (Screen) mnemonic sets the size of the COSW screen. Number-of-columns and number-of-rows are numeric values between 1 and 254. &lt;br /&gt;
If you are running Comet maximized, and the virtual screen size is larger than the physical screen size, Comet automatically reduces the font size so the entire display fits on the screen. Note: This can result in very small type (e.g., if the column and row values are set to high values). &lt;br /&gt;
&lt;br /&gt;
If you are running Comet non-maximized, and the virtual screen size is larger than the physical screen size, Comet automatically inserts scroll bars (horizontal and/or vertical) on the screen. &lt;br /&gt;
&lt;br /&gt;
For a demonstration of the (Screen) mnemonic, run the CPLANY program in the DMW directory (the 98.11 version). &lt;br /&gt;
&lt;br /&gt;
Also see (CPL132), (CPL64), and (CPL80). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in the REL release 99.01.  &lt;br /&gt;
Example:  ! set screen size to 100 columns x 50 rows&lt;br /&gt;
&lt;br /&gt;
Print (Screen=100,50)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectFont ==&lt;br /&gt;
&amp;lt;pre&amp;gt;) &lt;br /&gt;
Mnemonic:   (SelectFont);log-font-data  &lt;br /&gt;
Discussion:  Selects the font specified by the log-font-data structure. &lt;br /&gt;
Typically, a user will call GDI.InitLogFont first to set all font fields to their default values, and then modify whichever field needs changing. &lt;br /&gt;
&lt;br /&gt;
Because the font structure consists of Internet Basic strings, the INTEL/INTELD functions must be used to effect any modifications. For an example see the GDI.InitLogFont function in the usefile #LOGFNT. &lt;br /&gt;
&lt;br /&gt;
Some commonly modified fields are: &lt;br /&gt;
&lt;br /&gt;
lfHeight$  Font size in 10th's of a point (inch/72). The font mapper looks for the largest font that does not exceed the requested size; if there is no such font, it looks for the smallest font available.  &lt;br /&gt;
lfWidth$  Specifies the average width, in logical units, of characters in the font. If lfWidth is zero, the aspect ratio of the device is matched against the digitization aspect ratio of the available fonts to find the closest match, determined by the absolute value of the difference.  &lt;br /&gt;
lfEscapement$  Specifies the angle, in tenths of degrees, of each line of text written in the font (relative to the bottom of the page).  &lt;br /&gt;
lfOrientation$  Specifies the angle, in tenths of degrees, of each character's base line (relative to the bottom of the page).  &lt;br /&gt;
lfWeight$  Darkness (or lightness) of the characters  &lt;br /&gt;
lfItalic$  Specifies an italic font if set to TRUE.  &lt;br /&gt;
lfUnderline$  Specifies an underlined font if set to TRUE.  &lt;br /&gt;
lfStrikeOut$  Specifies a strikeout font if set to TRUE.  &lt;br /&gt;
lfFaceName$  Desired font face (&amp;quot;Arial&amp;quot;, &amp;quot;Courier New&amp;quot;, etc.)  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SelectHatchBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectHatchBrush = style, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the hatched brush described style and red, green, blue. &lt;br /&gt;
Where style can be one of the following values: &lt;br /&gt;
&lt;br /&gt;
HS.HORIZONTAL   Horizontal hatch&lt;br /&gt;
&lt;br /&gt;
HS.VERTICAL     Vertical hatch&lt;br /&gt;
&lt;br /&gt;
HS.FDIAGONAL    Upward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.BDIAGONAL    Downward hatch (left to right) at 45 degrees&lt;br /&gt;
&lt;br /&gt;
HS.CROSS        Horizontal and vertical crosshatch&lt;br /&gt;
&lt;br /&gt;
HS.DIAGCROSS    Crosshatch at 45 degrees&lt;br /&gt;
&lt;br /&gt;
Note: See SetTextColor for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectPen) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectPen = style, width, red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the pen described by style, width and red, green, blue. &lt;br /&gt;
Available pen styles are: &lt;br /&gt;
&lt;br /&gt;
PS.SOLID  Creates a solid pen.  &lt;br /&gt;
PS.DASH  Creates a dashed pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DOT  Creates a dotted pen. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOT  Creates a pen with alternating dashes and dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.DASHDOTDOT  Creates a pen with alternating dashes and double dots. Valid only when the pen width is 1 or less, in device units.  &lt;br /&gt;
PS.NULL  Creates a null pen.  &lt;br /&gt;
PS.INSIDEFRAME  Creates a pen that draws a line inside the frame of closed shapes produced by the Windows GDI output functions that specify a bounding rectangle (for example, the Ellipse, Rectangle, RoundRect, Pie, and Chord member functions). When this style is used with Windows GDI output functions that do not specify a bounding rectangle (for example, the LineTo member function), the drawing area of the pen is not limited by a frame. &lt;br /&gt;
If the width of the pen PtrWidth is 0, the width in device units is always 1 pixel, regardless of the mapping mode. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSolidBrush) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSolidBrush = red, green, blue)  &lt;br /&gt;
Discussion:  This mnemonic selects the solid brush described red, green, blue. &lt;br /&gt;
Note: See (SetTextColor) for color parameter information. &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectSysFont) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectSysFont = font-number)  &lt;br /&gt;
Discussion:  Selects the SYSTEM font specified by font-number. &lt;br /&gt;
Where: &lt;br /&gt;
&lt;br /&gt;
font-number = a Number from 0 to 2, corresponding to an entry in the COSW.INI [Printer Fonts] section. &lt;br /&gt;
&lt;br /&gt;
Provides a system dependent method for assuring compatible printer output by allowing the system user to choose the system fonts according to what is available at that system. &lt;br /&gt;
&lt;br /&gt;
Font numbers are defined as follows: &lt;br /&gt;
&lt;br /&gt;
0 is used for normal printing&lt;br /&gt;
1 is used for compact (compressed) printing&lt;br /&gt;
2 is used for wide (expanded) printing &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SelectWindowEx) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SelectWindowEx=handle$,flags)  &lt;br /&gt;
Discussion:  This mnemonic selects an extended window, using the following parameters: &lt;br /&gt;
Parameter Description &lt;br /&gt;
handle$ This 4-byte string value is the handle that was assigned to this window when it was created. &lt;br /&gt;
flags This numeric value determines whether the selected window is activated or not: &lt;br /&gt;
Value Meaning &lt;br /&gt;
0 The window is not activated. &lt;br /&gt;
1 This window is activated. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each extended window is identified by a 4-byte string known as a window handle. The handle value is assigned by the system and returned to the Internet Basic program via an INPUT statement following the (CreateWindowEx). &lt;br /&gt;
&lt;br /&gt;
An extended window is deleted via (DeleteWindowEx) mnemonic. &lt;br /&gt;
&lt;br /&gt;
See the WinDemo.ibs program (available at www.signature.net/download/demos) for examples of extended windows. &lt;br /&gt;
 &lt;br /&gt;
Note:  If you write a program that displays more than one extended window at a time, your program may need some way to distinguish which window was active at the time that data was input. The STS function returns the handle of the window that generated the input. This 4-byte value starts in position 11, as shown here: &lt;br /&gt;
Length 4 &amp;amp; Local Handle$&lt;br /&gt;
.&lt;br /&gt;
Handle$ = SUB(STS(0),11,4)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This feature is supported in Comet2002 Build 306 and higher.  &lt;br /&gt;
Example:  The following example creates two extended windows, then uses the (SelectWindowEx) mnemonic to select between the two. &lt;br /&gt;
Length 4 &amp;amp; Local Handle1$,Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (CreateWindowEx=0,0,35,15,68,0,&amp;quot;Window 1&amp;quot;)&lt;br /&gt;
Input Handle1$&lt;br /&gt;
&lt;br /&gt;
Print (CreateWindowEx=0,40,20,10,68,0,&amp;quot;Window 2&amp;quot;)&lt;br /&gt;
Input Handle2$&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle1$,1)  ! select window 1&lt;br /&gt;
Print &amp;quot;This text goes in window 1&amp;quot;&lt;br /&gt;
.&lt;br /&gt;
Print (SelectWindowEx=Handle2$,1)  ! select window 2&lt;br /&gt;
Print &amp;quot;This text goes in window 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Server) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Server=string-argument)  &lt;br /&gt;
Discussion:  The (Server) mnemonic specifies the smtp server and port to be used for your email printer. Get this information from the settings for your email client program. The default port is 25 (AKA &amp;quot;mail&amp;quot;). If you do not specify a port, the default will be used. &lt;br /&gt;
Please note that servers requiring authentication are not supported at this time. &lt;br /&gt;
 &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Server=&amp;quot;smtp.our.mail.server.net 25&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== [[SessionTimeout|(SessionTimeout)]] == &lt;br /&gt;
== (Set Printer Info) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPrinterInfo = FunctionCode, Value) &lt;br /&gt;
where FunctionCode is the characteristic you want to change, and Value is the value you want to change it to &lt;br /&gt;
 &lt;br /&gt;
Discussion:  The following FunctionCodes and Values are also contained in the file #PTRCTLD in the WDL folder. &lt;br /&gt;
PI.DMORIENTATION = 0&lt;br /&gt;
    DMORIENT.PORTRAIT = 1&lt;br /&gt;
    DMORIENT.LANDSCAPE = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERSIZE = 1&lt;br /&gt;
    DMPAPER.LETTER               = 1  ! Letter 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.LETTERSMALL          = 2  ! Letter Small 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.TABLOID              = 3  ! Tabloid 11 x 17 in&lt;br /&gt;
    DMPAPER.LEDGER               = 4  ! Ledger 17 x 11 in&lt;br /&gt;
    DMPAPER.LEGAL                = 5  ! Legal 8 1/2 x 14 in&lt;br /&gt;
    DMPAPER.STATEMENT            = 6  ! Statement 5 1/2 x 8 1/2 in&lt;br /&gt;
    DMPAPER.EXECUTIVE            = 7  ! Executive 7 1/4 x 10 1/2 in&lt;br /&gt;
    DMPAPER.A3                   = 8  ! A3 297 x 420 mm&lt;br /&gt;
    DMPAPER.A4                   = 9  ! A4 210 x 297 mm&lt;br /&gt;
    DMPAPER.A4SMALL             = 10  ! A4 Small 210 x 297 mm&lt;br /&gt;
    DMPAPER.A5                  = 11  ! A5 148 x 210 mm&lt;br /&gt;
    DMPAPER.B4                  = 12  ! B4 (JIS) 250 x 354&lt;br /&gt;
    DMPAPER.B5                  = 13  ! B5 (JIS) 182 x 257 mm&lt;br /&gt;
    DMPAPER.FOLIO               = 14  ! Folio 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.QUARTO              = 15  ! Quarto 215 x 275 mm&lt;br /&gt;
    DMPAPER.10X14               = 16  ! 10x14 in&lt;br /&gt;
    DMPAPER.11X17               = 17  ! 11x17 in&lt;br /&gt;
    DMPAPER.NOTE                = 18  ! Note 8 1/2 x 11 in&lt;br /&gt;
    DMPAPER.ENV.9               = 19  ! Envelope #9 3 7/8 x 8 7/8&lt;br /&gt;
    DMPAPER.ENV.10              = 20  ! Envelope #10 4 1/8 x 9 1/2&lt;br /&gt;
    DMPAPER.ENV.11              = 21  ! Envelope #11 4 1/2 x 10 3/8&lt;br /&gt;
    DMPAPER.ENV.12              = 22  ! Envelope #12 4 \276 x 11&lt;br /&gt;
    DMPAPER.ENV.14              = 23  ! Envelope #14 5 x 11 1/2&lt;br /&gt;
    DMPAPER.CSHEET              = 24  ! C size sheet&lt;br /&gt;
    DMPAPER.DSHEET              = 25  ! D size sheet&lt;br /&gt;
    DMPAPER.ESHEET              = 26  ! E size sheet&lt;br /&gt;
    DMPAPER.ENV.DL              = 27  ! Envelope DL 110 x 220mm&lt;br /&gt;
    DMPAPER.ENV.C5              = 28  ! Envelope C5 162 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.C3              = 29  ! Envelope C3  324 x 458 mm&lt;br /&gt;
    DMPAPER.ENV.C4              = 30  ! Envelope C4  229 x 324 mm&lt;br /&gt;
    DMPAPER.ENV.C6              = 31  ! Envelope C6  114 x 162 mm&lt;br /&gt;
    DMPAPER.ENV.C65             = 32  ! Envelope C65 114 x 229 mm&lt;br /&gt;
    DMPAPER.ENV.B4              = 33  ! Envelope B4  250 x 353 mm&lt;br /&gt;
    DMPAPER.ENV.B5              = 34  ! Envelope B5  176 x 250 mm&lt;br /&gt;
    DMPAPER.ENV.B6              = 35  ! Envelope B6  176 x 125 mm&lt;br /&gt;
    DMPAPER.ENV.ITALY           = 36  ! Envelope 110 x 230 mm&lt;br /&gt;
    DMPAPER.ENV.MONARCH         = 37  ! Envelope Monarch 3.875 x 7.5 in&lt;br /&gt;
    DMPAPER.ENV.PERSONAL        = 38  ! 6 3/4 Envelope 3 5/8 x 6 1/2 in&lt;br /&gt;
    DMPAPER.FANFOLD.US          = 39  ! US Std Fanfold 14 7/8 x 11 in&lt;br /&gt;
    DMPAPER.FANFOLD.STD.GERMAN  = 40  ! German Std Fanfold 8 1/2 x 12 in&lt;br /&gt;
    DMPAPER.FANFOLD.LGL.GERMAN  = 41  ! German Legal Fanfold 8 1/2 x 13 in&lt;br /&gt;
    DMPAPER.ISO.B4              = 42  ! B4 (ISO) 250 x 353 mm&lt;br /&gt;
    DMPAPER.JAPANESE.POSTCARD   = 43  ! Japanese Postcard 100 x 148 mm&lt;br /&gt;
    DMPAPER.9X11                = 44  ! 9 x 11 in&lt;br /&gt;
    DMPAPER.10X11               = 45  ! 10 x 11 in&lt;br /&gt;
    DMPAPER.15X11               = 46  ! 15 x 11 in&lt;br /&gt;
    DMPAPER.ENV.INVITE          = 47  ! Envelope Invite 220 x 220 mm&lt;br /&gt;
    DMPAPER.RESERVED.48         = 48  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.RESERVED.49         = 49  ! RESERVED--DO NOT USE&lt;br /&gt;
    DMPAPER.LETTER.EXTRA        = 50  ! Letter Extra 9 \275 x 12 in&lt;br /&gt;
    DMPAPER.LEGAL.EXTRA         = 51  ! Legal Extra 9 \275 x 15 in&lt;br /&gt;
    DMPAPER.TABLOID.EXTRA       = 52  ! Tabloid Extra 11.69 x 18 in&lt;br /&gt;
    DMPAPER.A4.EXTRA            = 53  ! A4 Extra 9.27 x 12.69 in&lt;br /&gt;
    DMPAPER.LETTER.TRANSVERSE   = 54  ! Letter Transverse 8 \275 x 11 in&lt;br /&gt;
    DMPAPER.A4.TRANSVERSE       = 55  ! A4 Transverse 210 x 297 mm&lt;br /&gt;
    DMPAPER.LETTER.EXTRA.TRANSVERSE = 56 ! Letter Extra Transverse 9\275 x 12 in&lt;br /&gt;
    DMPAPER.A.PLUS              = 57  ! SuperA/SuperA/A4 227 x 356 mm&lt;br /&gt;
    DMPAPER.B.PLUS              = 58  ! SuperB/SuperB/A3 305 x 487 mm&lt;br /&gt;
    DMPAPER.LETTER.PLUS         = 59  ! Letter Plus 8.5 x 12.69 in&lt;br /&gt;
    DMPAPER.A4.PLUS             = 60  ! A4 Plus 210 x 330 mm&lt;br /&gt;
    DMPAPER.A5.TRANSVERSE       = 61  ! A5 Transverse 148 x 210 mm&lt;br /&gt;
    DMPAPER.B5.TRANSVERSE       = 62  ! B5 (JIS) Transverse 182 x 257 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA            = 63  ! A3 Extra 322 x 445 mm&lt;br /&gt;
    DMPAPER.A5.EXTRA            = 64  ! A5 Extra 174 x 235 mm&lt;br /&gt;
    DMPAPER.B5.EXTRA            = 65  ! B5 (ISO) Extra 201 x 276 mm&lt;br /&gt;
    DMPAPER.A2                  = 66  ! A2 420 x 594 mm&lt;br /&gt;
    DMPAPER.A3.TRANSVERSE       = 67  ! A3 Transverse 297 x 420 mm&lt;br /&gt;
    DMPAPER.A3.EXTRA.TRANSVERSE = 68  ! A3 Extra Transverse 322 x 445 mm&lt;br /&gt;
&lt;br /&gt;
PI.DMPAPERLENGTH = 2&lt;br /&gt;
PI.DMPAPERWIDTH = 3&lt;br /&gt;
PI.DMSCALE = 4&lt;br /&gt;
PI.DMPRINTQUALITY = 5&lt;br /&gt;
    DMRES.DRAFT     = 65535 ! -1&lt;br /&gt;
    DMRES.LOW       = 65534 ! -2&lt;br /&gt;
    DMRES.MEDIUM    = 65533 ! -3&lt;br /&gt;
    DMRES.HIGH      = 65532 ! -4&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLOR = 6&lt;br /&gt;
    DMCOLOR.MONOCHROME = 1&lt;br /&gt;
    DMCOLOR.COLOR    = 2&lt;br /&gt;
&lt;br /&gt;
PI.DMCOLLATE = 7&lt;br /&gt;
    DMCOLLATE.FALSE = 0&lt;br /&gt;
    DMCOLLATE.TRUE = 1&lt;br /&gt;
&lt;br /&gt;
PI.DMDEFAULTSOURCE = 8&lt;br /&gt;
    DMBIN.UPPER         = 1&lt;br /&gt;
    DMBIN.ONLYONE       = 1&lt;br /&gt;
    DMBIN.LOWER         = 2&lt;br /&gt;
    DMBIN.MIDDLE        = 3&lt;br /&gt;
    DMBIN.MANUAL        = 4&lt;br /&gt;
    DMBIN.ENVELOPE      = 5&lt;br /&gt;
    DMBIN.ENVMANUAL     = 6&lt;br /&gt;
    DMBIN.AUTO          = 7&lt;br /&gt;
    DMBIN.TRACTOR       = 8&lt;br /&gt;
    DMBIN.SMALLFMT      = 9&lt;br /&gt;
    DMBIN.LARGEFMT      = 10&lt;br /&gt;
    DMBIN.LARGECAPACITY = 11&lt;br /&gt;
    DMBIN.CASSETTE      = 14&lt;br /&gt;
    DMBIN.FORMSOURCE    = 15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set ROP2) ==&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic:  (SetROP2 = Mode)  &lt;br /&gt;
Discussion:  Sets the current foreground mix mode. GDI uses the foreground mix mode to combine pens and interiors of filled objects with the colors already on the screen. The foreground mix mode defines how colors from the brush or pen and the colors in the existing image are to be combined. &lt;br /&gt;
Where Mode can be any of the following values: &lt;br /&gt;
&lt;br /&gt;
Mix mode Description &lt;br /&gt;
R2.BLACK = 1 Pixel is always 0. &lt;br /&gt;
R2.COPYPEN = 13 Pixel is the pen color. &lt;br /&gt;
R2.MASKNOTPEN = 3 Pixel is a combination of the colors common to both the screen and the inverse of the pen. &lt;br /&gt;
R2.MASKPEN = 9 Pixel is a combination of the colors common to both the pen and the screen. &lt;br /&gt;
R2.MASKPENNOT = 5 Pixel is a combination of the colors common to both the pen and the inverse of the screen. &lt;br /&gt;
R2.MERGENOTPEN = 12 Pixel is a combination of the screen color and the inverse of the pen color. &lt;br /&gt;
R2.MERGEPEN = 15 Pixel is a combination of the pen color and the screen color. &lt;br /&gt;
R2.MERGEPENNOT = 14 Pixel is a combination of the pen color and the inverse of the screen color. &lt;br /&gt;
R2.NOP = 11 Pixel remains unchanged. &lt;br /&gt;
R2.NOT = 6 Pixel is the inverse of the screen color. &lt;br /&gt;
R2.NOTCOPYPEN = 4 Pixel is the inverse of the pen color. &lt;br /&gt;
R2.NOTMASKPEN = 8 Pixel is the inverse of the R2_MASKPEN color. &lt;br /&gt;
R2.NOTMERGEPEN = 2 Pixel is the inverse of the R2_MERGEPEN color. &lt;br /&gt;
R2.NOTXORPEN = 10 Pixel is the inverse of the R2_XORPEN color. &lt;br /&gt;
R2.WHITE = 16 Pixel is always 1. &lt;br /&gt;
R2.XORPEN = 7 Pixel is a combination of the colors in the pen and in the screen, but not in both. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (Set Window Caption) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (Set Window Caption=caption$,flag)  &lt;br /&gt;
Discussion:  This mnemonic sets the window caption. &lt;br /&gt;
The flag parameter may contain the following values: &lt;br /&gt;
&lt;br /&gt;
0 = Show specified caption as is (Main view or selected window)&lt;br /&gt;
1 = Include standard caption (Comet TXX) with specified caption (Main view only)&lt;br /&gt;
2 = Use default specified in COSW.INI ([Comet] IncludeStdCaption) (Main view only) &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL Version 02.04.  &lt;br /&gt;
Example:  Print (Set Window Caption = &amp;quot;This is the caption&amp;quot;,0)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkColor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkColor = red, green, blue)  &lt;br /&gt;
Discussion:  Sets the current background color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (red, green, glue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetBkMode) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetBkMode = mode)  &lt;br /&gt;
Discussion:  Sets the background mode specified by mode. &lt;br /&gt;
Sets the background mode. The background mode defines whether the system removes existing background colors on the drawing surface before drawing text, hatched brushes, or any pen style that is not a solid line. &lt;br /&gt;
&lt;br /&gt;
Where mode is: &lt;br /&gt;
&lt;br /&gt;
BKM.OPAQUE  Background is filled with the current background color before the text, hatched brush, or pen is drawn. This is the default background mode.  &lt;br /&gt;
BKM.TRANSPARENT  Background is not changed before drawing.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetDirAlias) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetDirAlias=alias,path,flags)  &lt;br /&gt;
Discussion:  This mnemonic sets the name/path of a directory alias. &lt;br /&gt;
This mnemonic may be used by foreground programs only. &lt;br /&gt;
&lt;br /&gt;
The alias is the &amp;quot;alias identifier&amp;quot; as specified in COSW (e.g., CATEMP). &lt;br /&gt;
&lt;br /&gt;
The path is a Windows or UNC path name. &lt;br /&gt;
&lt;br /&gt;
Flags is the sum of the specified decimal values from the following chart: &lt;br /&gt;
&lt;br /&gt;
Flag Description &lt;br /&gt;
1 Perform function at CometAnywhere remote system &lt;br /&gt;
2 If not CometAnywhere, then substitute local for remote &lt;br /&gt;
If the program is running on a local Comet system (not on a CometAnywhere client system), this flag substitutes the local drive/path name for a remote path/drive name.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After this mnemonic is issued, your program can issue an INPUT on LUN (0) to retrieve the error information. For example: &lt;br /&gt;
&lt;br /&gt;
  LENGTH 2 &amp;amp; LOCAL AX$,DX$&lt;br /&gt;
  LENGTH 254 &amp;amp; LOCAL RESULT$&lt;br /&gt;
  ResultFmt: FORMAT AX$;DX$;RESULT$&lt;br /&gt;
  .&lt;br /&gt;
  .&lt;br /&gt;
  Print (SetDirAlias=Alias$,Path$,Flags)&lt;br /&gt;
  Input (0,ResultFmt)&lt;br /&gt;
&lt;br /&gt;
The first field, AX$, contains the function error code, and the second field, DX$, contains the suberror code (aka the Windows file error code). Both of these fields are in Intel 2's complement format, and should be processed as follows: &lt;br /&gt;
  AX$ = SUB(AX$,2,1) + SUB(AX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  DX$ = SUB(DX$,2,1) + SUB(DX$,1,1)   ! Flip the bytes around&lt;br /&gt;
  FuncError = HexDec(AX$)             ! Function error code (decimal)&lt;br /&gt;
  FileError = HexDec(DX$)             ! File error code (decimal)&lt;br /&gt;
&lt;br /&gt;
  ! For unexpected values, convert to 2's complement signed integer&lt;br /&gt;
  If (FuncError &amp;gt; 32767) FuncError = FuncError-65536&lt;br /&gt;
  If (FileError &amp;gt; 32767) FileError = FileError-65536&lt;br /&gt;
&lt;br /&gt;
Here is a list of the function error codes in decimal form: &lt;br /&gt;
Error&lt;br /&gt;
(FuncError) Description &lt;br /&gt;
0 Function not supported &lt;br /&gt;
1 Success &lt;br /&gt;
2 CometAnywhere required &lt;br /&gt;
3 Source file error (see suberrors) &lt;br /&gt;
4 Aborted by user &lt;br /&gt;
5 Function in progress &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here is a list of the suberror codes (common Windows file errors) in decimal form: &lt;br /&gt;
&lt;br /&gt;
Suberror&lt;br /&gt;
(FileError) Description &lt;br /&gt;
0 Success &lt;br /&gt;
2 File not found &lt;br /&gt;
3 Path not found &lt;br /&gt;
5 Access denied &lt;br /&gt;
12 Invalid access &lt;br /&gt;
15 Invalid drive &lt;br /&gt;
16 An error has occurred in the current directory &lt;br /&gt;
18 No more files &lt;br /&gt;
32 Sharing violation &lt;br /&gt;
33 Lock violation &lt;br /&gt;
80 File exists &lt;br /&gt;
161 Bad pathname &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet Build 299 and REL Version 01.07.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetOrientation) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetOrientation = mode)  &lt;br /&gt;
Discussion:  Sets the paper orientation contained in mode. &lt;br /&gt;
Valid values for mode are: &lt;br /&gt;
&lt;br /&gt;
DMORIENT.PORTRAIT  Vertical paper alignment  &lt;br /&gt;
DMORIENT.LANDSCAPE  Horizontal paper alignment  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetPaperSize) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SetPaperSize=n)  &lt;br /&gt;
Discussion:  This mnemonic sets the paper size to n.  &lt;br /&gt;
History:  This mnemonic is valid in Comet98 and greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetSessionPrinter) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (SetSessionPrinter=printer-name)  &lt;br /&gt;
Discussion:  The (SetSessionPrinter) mnemonic establishes a temporary printer name for the current session. This printer name will be used for session printing as long as the COSW session is active or the printer name is again changed. The session printer is identified in the Comet configuration file by the device name of '#'. &lt;br /&gt;
Example: PtrName$ = &amp;quot;My Printer&amp;quot;&lt;br /&gt;
Print (SetSessionPrinter=PtrName$)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To clear the temporary printer name, set the printer name to an empty string. This will reset COSW back to the original user-defined session printer. &lt;br /&gt;
&lt;br /&gt;
Example: Print (SetSessionPrinter=&amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See (GetSessionPrinter). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in Comet2000 Build 300 and requires require REL Version 02.01 or greater.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SetTextAlign) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetTextAlign = flags)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the text alignment mode to that specified by flags.&amp;lt;br/&amp;gt; &lt;br /&gt;
The (TextOut) mnemonic uses these flags when positioning a string of text on a display or device.&amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a specific point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The coordinates of this point are passed as parameters to the TextOut member function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is formed by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The flags specify the relationship between a point and a rectangle that bounds the text. &amp;lt;br/&amp;gt;&lt;br /&gt;
The point may be either the current position or the coordinates specified by a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The rectangle that bounds the text is defined by the adjacent character cells in the text string. &amp;lt;br/&amp;gt;&lt;br /&gt;
The parameter can be one or more flags from the following three categories.&amp;lt;br/&amp;gt;&lt;br /&gt;
Choose only one flag from each category. &lt;br /&gt;
&lt;br /&gt;
The first category affects text alignment in the x-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.CENTER  Aligns the point with the horizontal center of the bounding rectangle.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.LEFT  Aligns the point with the left side of the bounding rectangle. This is the default setting. &amp;lt;br/&amp;gt; &lt;br /&gt;
TA.RIGHT  Aligns the point with the right side of the bounding rectangle.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second category affects text alignment in the y-direction: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BASELINE  Aligns the point with the base line of the chosen font.&amp;lt;br/&amp;gt;&lt;br /&gt;
TA.BOTTOM  Aligns the point with the bottom of the bounding rectangle. &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.TOP  Aligns the point with the top of the bounding rectangle. (default)  &lt;br /&gt;
&lt;br /&gt;
The third category determines whether the current position is updated when text is written: &amp;lt;br/&amp;gt;&lt;br /&gt;
TA.NOUPDATECP  Does not update the current position after each call to a text-output function.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is the default setting.  &amp;lt;br/&amp;gt;&lt;br /&gt;
TA_UPDATECP  Updates the current x-position after each call to a text-output function. &amp;lt;br/&amp;gt;&lt;br /&gt;
The new position is at the right side of the bounding rectangle for the text.&amp;lt;br/&amp;gt;&lt;br /&gt;
When this flag is set, the coordinates specified in calls to the TextOut member function are ignored.  &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetTextColor) ==&lt;br /&gt;
 &lt;br /&gt;
'''Mnemonic:'''   (SetTextColor = red, green, blue)  &lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the current text color as specified by red, green, and blue. &lt;br /&gt;
Colors are represented by three (Red, Green, Blue) color intensity values, each ranging in value from 0 (no color = black) to 255 (max color = white). &lt;br /&gt;
&lt;br /&gt;
red specifies the amount of RED&lt;br /&gt;
&lt;br /&gt;
green specifies the amount of GREEN&lt;br /&gt;
&lt;br /&gt;
blue specifies the amount of BLUE &lt;br /&gt;
 &lt;br /&gt;
'''History:'''  This mnemonic is valid in Comet98 and greater.&lt;br /&gt;
&lt;br /&gt;
== (SetViewportOrg) ==&lt;br /&gt;
&lt;br /&gt;
'''Mnemonic:'''   (SetViewportOrg = OffsetLeft, OffsetTop)&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
* OffsetLeft is the distance from the 1st printable left position in TWIPS&lt;br /&gt;
* OffsetTop is the distance from the 1st printable top position in TWIPS&lt;br /&gt;
&lt;br /&gt;
'''Discussion:'''  Sets the upper-left position from which printing will be begin. These offsets are from the 1st printable position which on most modern printers is about 1/4 inch from the paper edge. If you’re going to be using printers with different offsets then you may want to query the printer doc info to get the location of the 1st printable position and use that value to calculate what origin (if any) you might want to use.&lt;br /&gt;
&lt;br /&gt;
! Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)    ! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
&lt;br /&gt;
Simple method to deal with CometPdf which has no unprintable area.&lt;br /&gt;
&lt;br /&gt;
! Set the upper left point of origin to 1/4 inch from left and top.&lt;br /&gt;
Print (Lun) (TR) (SetViewportOrg = 360, 360)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Applies To:'''  Printers only&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (SF) ==&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SF)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0A@&amp;quot;  &lt;br /&gt;
Discussion:  Start foreground display. &lt;br /&gt;
The (SF) control code sets foreground display mode and causes subsequent characters to be displayed as foreground characters. &lt;br /&gt;
&lt;br /&gt;
Note: The default display mode is foreground. &lt;br /&gt;
&lt;br /&gt;
Characteristics of foreground mode: &lt;br /&gt;
&lt;br /&gt;
Foreground mode is used for keyboard data entry and for program display of data for operator modification and subsequent transmission to the program. &lt;br /&gt;
&lt;br /&gt;
Foreground characters appear in the configured foreground color. &lt;br /&gt;
&lt;br /&gt;
The cursor may be positioned anywhere within the boundaries of a foreground field. &lt;br /&gt;
&lt;br /&gt;
Pressing the Tab key while the cursor is in a foreground field moves the cursor to the beginning of the next foreground field, skipping over any intervening background display areas. &lt;br /&gt;
If the cursor moves forward past a transmit delimiter (a (TM) or (TP) mark), data will be transmitted to the receiving field(s) in the program. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Foreground and background can be mixed in one FORMAT statement, as long as the appropriate control codes (i.e., (SF) and (SB)) are used to start each operation. &lt;br /&gt;
 &lt;br /&gt;
Example:  100 FORMAT (SB);&amp;quot;ENTER CODE NUMBER:&amp;quot;;(TM);(SF);&amp;quot;    &amp;quot;;(TM);@(0,0)&lt;br /&gt;
    .&lt;br /&gt;
    PRINT (0,100)&lt;br /&gt;
    INPUT (0) CODE$&lt;br /&gt;
&lt;br /&gt;
This example shows how to use the start foreground control code in the middle of a FORMAT statement. This FORMAT starts out by entering background mode and displaying a program prompt. Next, the program places a transmit mark, switches to foreground, displays 5 blanks, places another transmit mark, and returns the cursor to &amp;quot;home&amp;quot; position (column 0, row 0).  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Shell to DOS) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Shell to DOS=ARG1$)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0E0A00@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic shells to DOS. &lt;br /&gt;
ARG1$ is a string constant or variable containing a DOS command or program name. If ARG1$ is null, the DOS command prompt will be displayed. &lt;br /&gt;
&lt;br /&gt;
The shell to DOS feature is intended for single user Comet systems only (networked or standalone). &lt;br /&gt;
&lt;br /&gt;
When this instruction is executed, the Comet environment (base memory only) is written to disk. Comet writes this data on the first configured local RAM drive. If no local RAM drive is configured, Comet writes this data to the current DOS directory on the hard drive. &lt;br /&gt;
&lt;br /&gt;
This feature requires DOS 6.22 or later. &lt;br /&gt;
&lt;br /&gt;
Returning to Comet: &lt;br /&gt;
&lt;br /&gt;
If a DOS command is not passed to the DOS shell, you can return to Comet by typing EXIT at the DOS prompt. This restarts Comet and returns to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
&lt;br /&gt;
If a DOS command is passed to the DOS shell, Comet is restarted automatically when the DOS program is done. You are returned to the next instruction following the (Shell to DOS) instruction. &lt;br /&gt;
Also see (Launch). &lt;br /&gt;
 &lt;br /&gt;
History:  Starting with Comet98 Build 231, this mnemonic launches a Windows application.  &lt;br /&gt;
Example 1:  a. 100 FORMAT (Shell to DOS)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and displays the DOS command prompt.  &lt;br /&gt;
Example 2:  a. 100 FORMAT (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Shell to DOS=&amp;quot;DIR C:\ /p&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
This example shells to DOS and performs the DIR command on the root directory of drive C:, using the /p parameter to pause the display when the screen is full.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (ShellExecute) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecute=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launch a Windows program or document. It is used with the system driver (X00) or TERM$. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecuteWait). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 00.06. Support for TERM$ was added in REL 02.04.  &lt;br /&gt;
Example 1:  The following code launches the NOTEPAD program. &lt;br /&gt;
PRINT (0) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
Example 2:  The following code launches the NOTEPAD program. The system driver (X00) is opened on Logical Unit Number 20. &lt;br /&gt;
OPEN (20) &amp;quot;X00&amp;quot;&lt;br /&gt;
PRINT (20) (ShellExecute=&amp;quot;open&amp;quot;,&amp;quot;notepad.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
CLOSE (20)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (notepad.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== (ShellExecuteWait) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (ShellExecuteWait=Action$, File$, Args$, WorkDir$,WinMode)  &lt;br /&gt;
Discussion:  This mnemonic launches a Windows program and pauses the InternetBasic program. When the Windows program is done, the IB program resumes. &lt;br /&gt;
The parameters are: &lt;br /&gt;
&lt;br /&gt;
Action$ = A verb associated with the file type. Typically &amp;quot;open&amp;quot; or &amp;quot;play&amp;quot;. To specify the default action, use &amp;quot;&amp;quot;. You can see the verbs for a given file type from the File Types dialog available via the &amp;quot;View/Folder Options&amp;quot; menu item (in Windows Explorer). &lt;br /&gt;
&lt;br /&gt;
Prog$ = The name of a program (e.g., notepad.exe) or a document (e.g., myfile.txt) &lt;br /&gt;
&lt;br /&gt;
Args$ = Additional command line arguments &lt;br /&gt;
&lt;br /&gt;
WorkDir$ = The current directory to use when executing the Prog$ &lt;br /&gt;
&lt;br /&gt;
WinMode = &lt;br /&gt;
&lt;br /&gt;
0 Hides the window and activates another window.  &lt;br /&gt;
1 Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.  &lt;br /&gt;
2 Activates the window and displays it as a minimized window.  &lt;br /&gt;
3 Activates the window and displays it as a maximized window.  &lt;br /&gt;
4 Displays a window in its most recent size and position. The active window remains active.  &lt;br /&gt;
5 Activates the window and displays it in its current size and position.  &lt;br /&gt;
6 Minimizes the specified window and activates the next top-level window in the Z order.  &lt;br /&gt;
7 Displays the window as a minimized window. The active window remains active.  &lt;br /&gt;
8 Displays the window in its current state. The active window remains active.  &lt;br /&gt;
9 Activates and displays the window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when restoring a minimized window.  &lt;br /&gt;
10 Sets the show state based on the SW_ flag specified in the STARTUPINFO structure passed to the CreateProcess function by the program that started the application.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also see (ShellExecute). &lt;br /&gt;
 &lt;br /&gt;
History:  This mnemonic was added in REL 02.04.  &lt;br /&gt;
Example:  PRINT (0) (ShellExecuteWait=&amp;quot;open&amp;quot;,&amp;quot;program.exe&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,1)&lt;br /&gt;
&lt;br /&gt;
where: &lt;br /&gt;
Parameter 1 (open) is the action associated with an EXE file &lt;br /&gt;
Parameter 2 (program.exe) is the program name &lt;br /&gt;
Parameters 3 and 4 are not needed in this case (thus the &amp;quot;&amp;quot;) &lt;br /&gt;
Parameter 5 (1) activates and displays a window &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (Show Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Cursor)  &lt;br /&gt;
Discussion:  This mnemonic shows the regular cursor. &lt;br /&gt;
See Regular cursor display for more information. &lt;br /&gt;
&lt;br /&gt;
Also see (Hide Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Cursor&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Show Mouse Cursor) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Show Mouse Cursor)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0901@&amp;quot;  &lt;br /&gt;
Discussion:  This control shows the mouse cursor. &lt;br /&gt;
Also see (Hide Mouse Cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Show Mouse Cursor)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Show Mouse Cursor)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Single Key Transmit) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Single Key Transmit)  &lt;br /&gt;
Hex equivalent:  &amp;quot;040002@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic sets the &amp;quot;single key transmit&amp;quot; mode, in which a single keystroke causes an immediate transmission of data to the program (without pressing Enter or crossing past a transmit mark). &lt;br /&gt;
This mode must be reset each time it is to be used. &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT (Single Key Transmit)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Single Key Transmit)&lt;br /&gt;
   INPUT (0) DATA$                    ! wait for next keystroke&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (SL) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SL=n)  &lt;br /&gt;
Discussion:  The (SL=n) control code causes the printer to skip n lines, where n is an integer between 1 and 999. This control performs the same function as multiple line feeds.  &lt;br /&gt;
Example:  a. 100 FORMAT (SL=10)&lt;br /&gt;
   .&lt;br /&gt;
   OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1,100)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
b. OPEN (1) &amp;quot;LP1&amp;quot;&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (1) (SL=10)&lt;br /&gt;
&lt;br /&gt;
This example uses the (SL=n) control code to skip 10 lines.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (SSB) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (SSB)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@040C@&amp;quot;  &lt;br /&gt;
Discussion:  Start suppressed background display. &lt;br /&gt;
The (SSB) control code sets suppressed background display mode. Subsequent data is displayed as background blanks in the configured color for invisible fields. The cursor cannot be positioned in a suppresed background field. &lt;br /&gt;
&lt;br /&gt;
Note: Certain control codes, such as transmit marks and right-justify marks, automatically appear as suppressed background fields. All other data attempted to be displayed in suppressed background mode will be displayed as blank spaces (invisible, protected from the cursor). &lt;br /&gt;
 &lt;br /&gt;
Example:  a. 100 FORMAT ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) ... (SSB);(BF);(BF);(BF)&lt;br /&gt;
&lt;br /&gt;
In this example, the PRINT ends with three blank fill control codes -- these display three lines of blanks in suppressed background, the mode set just before the last three controls.  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Std Keyboard Off) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard Off)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0006@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns off the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard Off)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard Off)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  (Std Keyboard On) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Std Keyboard On)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@000E05@&amp;quot;  &lt;br /&gt;
Discussion:  This mnemonic turns on the standard keyboard mode.  &lt;br /&gt;
Example:  a. 100 FORMAT (Std Keyboard On)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Std Keyboard On)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (StoreControl) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:  (StoreControl = cosDlghDlg$, CntrlID, filename$)  &lt;br /&gt;
Discussion:  This mnemonic stores the text from a multi-line edit control in a text file. &lt;br /&gt;
cosDlghDlg$ is the handle to the dialog&lt;br /&gt;
CntrlID is the control identifier for the edit control&lt;br /&gt;
filename$ is the full pathname of a text file &lt;br /&gt;
 &lt;br /&gt;
Example:  Print (LoadControl = cosDlghDlg$, IDC.COMMENTS, ComFile$)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== (Subject) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Email Mnemonic:   (Subject=string-argument)  &lt;br /&gt;
Discussion:  The (Subject) mnemonic may be used to specify the subject line for your email message.  &lt;br /&gt;
Example:  OPEN (1) &amp;quot;LEH&amp;quot;&lt;br /&gt;
PRINT (1) (Subject=&amp;quot;Party at Jim's house@!&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 Read about other Email Mnemonics   &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== (Switch Session) ==&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
Mnemonic:   (Switch Session=numeric-argument)  &lt;br /&gt;
Hex equivalent:  &amp;quot;@0E0Cxx@&amp;quot; &lt;br /&gt;
where:&lt;br /&gt;
xx = session (hex) &lt;br /&gt;
 &lt;br /&gt;
Discussion:  This mnemonic switches to another avtive Comet session. The numeric-argument (a constant or variable) determines what action will be taken, based on the following values: &lt;br /&gt;
Value   Action&lt;br /&gt;
==============================&lt;br /&gt;
0       switch to next session&lt;br /&gt;
1       switch to session 1&lt;br /&gt;
2       switch to session 2&lt;br /&gt;
3       switch to session 3&lt;br /&gt;
4       switch to session 4&lt;br /&gt;
5       switch to session 5&lt;br /&gt;
6       switch to session 6&lt;br /&gt;
7       switch to session 7&lt;br /&gt;
8       switch to session 8&lt;br /&gt;
&lt;br /&gt;
Use the following statement to determine the session number associated with the partition where your program is running (PARTITION$): &lt;br /&gt;
SessionNum = ASC(SUB(PSTAT(PARTITION$), 60, 1))&lt;br /&gt;
&lt;br /&gt;
Session numbers are base 1 (1 added) for foreground partitions. If PSTAT returns a session number of 0, it is a background partition. Otherwise the actual session number is SessionNum-1.  &lt;br /&gt;
Example:  a. 100 FORMAT (Switch Session=0)&lt;br /&gt;
   .&lt;br /&gt;
   PRINT (0,100)                 ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
b. PRINT (0) (Switch Session=0)  ! switch to next Comet session&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System driver (X00) mnemonics ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mnemonic  Description  &lt;br /&gt;
(Copy from Clipboard)  Copy contents from Windows clipboard  &lt;br /&gt;
(Copy to Clipboard)  Write data to Windows clipboard  &lt;br /&gt;
(Shell Execute)  Launch Windows program  &lt;br /&gt;
(Query Clipboard)  Determine if Windows clipboard contains data  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:22:59Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
UEdit32.exe (UltraEdit)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:22:34Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
UltraEdit&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:21:52Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:21:32Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:21:21Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:21:05Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:20:38Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:20:12Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:19:39Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:18:39Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
. CADev.obj&lt;br /&gt;
. Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
. Cosw.exe&lt;br /&gt;
. CADev.exe&lt;br /&gt;
. Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:18:20Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:18:06Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe[br]CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:17:10Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:16:12Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:15:18Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session, communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:14:55Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer files directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:14:12Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer file directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:14:04Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
&lt;br /&gt;
CADev.exe&lt;br /&gt;
&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer file directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-12T00:13:42Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Behind The Scenes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
Host programs used by CADev (REL):&lt;br /&gt;
&lt;br /&gt;
CADev.obj&lt;br /&gt;
Capi.obj&lt;br /&gt;
&lt;br /&gt;
Remote programs used by CADev (Comet programs folder):&lt;br /&gt;
&lt;br /&gt;
Cosw.exe&lt;br /&gt;
CADev.exe&lt;br /&gt;
Console.exe&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
CADev.exe is passed information that allows it to connect to the host computer using CometLib. This provides CADev with the ability to transfer file directly to/from the host computer. While CADev.exe is aware of the remote CometAnywhere session communication to that session is minimal - only to show/hide the session window. All behaviors that you see in the CADev window including synchronization are managed by CADev.exe via its CometLib connection to the host computer.&lt;br /&gt;
&lt;br /&gt;
While CADev.exe is happily doing its thing, Capi.obj is busy in the original session window waiting for commands to be issued to it from UltraEdit. When you click on the compile button in UltraEdit you are actually asking UltraEdit to run the Signature Systems supplied program Console.exe. Console.exe receives its commands on the command line and uses that information to pipe commands to Capi.obj via the Comet session window (Cosw.exe). After Capi has finished processing the command, the resulting output file is the sent back to the Console.exe program which then sends it to UltraEdit for display in its output window.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T23:55:55Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* System Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16) with a COM license&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T23:54:21Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Behind The Scenes ==&lt;br /&gt;
&lt;br /&gt;
As mentioned earlier in this document, CADev consists of several programs that work together to perform the magic of remote editing and compiling. This is how it all works:&lt;br /&gt;
&lt;br /&gt;
After you connect to the host computer and set all of your required accesses you then run CADev (from REL). CADev.IBS is really a very simple program. It has two basic functions: To launch CADev.exe at the remote computer and then run Capi (from REL) at the host computer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T23:45:38Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. When you exit CADev all files being monitored for changes will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the &amp;quot;Local Storage Folder&amp;quot; on the remote computer. To view the files that are currently being maintained in the Local Storage Folder by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the Local Storage Folder on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the Local Storage Folder. A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T23:41:31Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. Once you exit CADev all files contained in the &amp;quot;Local Storage Folder&amp;quot; will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the remote computer. To view the local copy of files that are currently being maintained by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the &amp;quot;Local Storage Folder&amp;quot; on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the &amp;quot;Local Storage Folder.&amp;quot; A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T23:25:53Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. Once you exit CADev all files contained in the &amp;quot;Local Storage Folder&amp;quot; will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the remote computer. To view the local copy of files that are currently being maintained by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the &amp;quot;Local Storage Folder&amp;quot; on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the &amp;quot;Local Storage Folder.&amp;quot; A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T23:22:31Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Using CADev */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the &amp;quot;Local Storage Folder&amp;quot; on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the &amp;quot;Local Storage Folder.&amp;quot; A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. Once you exit CADev all files contained in the &amp;quot;Local Storage Folder&amp;quot; will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the remote computer. To view the local copy of files that are currently being maintained by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified files back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T23:20:23Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
&lt;br /&gt;
Because CADev will be monitoring all of the files in the &amp;quot;Local Storage Folder&amp;quot; on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the &amp;quot;Local Storage Folder.&amp;quot; A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe (a Windows program) on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must be maintained between the CometAnywhere session and CADev program. Therefore if one terminates the other will no longer be usable without reestablishing the connection. Once you exit CADev all files contained in the &amp;quot;Local Storage Folder&amp;quot; will be deleted. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the remote computer. To view the local copy of files that are currently being maintained by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load a file into UltraEdit in any conventional way. The easiest is by simply double-clicking the file in the Ready pane which will cause the file to be loaded into UltraEdit. You may now edit the file as you normally would. When you click the compile button in UltraEdit a command is issued to CADev to copy all modified file back to the host computer in preparation for compilation. Once all files have been copied to the host computer, the appropriate command is issued to Comet to start the compile, returning the results in the output pane of UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
CADev provides visual indication of the status of any file listed in the Ready pane. If a file is currently unmodified it will show a green check mark next to it. If a file has been modified it will show a purple triangle next to it. As a file is being copied to or from the host computer it will show a animated arrow pointing in the direction of the copy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T23:05:57Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Using CADev */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
Because CADev will be monitoring all of the files in the &amp;quot;Local Storage Folder&amp;quot; on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the &amp;quot;Local Storage Folder.&amp;quot; A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must bve maintained between the CometAnywhere session and CADev. Therefore if one terminates the other will no longer be usable without reestablishing the connection. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the remote computer. To view the local copy of files that are currently being maintained by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load the file into UltraEdit any conventional ways. The easiest is by simply double-clicking the file in the Ready pane which should cause the file to be loaded into UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T23:05:34Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Using CADev */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
Because CADev will be monitoring all of the files in the &amp;quot;Local Storage Folder&amp;quot; on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the &amp;quot;Local Storage Folder.&amp;quot; A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely. A one-to-one relationship exists and must bve maintained between the CometAnywhere session and CADev. Therefore if one terminates the other will no longer be usable without reestablishing the connection. Only one CADev session is allowed to run on a CometAnywhere computer at a time.&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed at the host computer. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the Ready pane. As each file is added to the Ready pane, it will be copied from the host computer to the remote computer. To view the local copy of files that are currently being maintained by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the Ready pane it may be edited with UltraEdit. You can load the file into UltraEdit any conventional ways. The easiest is by simply double-clicking the file in the Ready pane which should cause the file to be loaded into UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T22:58:47Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* Special Considerations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
Because CADev will be monitoring all of the files in the &amp;quot;Local Storage Folder&amp;quot; on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the &amp;quot;Local Storage Folder.&amp;quot; A undesired side affect of this behavior is caused when  UltraEdit saves changes to a file and renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will think you've added a new file and you will be asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate location.&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely.&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the &amp;quot;Ready&amp;quot; pane. As each file is added to the &amp;quot;Ready&amp;quot; pane, it will be copied from the host computer to the remote computer. To view the local copy of files that are currently being maintained by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the &amp;quot;Ready&amp;quot; pane it may be edited with UltraEdit. You can load the file into UltraEdit any number of ways. The easiest is by simply double-clicking the file in the &amp;quot;Ready&amp;quot; which should cause the file to be loaded into UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T22:57:03Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
Because CADev will be monitoring all of the files in the &amp;quot;Local Storage Folder&amp;quot; on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the &amp;quot;Local Storage Folder.&amp;quot; A undesired side affect of this behavior is that by default when UltraEdit saves changes to a file it also renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will see this and you will be notified and asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate folder.&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely.&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the &amp;quot;Ready&amp;quot; pane. As each file is added to the &amp;quot;Ready&amp;quot; pane, it will be copied from the host computer to the remote computer. To view the local copy of files that are currently being maintained by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the &amp;quot;Ready&amp;quot; pane it may be edited with UltraEdit. You can load the file into UltraEdit any number of ways. The easiest is by simply double-clicking the file in the &amp;quot;Ready&amp;quot; which should cause the file to be loaded into UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T22:56:05Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== Special Considerations ==&lt;br /&gt;
Because CADev will be monitoring all of the files in the &amp;quot;Local Storage Folder&amp;quot; on the remote computer it is necessary that only CADev known files reside in that folder. If new a file is detected by CADev the user will be asked to identify the file so it can be synchronized with the host. This is handy when intentionally adding new files to the program you're working on. This can also be accomplished by right-clicking the &amp;quot;Comet&amp;quot; pane and choosing &amp;quot;Create New File.&amp;quot; If CADev detects a new file and you do not designate a corresponding &amp;quot;Comet&amp;quot; file then that file will be deleted from the &amp;quot;Local Storage Folder.&amp;quot; A side affect of this behavior is that by default when UltraEdit saves changes to a file it also renames the original file for backup purposes (&amp;lt;filename&amp;gt;.bak). CADev will see this and you will be notified and asked to identify a corresponding Comet file. To avoid this problem we recommend that you configure UltraEdit (Advanced Menu -&amp;gt; File Handling -&amp;gt; Backup) to store backup files in an alternate folder.&lt;br /&gt;
&lt;br /&gt;
== Using CADev ==&lt;br /&gt;
Using CADev is pretty simple. Log onto the target CometAnywhere host computer and acquire access to the Comet directories required to edit and compile the .IBS source files you wish to work with (see Note below). Now you will run the Comet program CADev (lives in REL) which will launch a surrogate program CADev.exe on the remote computer. CADev will hide the session window (configurable) and present a new window that will be used to select the host files that will be edited remotely.&lt;br /&gt;
&lt;br /&gt;
The CADev window consists of three panes. The left or &amp;quot;Ready&amp;quot; pane contains a list of the files that have been designated for remote editing. Files in this list will be monitored for changes and synchronized as required by UltraEdit. The center or &amp;quot;QDir&amp;quot; pane lists the Comet directories that are currently accessed. The third or &amp;quot;Comet&amp;quot; pane contains a list of the text files in the selected Comet directory that are available for remote editing. Double-clicking a file in the Comet pane (or right-clicking and choosing &amp;quot;Prepare to edit&amp;quot;) will cause that file to be added to the &amp;quot;Ready&amp;quot; pane. As each file is added to the &amp;quot;Ready&amp;quot; pane, it will be copied from the host computer to the remote computer. To view the local copy of files that are currently being maintained by CADev you can click on the &amp;quot;View&amp;quot; menu and choose &amp;quot;View Local Storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Once a file has been added to the &amp;quot;Ready&amp;quot; pane it may be edited with UltraEdit. You can load the file into UltraEdit any number of ways. The easiest is by simply double-clicking the file in the &amp;quot;Ready&amp;quot; which should cause the file to be loaded into UltraEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Unlike using UltraEdit locally where Comet sessions are created (and destroyed) on the fly each time a compile command is issued, CADev requires a persistent CometAnywhere session.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Programming</id>
		<title>Programming</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Programming"/>
				<updated>2011-11-11T22:01:00Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Internet Basic]]&lt;br /&gt;
&lt;br /&gt;
[[Trace | Debugging IB programs with Trace]]&lt;br /&gt;
&lt;br /&gt;
[[Configuring Ultra Edit for Internet Basic]]&lt;br /&gt;
&lt;br /&gt;
[[CADev - CometAnywhere Remote Development]]&lt;br /&gt;
&lt;br /&gt;
[[IB enhancements for Comet32]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- xx http://www.signature.net/download/Documentation/Debugger%20Class%20May%202005.pdf IB Debugger&lt;br /&gt;
http://www.signature.net/signature/techdoc/debugger/debugger.htm More IB Debugger --&amp;gt;&lt;br /&gt;
[[Comet Error Codes]]&lt;br /&gt;
&lt;br /&gt;
[[Windows Error Codes]]&lt;br /&gt;
&lt;br /&gt;
[[The Debugger]]&lt;br /&gt;
&lt;br /&gt;
[[More Debugger]]&lt;br /&gt;
&lt;br /&gt;
[[Intro to Multi-Keyed Files]]&lt;br /&gt;
&lt;br /&gt;
[[Using the Fax Driver]]&lt;br /&gt;
&lt;br /&gt;
[[Using the email printer]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--http://www.signature.net/Download/Documentation/ HP printer PCL codes--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Running Programs at Start-up Time]]&lt;br /&gt;
&lt;br /&gt;
[[Comet Hyperlinks|Creating Hyperlinks in IB]]&lt;br /&gt;
&lt;br /&gt;
[[Making HTML documents]]&lt;br /&gt;
&lt;br /&gt;
[[Adding sound to your programs]]&lt;br /&gt;
&lt;br /&gt;
[[Launching the FedEx Web Page]]&lt;br /&gt;
&lt;br /&gt;
[[SuperNova]]&lt;br /&gt;
&lt;br /&gt;
[[SuperNova and Windows Apps / Web Pages]]&lt;br /&gt;
&lt;br /&gt;
[[ODBC]]&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_Comet_Anywhere_Remote_Development</id>
		<title>CADev - Comet Anywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_Comet_Anywhere_Remote_Development"/>
				<updated>2011-11-11T22:00:38Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: moved CADev - Comet Anywhere Remote Development to CADev - CometAnywhere Remote Development&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[CADev - CometAnywhere Remote Development]]&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T22:00:38Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: moved CADev - Comet Anywhere Remote Development to CADev - CometAnywhere Remote Development&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
CADev requires the following:&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Programming</id>
		<title>Programming</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Programming"/>
				<updated>2011-11-11T21:59:42Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Internet Basic]]&lt;br /&gt;
&lt;br /&gt;
[[Trace | Debugging IB programs with Trace]]&lt;br /&gt;
&lt;br /&gt;
[[Configuring Ultra Edit for Internet Basic]]&lt;br /&gt;
&lt;br /&gt;
[[CADev - Comet Anywhere Remote Development]]&lt;br /&gt;
&lt;br /&gt;
[[IB enhancements for Comet32]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- xx http://www.signature.net/download/Documentation/Debugger%20Class%20May%202005.pdf IB Debugger&lt;br /&gt;
http://www.signature.net/signature/techdoc/debugger/debugger.htm More IB Debugger --&amp;gt;&lt;br /&gt;
[[Comet Error Codes]]&lt;br /&gt;
&lt;br /&gt;
[[Windows Error Codes]]&lt;br /&gt;
&lt;br /&gt;
[[The Debugger]]&lt;br /&gt;
&lt;br /&gt;
[[More Debugger]]&lt;br /&gt;
&lt;br /&gt;
[[Intro to Multi-Keyed Files]]&lt;br /&gt;
&lt;br /&gt;
[[Using the Fax Driver]]&lt;br /&gt;
&lt;br /&gt;
[[Using the email printer]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--http://www.signature.net/Download/Documentation/ HP printer PCL codes--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Running Programs at Start-up Time]]&lt;br /&gt;
&lt;br /&gt;
[[Comet Hyperlinks|Creating Hyperlinks in IB]]&lt;br /&gt;
&lt;br /&gt;
[[Making HTML documents]]&lt;br /&gt;
&lt;br /&gt;
[[Adding sound to your programs]]&lt;br /&gt;
&lt;br /&gt;
[[Launching the FedEx Web Page]]&lt;br /&gt;
&lt;br /&gt;
[[SuperNova]]&lt;br /&gt;
&lt;br /&gt;
[[SuperNova and Windows Apps / Web Pages]]&lt;br /&gt;
&lt;br /&gt;
[[ODBC]]&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Programming</id>
		<title>Programming</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Programming"/>
				<updated>2011-11-11T21:59:17Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Internet Basic]]&lt;br /&gt;
&lt;br /&gt;
[[Trace | Debugging IB programs with Trace]]&lt;br /&gt;
&lt;br /&gt;
[[Configuring Ultra Edit for Internet Basic]]&lt;br /&gt;
&lt;br /&gt;
[[CADev - CometAnywhere Remote Development]]&lt;br /&gt;
&lt;br /&gt;
[[IB enhancements for Comet32]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- xx http://www.signature.net/download/Documentation/Debugger%20Class%20May%202005.pdf IB Debugger&lt;br /&gt;
http://www.signature.net/signature/techdoc/debugger/debugger.htm More IB Debugger --&amp;gt;&lt;br /&gt;
[[Comet Error Codes]]&lt;br /&gt;
&lt;br /&gt;
[[Windows Error Codes]]&lt;br /&gt;
&lt;br /&gt;
[[The Debugger]]&lt;br /&gt;
&lt;br /&gt;
[[More Debugger]]&lt;br /&gt;
&lt;br /&gt;
[[Intro to Multi-Keyed Files]]&lt;br /&gt;
&lt;br /&gt;
[[Using the Fax Driver]]&lt;br /&gt;
&lt;br /&gt;
[[Using the email printer]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--http://www.signature.net/Download/Documentation/ HP printer PCL codes--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Running Programs at Start-up Time]]&lt;br /&gt;
&lt;br /&gt;
[[Comet Hyperlinks|Creating Hyperlinks in IB]]&lt;br /&gt;
&lt;br /&gt;
[[Making HTML documents]]&lt;br /&gt;
&lt;br /&gt;
[[Adding sound to your programs]]&lt;br /&gt;
&lt;br /&gt;
[[Launching the FedEx Web Page]]&lt;br /&gt;
&lt;br /&gt;
[[SuperNova]]&lt;br /&gt;
&lt;br /&gt;
[[SuperNova and Windows Apps / Web Pages]]&lt;br /&gt;
&lt;br /&gt;
[[ODBC]]&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T21:58:52Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a CometAnywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
CADev requires the following:&lt;br /&gt;
&lt;br /&gt;
Host Computer:&lt;br /&gt;
&lt;br /&gt;
Comet version 2011.451 or higher (Comet32 or Comet16)&lt;br /&gt;
&lt;br /&gt;
CometAnywhere (2 sessions recommended but will work with just 1)&lt;br /&gt;
&lt;br /&gt;
REL version 11.10 or higher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Remote Computer:&lt;br /&gt;
&lt;br /&gt;
CometAnywhere connection to the aforementioned host computer.&lt;br /&gt;
&lt;br /&gt;
UltraEdit® Professional Text Editor&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T21:44:41Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: /* CADev - Comet Anywhere Remote Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a Comet Anywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development</id>
		<title>CADev - CometAnywhere Remote Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/CADev_-_CometAnywhere_Remote_Development"/>
				<updated>2011-11-11T21:44:06Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: Created page with &amp;quot;== CADev - Comet Anywhere Remote Development == CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a Comet Anywhere connecti...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CADev - Comet Anywhere Remote Development ==&lt;br /&gt;
CADev consists of a suite of programs that provide a facility for editing and compiling IB programs over a Comet Anywhere connection. That is, .IBS source files that previously could only be edited and compiled on a computer hosting Comet can now be edited and compiled remotely across a network or the Internet. This is accomplished by maintaining identical copies of an .IBS source file at both the host and remote computers. When a request is made to compile the remote version of a file, it is first copied back to the host computer and then the appropriate commands are sent to the host computer to compile the file.&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	<entry>
		<id>http://wiki.signature.net/index.php/Programming</id>
		<title>Programming</title>
		<link rel="alternate" type="text/html" href="http://wiki.signature.net/index.php/Programming"/>
				<updated>2011-11-11T21:22:02Z</updated>
		
		<summary type="html">&lt;p&gt;Brian: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Internet Basic]]&lt;br /&gt;
&lt;br /&gt;
[[Trace | Debugging IB programs with Trace]]&lt;br /&gt;
&lt;br /&gt;
[[Configuring Ultra Edit for Internet Basic]]&lt;br /&gt;
&lt;br /&gt;
[[CADev - Comet Anywhere Remote Development]]&lt;br /&gt;
&lt;br /&gt;
[[IB enhancements for Comet32]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- xx http://www.signature.net/download/Documentation/Debugger%20Class%20May%202005.pdf IB Debugger&lt;br /&gt;
http://www.signature.net/signature/techdoc/debugger/debugger.htm More IB Debugger --&amp;gt;&lt;br /&gt;
[[Comet Error Codes]]&lt;br /&gt;
&lt;br /&gt;
[[Windows Error Codes]]&lt;br /&gt;
&lt;br /&gt;
[[The Debugger]]&lt;br /&gt;
&lt;br /&gt;
[[More Debugger]]&lt;br /&gt;
&lt;br /&gt;
[[Intro to Multi-Keyed Files]]&lt;br /&gt;
&lt;br /&gt;
[[Using the Fax Driver]]&lt;br /&gt;
&lt;br /&gt;
[[Using the email printer]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--http://www.signature.net/Download/Documentation/ HP printer PCL codes--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Running Programs at Start-up Time]]&lt;br /&gt;
&lt;br /&gt;
[[Comet Hyperlinks|Creating Hyperlinks in IB]]&lt;br /&gt;
&lt;br /&gt;
[[Making HTML documents]]&lt;br /&gt;
&lt;br /&gt;
[[Adding sound to your programs]]&lt;br /&gt;
&lt;br /&gt;
[[Launching the FedEx Web Page]]&lt;br /&gt;
&lt;br /&gt;
[[SuperNova]]&lt;br /&gt;
&lt;br /&gt;
[[SuperNova and Windows Apps / Web Pages]]&lt;br /&gt;
&lt;br /&gt;
[[ODBC]]&lt;/div&gt;</summary>
		<author><name>Brian</name></author>	</entry>

	</feed>