
|
Released August 18, 2011
Documentation Notes
 |
Changes to the Documentation |
Application Level Enhancements
 |
Application - New Features |
 |
New database limits for DBAddress: |
| |
| 500 |
Databases |
| 10000 |
Tables |
| 1000 |
Fields |
| 1000000 |
Records |
|
OR |
| 500 |
Databases |
| 1000 |
Tables |
| 1000 |
Fields |
| 10000000 |
Records |
|
 |
Application - New Functions |
| See the pdf version of the Developer's Reference for descriptions of new functions. |
 |
INetFileImportText |
 |
INetOpenURL |
 |
EquationCompileSetStaticArray |
 |
Application - Fixes |
 |
Clone scripting is now working properly with pasted clones. |
 |
Dual monitor windowing fixed for plotter and Notebook. |
 |
HoursInADay, daysInAYear, etc were defined in the Simulation Setup dialog as integer values; they are now stored as real numbers. |
 |
Using Years or Months as the base time unit while using calendar dates is now a warning error condition. |
 |
String datatable string width calculation deals better with <...> formatting. |
 |
Dynamic links to fields and records of tables would get update messages if a change occurred on some other field or record of that table. (Redundant messages.) |
 |
Fixed equation include file problems. |
 |
Can now declare static variables in equation include files. |
 |
Connector values are now correctly reset at the end of a simulation. |
 |
Randomized seed fix - fixes situation when two runs started within a short time could have the same randomized seed. |
 |
DBRecordFind() was not finding blank record if exact match parameter was false. |
 |
DBFieldSetInitialize() did not allow string initialization. |
 |
Right click on database table viewer works better. |
 |
Calling ListSetName with a name longer then 31 characters will no longer cause a crash. |
 |
Empty SafeArray cells from external sources default to blanks not 0.0. |
 |
Silent Abort called by a block before running a simulation could cause the next simulation run to fail. |
 |
Linked list Optimization. |
 |
Fixed problem that could sometime cause a crash when you close the Equation editor external window. |
 |

|
Library Level Enhancements
 |
Library - Item Library Enhancements |
 |
Library - Value Library Enhancements |
 |

|
Library Level Fixes
 |
Library - Item Library Fixes |
 |
Library - Rate Library Fixes |
 |
Library - Value Library Fixes |
 |
Library - Utilities Library Fixes |
 |
Library - Plotter Library Fixes |
Other Changes and Enhancements
 |
Include Files |
 |
AR Constants v8.h |
 |
Added new constant AR_IS_DB_ADDRESS_LINKED_MSG for queries to Executive block to determine if a specified database address is linked to a string attribute. |
|
 |
AR Resource Manager v8.h |
 |
Added code to accommodate clearStatistic events from Resource Pool blocks. |
 |
Bypass resources that are currently disabled in AR_DisablePoolResources. |
 |
Correction to how resourcesToDisable is computed in RM_UpdatePoolSettings. |
 |
Added code to synch database resource statistics with Resource Pool blocks. |
 |
Accommodate parent-child relations in TransferHiddenData2VisibleTbls. |
 |
Use Resource Manager's allocated record number in calls to ScheduleServiceWaitOrdersEvent. |
 |
Added new procedure setupShiftsMenuList to encapsulate setup of shift popup menu list. |
 |
Added new procedure updateShiftsData to encapsulate the updating of shift-related database data. |
 |
Added new function areDBindexesValid to provide generic in-range test for a complete set of database indexes. |
 |
Changed to set local variable instead of popup in compareDBvalues2DialogSettings. |
 |
Dispose temporary array before making comparison between Resource Release Rule dialog and database settings. |
 |
Added new function to query the Executive block about whether a database address is linked to a string attribute, |
 |
Added calls to the new function convertTemplateTable2HiddenTIdx that supports language translation. |
|
 |
Equation v8.h |
 |
iVarsIn_ConLabelsSet() and oVarsOut_ConLabelsSet() are now more efficient. |
 |
Changed Advanced Resource DB writes to use new RESERVED API functions |
 |
In on CreateBlock, the calc when for input cons was defaulting to "after zero time event" -- which is wrong. It has been changed to "immediate". |
 |
