(saveFormat "2.0")
(date "Tue 19/Dec/1995 09:23:42 MST")
(veerev "3.2")
(platform "HP9000s700")
(SaveCF no)
(filterNAN 0)
(component 0 ROOTCONTEXT
 (name "Sequencer Logging 1")
 (implementation
  (UserFunctions
   (nextID 2)
   (context 0
	(name "myRand1")
	(interface
	 (input 1
	  (name "A")
	  (optional yes)
	 )
	 (output 1
	  (type data)
	  (name "X")
	  (lock constraints)
	  (optional yes)
	 )
	)
	(implementation
	 (locked no)
	 (trigMode deg)
	 (nextID 2)
	 (component 0 RANDOMNUMBER
	  (interface
	   (output 1
		(name "Rand Val")
		(lock name constraints)
	   )
	  )
	  (implementation
	   (lowerLimit 0)
	   (upperLimit 1)
	  )
	 )
	 (component 1 FORMULA
	  (name " + ")
	  (interface
	   (input 1
		(name "X")
		(optional yes)
	   )
	   (input 2
		(name "Y")
		(optional yes)
	   )
	   (output 1
		(name "Result")
		(lock name constraints)
	   )
	  )
	  (implementation
	   (expr 1 "X+Y")
	  )
	 )
	 (configuration
	  (connect D0:1 D1:1)
	  (connect I1:1 D1:2)
	  (connect D1:1 O1:1)
	 )
	)
	(viewFor 0
	 (active detail)
	 (detail
	  (geometry 269 240 470 180)
	  (configuration
	   (viewFor 0
		(active detail)
		(icon
		 (geometry 227 178 127 25)
		)
		(detail
		 (geometry 362 288 157 58)
		)
		(terminals on)
	   )
	   (viewFor 1
		(active icon)
		(icon
		 (geometry 637 338 46 25)
		)
		(detail
		)
		(terminals on)
	   )
	   (connect D0:1 D1:1
		(points 4 591 317 620 317 620 340 634 340)
	   )
	   (connect I1:1 D1:2
		(points 6 269 327 280 327 280 370 620 370 620 360 634 360)
	   )
	   (connect D1:1 O1:1
		(points 4 685 350 700 350 700 327 738 327)
	   )
	  )
	  (stackingOrder 0 1)
	 )
	 (terminals on)
	)
   )
   (context 1
	(name "myRand2")
	(interface
	 (input 1
	  (name "A")
	  (optional yes)
	 )
	 (output 1
	  (type data)
	  (name "X")
	  (lock constraints)
	  (optional yes)
	 )
	)
	(implementation
	 (locked no)
	 (trigMode deg)
	 (nextID 2)
	 (component 0 RANDOMNUMBER
	  (interface
	   (output 1
		(name "Rand Val")
		(lock name constraints)
	   )
	  )
	  (implementation
	   (lowerLimit 0)
	   (upperLimit 100)
	  )
	 )
	 (component 1 FORMULA
	  (name " + ")
	  (interface
	   (input 1
		(name "X")
		(optional yes)
	   )
	   (input 2
		(name "Y")
		(optional yes)
	   )
	   (output 1
		(name "Result")
		(lock name constraints)
	   )
	  )
	  (implementation
	   (expr 1 "X+Y")
	  )
	 )
	 (configuration
	  (connect D0:1 D1:1)
	  (connect I1:1 D1:2)
	  (connect D1:1 O1:1)
	 )
	)
	(viewFor 1
	 (active detail)
	 (detail
	  (geometry 270 240 468 180)
	  (configuration
	   (viewFor 0
		(active detail)
		(icon
		 (geometry 227 178 127 25)
		)
		(detail
		 (geometry 357 291 157 58)
		)
		(terminals on)
	   )
	   (viewFor 1
		(active icon)
		(icon
		 (geometry 647 318 46 25)
		)
		(detail
		)
		(terminals on)
	   )
	   (connect D0:1 D1:1
		(points 2 586 320 644 320)
	   )
	   (connect I1:1 D1:2
		(points 6 270 327 280 327 280 370 620 370 620 340 644 340)
	   )
	   (connect D1:1 O1:1
		(points 4 695 330 710 330 710 327 737 327)
	   )
	  )
	  (stackingOrder 1 0)
	 )
	 (terminals on)
	)
   )
  )
  (retainGlobals YES)
  (locked no)
  (trigMode deg)
  (nextID 17)
  (component 0 SEQUENCER
   (interface
	(output 1
	 (name "Return")
	 (tag "Return")
	 (lock name constraints)
	 (optional yes)
	)
	(output 2
	 (name "Log")
	 (tag "Log")
	 (lock name constraints)
	 (optional yes)
	)
   )
   (implementation
	(transactions 2
	  "test1 LOGEN TESTEX:myRand1(1) \tRANGEEX: 1 LE 1.25 LE 1.5 \t"
	  "test2 LOGEN TESTEX:myRand2(1) \tRANGEEX: 1 LE 26 LE 51 \t"
	)
	(component logfields "name" "pass" "result")
   )
  )
  (component 1 COLLECTOR
   (interface
	(input 1
	 (name "Data")
	 (tag "Data")
	)
	(input 2
	 (type trigger)
	 (name "XEQ")
	 (lock name constraints)
	)
	(output 1
	 (name "Array")
	 (tag "Array")
	 (lock constraints)
	)
   )
   (implementation
	(output1D NO)
   )
  )
  (component 2 FORCOUNT
   (interface
	(output 1
	 (name "Count")
	 (lock name constraints)
	)
   )
   (implementation
	(count 10)
   )
  )
  (component 3 FORMULA
   (name "mean(x)")
   (interface
	(input 1
	 (name "X")
	 (optional yes)
	)
	(output 1
	 (name "Result")
	 (lock name constraints)
	)
   )
   (implementation
	(expr 1 "mean(x)")
   )
  )
  (component 4 TEXTDISPLAY
   (name "Mean Value")
   (interface
	(input 1
	 (name "Data")
	)
   )
   (implementation
   )
  )
  (component 5 FORMULA
   (name "sdev(x)")
   (interface
	(input 1
	 (name "X")
	 (optional yes)
	)
	(output 1
	 (name "Result")
	 (lock name constraints)
	)
   )
   (implementation
	(expr 1 "sdev(x)")
   )
  )
  (component 6 TEXTDISPLAY
   (name "Std Dev")
   (interface
	(input 1
	 (name "Data")
	)
   )
   (implementation
   )
  )
  (component 7 FORMULA
   (name "Formula")
   (interface
	(input 1
	 (name "log")
	 (optional yes)
	)
	(output 1
	 (name "Result")
	 (lock name constraints)
	)
   )
   (implementation
	(expr 1 "log.test1.result")
   )
  )
  (component 8 TEXTDISPLAY
   (name "Min Value")
   (interface
	(input 1
	 (name "Data")
	)
   )
   (implementation
   )
  )
  (component 9 FORMULA
   (name "min(x)")
   (interface
	(input 1
	 (name "X")
	 (optional yes)
	)
	(output 1
	 (name "Result")
	 (lock name constraints)
	)
   )
   (implementation
	(expr 1 "min(x)")
   )
  )
  (component 10 TEXTDISPLAY
   (name "Max Value")
   (interface
	(input 1
	 (name "Data")
	)
   )
   (implementation
   )
  )
  (component 11 FORMULA
   (name "max(x)")
   (interface
	(input 1
	 (name "X")
	 (optional yes)
	)
	(output 1
	 (name "Result")
	 (lock name constraints)
	)
   )
   (implementation
	(expr 1 "max(x)")
   )
  )
  (component 14 CONTEXT
   (name "Press For")
   (description2 10
	"This User Object is the outermost \"context\""
	"for the InfoAbout help device.  Within this"
	"device is the pop-up panel containing the info"
	"Notepad.  If all you can see is a device with"
	"\"Press For\", you should double-click the left"
	"mouse button on the Press For to restore the"
	"Panel View of the device.  To see how this device"
	"operates, click on the Info About button first,"
	"then press the Detail button in the \"Press For\""
	"title bar."
   )
   (implementation
	(locked no)
	(trigMode deg)
	(nextID 4)
	(component 0 TOGGLE25
	 (name "Info About")
	 (description2 17
	  "This is a toggle device with the name changed to"
	  "reflect it\'s function.  The output of the device"
	  "is \"0\" when the button is up, and \"1\" when the"
	  "button is down.  "
	  ""
	  "A Reset Control Input terminal has been added to"
	  "to always pop the button back out after showing"
	  "the pop-up help (Info About This Example) User"
	  "Object."
	  ""
	  "The Toggle has set the \"AutoExecute\" option to let"
	  "it operate even when the RUN button in the title"
	  "bar has not been pressed.  Note, however, that"
	  "AutoExecute only works when no other threads are"
	  "operating, either from their Start buttons or from"
	  "the RUN button."
	  ""
	 )
	 (interface
	  (input 1
	   (type control)
	   (name "Reset")
	   (lock name constraints)
	   (optional yes)
	  )
	  (output 1
	   (lock name constraints)
	  )
	 )
	 (implementation
	  (value Int32
	   (data  0)
	  )
	  (autoTrigger on)
	  (initValue Int32
	   (data  0)
	  )
	 )
	)
	(component 2 CONTEXT
	 (name "Info About This Example")
	 (description2 10
	  "This is a User Object that has both a detail view"
	  "and a Panel view.  If this device is visible as"
	  "an icon, you must double-click the left mouse"
	  "button to \"open up\" the non-iconic view."
	  ""
	  "Since the User Object has both a Panel and Detail"
	  "view, when you double-click on the icon, you will"
	  "first see the Panel view.  To see the components"
	  "of the User Object, press the Detail button in"
	  "the \"Info About This Example\" title bar."
	 )
	 (implementation
	  (locked no)
	  (trigMode deg)
	  (nextID 2)
	  (popupMoveable)
	  (component 0 NOTE
	   (name "NotePad")
	   (description2 11
		"This notepad is displayed as a Show on Execute"
		"panel to present the information to the reader."
		""
		"It has been \"Added to Panel\" of the \"Info About"
		"This Example\" user object, thus it is not "
		"necessary to keep it as an open device inside the"
		"Detail view; you can edit the notepad from the"
		"Panel view of this User Object.  You can also"
		"set/clear the \"Enable Edit\" flag in this Notepad\'s"
		"Object Menu to keep the pop-up notepad from being"
		"altered by the user."
	   )
	   (implementation
		(text2 29
		  "PURPOSE: Shows how to collect output from the Sequencer Log output terminal,"
		  "    and then analyze the test results."
		  ""
		  "USER INPUT REQUIRED: Press \"Run\"."
		  ""
		  "EXPLANATION:"
		  "\tThe Sequencer object can be used to control the order of calling of a"
		  "    series of tests.  The Sequencer object executes a series of sequence"
		  "    transactions.  Each of these transactions evaluates an VEE expression,"
		  "    which may contain calls to User Functions, Compiled Functions, Remote"
		  "    Functions, or other VEE functions.  After evaluating the VEE expression,"
		  "    the transaction compares the value returned by that expression against"
		  "    a test specification.  Depending on whether the test passes or fails,"
		  "    the transaction then evaluates different expressions and selects the next "
		  "\ttransaction to be executed."
		  ""
		  "\tThis example contains two User Functions, myRand1, which adds a random"
		  "    number from 0 to 1 to the value of its input, and myRand2, which adds"
		  "    a random number from 0 to 100 to its input.  The first Sequencer"
		  "    transaction calls myRand1 with the value of 1.  It tests the result"
		  "    to see if it is in the range 1 <= .. <= 1.5. If the result is in the"
		  "    range, the test passes.  The transaction has logging enabled, so the"
		  "    results of the test will be output to the Log output terminal.  It "
		  "\tthen continues to the next transaction.  The second transaction calls"
		  "    myRand2 with the value of 1, and tests the result to see if it is in"
		  "    the range of 1 through 51.  Again it logs and continues.  The Sequencer"
		  "    is called 10 times.  The Log output is collected in an array by a"
		  "    Collector object.  Then some math functions are applied to the results"
		  "    of the first test.  "
		)
	   )
	  )
	  (component 1 CONFIRM25
	   (name "DONE")
	   (description2 7
		"This tiny \"thread\" begins running when the "
		"enclosing UserObject is executed.  When the user"
		"acknowledges the OK/DONE button, there is nothing"
		"left to execute, so the thread ends.  Since there"
		"are not other threads running, the User Object"
		"is completed and will exit, removing the Show on"
		"Execute pop-up display."
	   )
	   (interface
		(output 1
		 (name "Go")
		 (lock name constraints)
		)
	   )
	   (implementation
		(component enterButton yes)
		(component escapeButton yes)
	   )
	  )
	  (configuration
	  )
	  (ShowOnExecPanel
	   (geometry 4 35 833 547)
	   (panel
		(geometry 86 121 829 519)
		(widget 0 detail
		 (title off)
		 (borderStyle flat)
		 (geometry 92 126 816 465)
		 (editing disabled)
		)
		(widget 1 detail
		 (title off)
		 (borderStyle flat)
		 (geometry 466 596 66 39)
		)
	   )
	  )
	 )
	)
	(component 3 IFTHENELSE
	 (name "!= 0")
	 (description2 5
	  "If no threads are running, the Toggle can generate"
	  "it\'s output data whenever the button is changed"
	  "(using the Toggle\'s AutoExecute mode).  In this"
	  "case, either the User Object is executed or the"
	  "Autoexecute sequence terminates."
	 )
	 (interface
	  (input 1
	   (name "A")
	   (optional yes)
	  )
	  (output 1
	   (name "Then")
	   (lock name constraints)
	  )
	  (output 2
	   (name "Else")
	   (lock name constraints)
	  )
	 )
	 (implementation
	  (expr "a!=0")
	 )
	)
	(configuration
	 (connect D1:0 D0:1)
	 (connect D2:1 D1:0)
	 (connect D0:1 D2:1)
	)
   )
  )
  (component 15 NOTE
   (implementation
   )
  )
  (configuration
   (connect D2:1 D0:0)
   (connect D0:2 D1:1)
   (connect D2:0 D1:2)
   (connect D7:1 D3:1)
   (connect D3:1 D4:1)
   (connect D7:1 D5:1)
   (connect D5:1 D6:1)
   (connect D1:1 D7:1)
   (connect D9:1 D8:1)
   (connect D7:1 D9:1)
   (connect D11:1 D10:1)
   (connect D7:1 D11:1)
  )
 )
 (viewFor -1
  (active detail)
  (detail
   (geometry 0 53 900 447)
   (configuration
	(viewFor 0
	 (active detail)
	 (icon
	 )
	 (detail
	  (geometry 86 178 308 105)
	 )
	 (terminals on)
	)
	(viewFor 1
	 (active icon)
	 (icon
	  (geometry 75 358 110 25)
	 )
	 (detail
	 )
	 (terminals on)
	)
	(viewFor 2
	 (active detail)
	 (icon
	  (geometry 35 98 110 64)
	  (iconImage "loop.icn")
	 )
	 (detail
	  (geometry 10 83 160 34)
	 )
	)
	(viewFor 3
	 (active icon)
	 (icon
	  (geometry 451 558 78 25)
	 )
	 (detail
	 )
	 (terminals on)
	)
	(viewFor 4
	 (active detail)
	 (icon
	  (geometry 0 0 110 0)
	 )
	 (detail
	  (geometry 548 552 184 37)
	 )
	)
	(viewFor 5
	 (active icon)
	 (icon
	  (geometry 451 638 78 25)
	 )
	 (detail
	 )
	 (terminals on)
	)
	(viewFor 6
	 (active detail)
	 (icon
	  (geometry 0 0 78 0)
	 )
	 (detail
	  (geometry 550 632 180 37)
	 )
	)
	(viewFor 7
	 (active detail)
	 (icon
	  (geometry 511 688 78 64)
	  (iconImage "formula.icn")
	 )
	 (detail
	  (geometry 166 440 178 60)
	 )
	 (terminals on)
	)
	(viewFor 8
	 (active detail)
	 (icon
	  (geometry 0 0 110 0)
	 )
	 (detail
	  (geometry 548 392 184 37)
	 )
	)
	(viewFor 9
	 (active icon)
	 (icon
	  (geometry 451 398 78 25)
	 )
	 (detail
	 )
	 (terminals on)
	)
	(viewFor 10
	 (active detail)
	 (icon
	  (geometry 0 0 110 0)
	 )
	 (detail
	  (geometry 548 472 184 37)
	 )
	)
	(viewFor 11
	 (active icon)
	 (icon
	  (geometry 451 478 78 25)
	 )
	 (detail
	 )
	 (terminals on)
	)
	(viewFor 14
	 (active panel)
	 (icon
	  (geometry 255 628 110 25)
	 )
	 (panel
	  (geometry 551 92 319 77)
	  (widget 0 detail
	   (title off)
	   (borderStyle flat)
	   (geometry 654 110 114 39)
	   (scaled on)
	   (format button)
	  )
	 )
	 (detail
	  (geometry 54 75 912 591)
	  (configuration
	   (viewFor 0
		(active detail)
		(icon
		)
		(detail
		 (geometry 253 301 114 39)
		 (scaled on)
		 (format button)
		)
		(title off)
	   )
	   (viewFor 2
		(active icon)
		(icon
		 (geometry 392 368 217 25)
		)
		(detail
		 (geometry 47 150 866 520)
		 (configuration
		  (viewFor 0
		   (active detail)
		   (icon
			(geometry 440 416 78 25)
		   )
		   (detail
			(geometry 56 202 848 437)
			(editing enabled)
		   )
		  )
		  (viewFor 1
		   (active detail)
		   (icon
		   )
		   (detail
			(geometry 451 472 58 37)
		   )
		   (title off)
		  )
		 )
		 (stackingOrder 1 0)
		)
	   )
	   (viewFor 3
		(active icon)
		(icon
		 (geometry 427 308 46 25)
		)
		(detail
		 (geometry 349 328 73 64)
		)
		(terminals on)
	   )
	   (connect D1:0 D0:1
		(points 5 500 395 500 410 230 410 230 320 250 320)
	   )
	   (connect D2:1 D1:0
		(points 3 475 310 500 310 500 365)
	   )
	   (connect D0:1 D2:1
		(points 2 369 320 424 320)
	   )
	  )
	  (stackingOrder 0 2 1)
	 )
	)
	(viewFor 15
	 (active icon)
	 (icon
	  (geometry 541 206 338 48)
	  (iconImage "disclaim.icn")
	  (label off)
	 )
	 (detail
	  (geometry 830 250 200 100)
	  (editing enabled)
	 )
	)
	(connect D2:1 D0:0
	 (points 3 172 100 260 100 255 157)
	)
	(connect D0:2 D1:1
	 (points 6 456 260 490 260 490 310 60 310 60 360 72 360)
	)
	(connect D2:0 D1:2
	 (points 5 90 119 90 130 30 130 30 380 72 380)
	)
	(connect D7:1 D3:1
	 (points 4 396 470 430 470 430 570 448 570)
	)
	(connect D3:1 D4:1
	 (points 2 531 570 545 570)
	)
	(connect D7:1 D5:1
	 (points 4 396 470 430 470 430 650 448 650)
	)
	(connect D5:1 D6:1
	 (points 2 531 650 547 650)
	)
	(connect D1:1 D7:1
	 (points 6 187 370 200 370 200 400 90 400 90 470 133 470)
	)
	(connect D9:1 D8:1
	 (points 2 531 410 545 410)
	)
	(connect D7:1 D9:1
	 (points 4 396 470 430 470 430 410 448 410)
	)
	(connect D11:1 D10:1
	 (points 2 531 490 545 490)
	)
	(connect D7:1 D11:1
	 (points 4 396 470 430 470 430 490 448 490)
	)
   )
   (stackingOrder 2 9 11 3 4 6 5 0 8 10
	 1 13 7 12)
  )
  (titleBg "Gray")
  (titleFg "Black")
  (numberFormats
   (realFormat standard)
   (realSigDigits 4)
   (realRadixSpec 4)
   (integerBase decimal)
  )
 )
)