In BlockReceive0, we were not conditionally posting the next future event. Why is this a bug? Notice in on iVarsIn and on oVarsOut a future event is posted if the user chooses to "calc immediately". However, if the user chooses to "calc after a current event", then we need to post the current event in BlockReceive0. |
 |
The DBNT list was not being updated when the user copied or deleted the rows in the iVars or oVars tables. |
 |
Make sure the model is calling database functions with correct indexes because the 8.0.1 application will throw an error message and stop the simulation on some database functions if indexes are out of range. |
|
 |
Attribs v8.h |
 |
Added "indent" argument to Attrib_BuildAttribPopContentsArray() and Attrib_AttachNamesToPopup() as a way to manage the triple spaces that currently get added to attribPopContents[]. |
|
| |
Equation Query v8.h |
 |
Make sure the model is calling database functions with correct indexes because the 8.0.1 application will throw an error mesage and stop the simulation on some dataase functions if indexes are out of range. |
|
| |
Item Contents v8.h |
 |
Fixed some problems with IC_dtbl being linked to a database table. |
|
 |

|

Released November 18, 2010
In addition to minor enhancements and tweeks, this ExtendSim update to 8.0.1 addresses issues and critical vulnerabilities in its previous release.
Note: If you have models:
 |
That use an ExtendSim database |
 |
AND have custom and/or equation-based blocks |
 |
AND those blocks read/write to the database |
...a new menu command controls whether an error is reported if the model tries to read or write data using an out-of-range database address or index.
A new menu command, Read/Write Index Checking, has been added to the Database menu.
For models prior to 8.0.1, which might legitimately have blocks with code containing out-of-range addresses, Read/Write Index Checking is OFF by default. This allows those models to run to completion without needlessly being interrupted by error messages.
For models created in 8.0.1 or higher, the error checking is ON by default, but can be controlled model-by-model using the menu command.
Note: Enabling this enhanced behavior does not impact model speed and is a good safeguard against using incorrect database data.
For more information, see the "Release Notes for Documentation" in the ExtendSim ReadMe file.
 |

|
Documentation Notes
 |
Changes to the User Guide and Developer Reference after the Addendum was printed |
The electronic version of the User Guide has red change bars along the left side of some pages; these indicate where changes were made since the manual was printed.
 |
"ExtendSim for Discrete-Event System Simulation" eBook released! |
With the release of ExtendSim 8.0.1, Imagine That Inc. proudly announces the concurrent release of its electronic book, ExtendSim for Discrete-Event System Simulation.
This is the companion book to the 5th edition of
Discrete-Event System Simulation ("DESS") by Banks, et al is now included in every ExtendSim package. The electronic book uses ExtendSim as a pedagogical tool to explain the principles and concepts discussed in the DESS text. These two books are designed to be used together in both introductory and project-based simulation courses.
Application Level Enhancements
 |
Application - Fixes |
 |
In some cases the Go To Code button in the Debugger window could cause a crash. |
 |
SimStart and SimFinish messages are now being correctly sent to blocks that are not at the top level of the worksheet. |
 |
DataTableHover message could interfere with CellAccept message. |
 |
Radio Button column tag could interfere with the refresh of the datatable. |
 |
Animation pictures in the Extensions folder sometimes failed to draw correctly during an animationPicture call. |
 |
EquationDebugCompile and EquationDebugCalculate made more bulletproof. |
 |
CloneHideDisable function is now hiding clones properly. |
 |
WhichRow/WhichCol/WhichDialogItem should now work after a setDialogVariable. |
 |
Geometric distribution was returning non-integer values in the randomCalculate function. |
 |
Ctrl- (or Command-) W could close an external equation compiler window without the block knowing the window had been closed. |
 |
If a library window was open, blocks could be dragged onto a locked model. |
 |
Dashed connection lines for unconnected wires was broken. |
 |
The 3D window could fail to open correctly in the Macintosh version the first time it was opened. |
 |
Poking an array into ExtendSim (GA and Dynamic Arrays) would poke one less row of data than requested. |
 |
An empty ExtendSim folder in the user documents folder could cause ExtendSim to launch improperly. |
 |
The Delete Records and Delete Records First Run Only table properties were not visible when exporting databases to a text file. |
 |
If the Site.tmp is copied into the wrong folder (the Application folder) during a Network License install, an error message is issued telling the user what they did wrong. |
 |
Client portion of Network License has several improvements to make the install and setup process more robust. |
 |
Application - Features |
 |
Abort All Sims button enabled in error message for certain dialogs. |
 |
New Which argument for SetRunParameter and GetRunParameter. Which – 11 set or get the run __seed table database index. |
 |
New menu command DB Read/Write Index Checking allows for error messages to be selectable on a per model basis. |
 |
Static variables in a ModL coded block can now be up to 127 characters in length. |
 |
Application - New Functions |
 |
DBFieldExists(integer databaseIndex, integer tableIndex, integer fieldIndex) |
Passing in a database index, table index, field index, returns TRUE if the field exists, FALSE if it doesn’t exist. |
 |
DBRecordExists(integer databaseIndex, integer tableIndex, integer fieldIndex, integer recordIndex) |
Passing in a database index, table index, field index, record index, returns TRUE if the record (database cell) exists, FALSE if it doesn’t exist. |
 |
DBAddressGetAllIndexes(real addressValue, integer returnIndexesArray[4]) |
Returns the indexes from a DBAddress value. |
 |
WhoInvoked() |
Used to determine if a dialog item message handler was invoked by a call to SetDialogVariable, or by user interaction. Returns a one (1) if the invoke was through SetDialogVariable, or a zero (0) if through user interaction. |
 |
LastSetDialogVariableString() |
Returns the last string value that was set by SetDialogVariable. This is useful when setting the value of a dialog item; e.g. in a popup menu where the stored value is not the value that the popup menu contains, but rather an additional string variable. |
 |
WinSetForegroundWindow(integer handle) |
Sets the application associated with the passed in handle to be the foreground window. Passing in a zero, sets ExtendSim as the foreground window. |
 |
Application - New Message Handlers and Global Variables |
 |
ModifyRunParameter |
Sent before the simulation run begins to allow changing the Simulation Setup parameters via the SetRunParameter() function. |
 |
BlockReceive5-BlockReceive9 |
 |
SysGlobal20-29, SysGlobalInt30-39 |
Library Level Enhancements
 |
Library - Item Library |
 |
Activity |
 |
Fixed problems with the calculation of the block’s statistics which occurred under certain conditions where Shifts and Shutdowns were used. |
 |
Fixed bugs introduced in ExtendSim 8 for calculating empirical delays. |
 |
Added missing check for check box Animation H-Block object:. The Activity was trying to animate the hierarchical block even if this was not checked. |
 |
Removed sorting of linked list after the block comes back on shift if shutdown is not enabled. This fixes a problem where items were leaving the block in a different order then when they arrived. The time of departure was correct, but the order of departure was reversed. |
 |
Fixed how capacity gets saved when Shifts and Shutdowns are used concurrently. This fixes a problem where the Activity's capacity could erroneously get set to "0" if the block was shut down while off shift. |
|
 |
Create |
 |
Turned off DI Link Messages to avoid an infinite loop when user is in multiple random arrival distributions mode. |
 |
If the user is not creating items randomly, make sure the Shift popup has been set to "none" so that the Create block is not inadvertently being controlled by a Shift. |
 |
Changed calendar date error checking in checkdata. |
|
 |
Executive |
 |
Added on BlockReceive5 so a remote block can check to see if a particular field in a database has been linked to a string attribute. |
 |
Fixed string attribute bug: If a user cleared a link to a database field, the SL database flag needed to be cleared as well. |
|
 |
History |
 |
Fixed problem with reverse view. |
|
 |
Information |
 |
Added ItemCount variable. If items were coming in with a quantity > 1, the time between statistics was not being calculated correctly because countTotal was > 1 for the first item through the block. |
|
 |
Queue |
 |
Check for initialization of the Resource Manager's queue list index before trying to access the list on SHIFTSCHEDULE events. |
 |
Fractional item quantities are no longer allowed as they do not make sense in the context of a queue. |
 |
Make sure database indexes are initialized for advanced resources in SetupDialog. |
 |
Check for valid dialog settings when queue is in Resource Pool mode. |
 |
Add check to make sure a valid DB address attribute has been specified when the AR_AttachTableToItem_chk checkbox is selected. |
|
 |
Queue Equation |
 |
Changed Advanced Resource DB writes to use new RESERVED API functions. |
 |
Fractional item quantities are no longer allowed as they do not make sense in the context of a queue. |
 |
in FindNextItem(): if rank rule = all TRUE ranked items AND itemQty > 0, had a problem where the item index of the cloned item. |
|
 |
Queue Matching |
 |
Fractional item quantities are no longer allowed as they do not make sense in the context of a queue. |
|
 |
Read(I) |
 |
Added option to get the record index by searching using a previous result. |
 |
In DB_Read(), moved updating attributes below the for loop that does the read for all the rows because in certain situations a later row may be relying on the original attribute value that was on the item when it arrived. |
 |
Make sure calling "DB" functions with correct indexes because 8.0.1 app will throw an error msg and stop the simulation on some DB functions if indexes are out of range. |
|
 |
Resource Item |
 |
Fractional item quantities are no longer allowed as they do not make sense in the context of a resource item. |
|
 |
Resource Manager |
 |
Added check for “disabled” initial status when initializing total resources count in Pools table. |
 |
Initialize Resources table before updating Pools table due to precedence relation between these tables. |
 |
Check for empty reneging queues global arrays. |
 |
Disable instead of deleting resources in AR_UpdatePoolSettings. |
 |
Initialize pool utilization values at the beginning of each run. |
 |
Clear association with a parent resource order in ReleaseResources and clear association with resource order in ReleaseResources. |
 |
Checks to see if item is associated with a parent resource order ID before clearing resource order ID in itemArrayI2 in AR_doRenege. |
 |
Checks for out-of-range condition for primary and secondary sort key popups. |
 |
Added code to accommodate clearStatistic events from Resource Pool blocks. |
 |
Clear association with a parent resource order in ReleaseResources. |
 |
Prevents out-of-range index in proceeding database call in setupVisibleDatabaseTables. |
 |
Added code to check for and handle out-of-range conditions for database indexes. |
 |
Checks for no groups condition in refreshResGroupMembersTable to prevent out-of-range condition for database access. |
 |
Updated popup menu list in database before refreshing popup list in ON SHIFTSCHEDULE event handler. |
 |
Calls new procedure that encapsulates the updating of shift-related database data. |
 |
Forces another lookup after the popup list is rebuilt in PopulateShiftsPopup procedure. |
 |
Sets the resource pool popup to the new resource pool in the AddNewResourcePool_BTN message handler. |
 |
Checks for no records situation when cleaning up Resource Orders tables ON ENDSIM. |
 |
Checks for database index out-of-range situation in convertDBvalues2DialogSettings. |
 |
Added logic to support language translations. |
 |
Added infrastructure to determine if a resource requirement depends on attribute values. |
 |
Continues searching all list elements for a resource requirement that depends on attribute values in BuildWaitingOrdersList. |
 |
Updated additional location in code of ServiceWaitingOrders where it needs to check all resource orders whose requirements depend on attribute values. |
 |
Prevents resource requirements from being deleted while they are linked to string attributes |
|
 |
Resource Pool |
 |
Clears AR database resource pool statistics on clearStatistics events when pool is in advanced resources mode. |
 |
Added code to make sure AR database statistics are in synch with Pool blocks. |
 |
Makes sure icon is animated when model opens. |
 |
Saves the old value of numAvailable_prm in On BLOCKRECEIVE0 before it potentially changes. |
 |
Makes sure any changed values are output before exiting. |
 |
Initialized QueueLength_prm to 0 in on createblock. |
|
 |
Resource Pool Release |
 |
Makes sure icon is redrawn when model opens. |
 |
Removed leading space from displayed name in attribute popups. |
|
 |
Select Item In |
 |
Icon no longer animates (changes shape) if the output connection is collapsed. |
|
 |
Select Item Out |
 |
Fixed throughput counter for attribute based selection when top value != 0. |
 |
Icon no longer animates (changes shape) if the output connection is collapsed. |
 |
Added hiding of item animation picture if previous simulation ended with an item in the block. |
 |
Changed animation oval to animation picture of a green circle because the green circle looks better. |
 |
Moved where the animation object representing the item in the block was hidden. This made the sequence of animation look better. |
|
 |
Set |
 |
The table in the Set block can now be used as a factor or response in the Scenario Manager. |
|
 |
Throw Item |
 |
Inserted the AttribInfo message handler so the attribute used by the block will appear in the Executive’s attribute list. |
|
 |
Workstation |
 |
Fixed bugs introduced in ExtendSim 8.0.0 for calculating empirical delays. |
|
 |
Write(I) |
 |
Make sure calling database functions with correct indexes because 8.0.1 application will throw an error message and stop the simulation on some database functions if indexes are out of range. |
 |
Expanded the behavior of the “Expand number of records if necessary” checkbox: if the record search fails (i.e. the block cannot find the search value in the search field), then a record is added to the end of the write table and the search value is added to the new record. |
|
 |
Library - Rate Library |
 |
Valve |
 |
In the Result tab, a new advanced status can be generated. It informs about the Limited/non limited, starved/partially starved/non starved and blocked/partially blocked/non blocked status of a Valve. |
 |
Updated dialog items during pauseSimulation message handler. |
|
 |
Bias |
 |
If a section of a model with a Bias block is a “deduced section”, the section it is deduced from should be maximized instead of the deduced section. The fix is for the Bias block but is located in the Executive block. |
|
 |
Convey Flow |
 |
Precision issue: if a posted next time is too close to the currentTime, there is possibly for an infinite loop. In that case, the next time is delayed a little to avoid the infinite loop. |
 |
In accumulate-maximum density mode, when accumulating, if a portion disappears and the two portions next to each other have now the same density, the two portions are joined. |
 |
Time tie fix when the maximum density changes while the new effective rates are propagating. |
|
 |
Interchange |
 |
Fix: Added the blocker information for Item messaging. |
|
 |
Library - Value Library |
 |
Command |
 |
Updated the Command textbox when Excel is first launched. There were some situations where this was not getting populated. |
 |
Change limits on range check for list of macro names. The last element in the list was not getting used. |
 |
Added new arguments to openFile procedure for controlling Excel setup and abort of simulation runs. There were multiple aborts occurring in ON DIALOGOPEN which have now been removed. |
 |
Convert openFile and openXLFile from procedures to functions to facilitate more robust error handling. |
 |
Force Excel to be in the foreground before prompting the user for the Excel workbook name. This uses the new API function WinSetForegroundWindow. |
|
 |
Math |
 |
Changed abort calls to AbortAllSims() so that all runs will be stopped if there is an error. |
|
 |
Random Number |
 |
Fixed importing of Johnson SB and Johnson SU from Stat::Fit. |
|
 |
Read |
 |
No longer sending connector messages in PostInitSim without checking to see if the model is continuous. |
 |
In LinkContent, DB_TrackRecordNames_chk was conditionally getting set to TRUE even if the user had not specified a record name to track. |
 |
Make sure calling database functions with correct indexes because the 8.0.1 application will throw an error message and stop simulation on some database functions if indexes are out of range. |
 |
Reversed the change that was made on August 3, 2010. That behavior is desirable. |
 |
Changed the "read when" default from "read at beginning of sim" to "undefined" so it will force users to specify the "read when". |
 |
Fixed bug in TF_DataInSetup(). If reading a whole row and if results_StartCoordinate_prm and/or results_EndCoordinate_prm are blank, default them to first and last column respectively. |
|
 |
Scenario Manager |
 |
If a scenario was not checked to run, the factors were being copied into the dialogs. This has been fixed. |
 |
Random distributions in database tables are now copied from the source to the target table. |
 |
Corrected formula for computing offset into DBFactor_tbl dialog table. |
 |
Fixed Fields as Factors. |
 |
SetupDialog no longer recalculates all of the results if it is called from on tabSwitch. This can greatly speed up the opening of the dialog. |
 |
Changed Scenario DB to _Scenario DB to make this a reserved database. |
 |
Removed calls to CopyScenarioTable as it was unnecessary and was causing an array out of bounds error. |
|
 |
Select Value In |
 |
Icon no longer animates (changes shape) if the output connection is collapsed. |
|
 |
Select Value Out |
 |
Icon no longer animates (changes shape) if the output connection is collapsed. |
|
 |
Simulation Variable |
 |
Added setting output connector at the end of the simulation and the option to send a message. |
|
 |
Statistics |
 |
Clear advanced resources statistics if selected. |
 |
Added ability to delete cloned items from the report table. |
|
 |
Write |
 |
In LinkContent, DB_TrackRecordNames_chk was conditionally getting set to TRUE even if the user had not specified a record name to track. |
 |
Make sure the model is calling database functions with correct indexes because the 8.0.1 application will throw an error message and stop the simulation run on some database functions if indexes are out of range. |
 |
Expanded the behavior of the “Expand number of records if necessary checkbox:". If the record search fails (i.e. the block cannot find the search value in the search field), then a record is added to the end of the write table and the search value is added to the new record. |
 |
Reversed the change that was made on August 3, 2010. That behavior is desirable. |
 |
Changed the "write when" default from "write at end of sim" to "undefined". This forces the modeler to select a "write when" check box on the Options tab. |
 |
Fixed a bug that occurs when writing a whole row for a text file. If writing a whole row and if the start or end columns are blank, then default them to first and last column respectively. |
|
 |
Library - Utilities Library |
 |
Popups |
 |
On LinkStructure added so that the block can adjust to a change in structure of a linked database table. |
 |
If one cell of the table is blank, in order to keep the proper row in the popup menu, blank is replaced with " ". |
|
 |
Model Interface |
 |
Added message hander for RandomSeed_prm so that the seed would be changed when this parameter changed, not just when the Set Random Seed To checkbox changed. |
 |
Changed icon to be standard size and color. |
 |
Placement of clones is now relative to the left side of the model window. |
|
| Content in the block is updated when the shift changes. |

|
Other Changes and Enhancements
 |
Include Files |
 |
AR Constants v8.h |
 |
Added new constant AR_IS_DB_ADDRESS_LINKED_MSG for queries to Executive block to determine if a specified database address is linked to a string attribute. |
|
 |
AR Resource Manager v8.h |
 |
Added code to accommodate clearStatistic events from Resource Pool blocks. |
 |
Bypass resources that are currently disabled in AR_DisablePoolResources. |
 |
Correction to how resourcesToDisable is computed in RM_UpdatePoolSettings. |
 |
Added code to synch database resource statistics with Resource Pool blocks. |
 |
Accommodate parent-child relations in TransferHiddenData2VisibleTbls. |
 |
Use Resource Manager's allocated record number in calls to ScheduleServiceWaitOrdersEvent. |
 |
Added new procedure setupShiftsMenuList to encapsulate setup of shift popup menu list. |
 |
Added new procedure updateShiftsData to encapsulate the updating of shift-related database data. |
 |
Added new function areDBindexesValid to provide generic in-range test for a complete set of database indexes. |
 |
Changed to set local variable instead of popup in compareDBvalues2DialogSettings. |
 |
Dispose temporary array before making comparison between Resource Release Rule dialog and database settings. |
 |
Added new function to query the Executive block about whether a database address is linked to a string attribute, |
 |
Added calls to the new function convertTemplateTable2HiddenTIdx that supports language translation. |
|
 |
Equation v8.h |
 |
iVarsIn_ConLabelsSet() and oVarsOut_ConLabelsSet() are now more efficient. |
 |
Changed Advanced Resource DB writes to use new RESERVED API functions |
 |
In on CreateBlock, the calc when for input cons was defaulting to "after zero time event" -- which is wrong. It has been changed to "immediate". |
 |
In BlockReceive0, we were not conditionally posting the next future event. Why is this a bug? Notice in on iVarsIn and on oVarsOut a future event is posted if the user chooses to "calc immediately". However, if the user chooses to "calc after a current event", then we need to post the current event in BlockReceive0. |
 |
The DBNT list was not being updated when the user copied or deleted the rows in the iVars or oVars tables. |
 |
Make sure the model is calling database functions with correct indexes because the 8.0.1 application will throw an error message and stop the simulation on some database functions if indexes are out of range. |
|
 |
Attribs v8.h |
 |
Added "indent" argument to Attrib_BuildAttribPopContentsArray() and Attrib_AttachNamesToPopup() as a way to manage the triple spaces that currently get added to attribPopContents[]. |
|
| |
Equation Query v8.h |
 |
Make sure the model is calling database functions with correct indexes because the 8.0.1 application will throw an error mesage and stop the simulation on some dataase functions if indexes are out of range. |
|
| |
Item Contents v8.h |
 |
Fixed some problems with IC_dtbl being linked to a database table. |
|
 |

|
|
 |
 |