Home

SIMSCRIPT III User`s Manual

image

Contents

1. Generic makefile for SIMSCRIPT programs MAKE ARGUMENTS lt no arg gt Make executable with the name in the PRG parameter clean Remove all non source files i e object files and the executable and all intermediate files cleanexe Remove the executable Soest SSS SSCS SSeS ee eee SS SOS oe eee ce SS SSS See oS eee Se ee FILL IN THE PARAMETERS BELOW UNTIL THE LINE gt gt gt END OF PARAMETERS lt lt lt lt lt lt PARAMETERS gt gt gt 44 PRG The name of the executable PRG bounce PREAMBLE SIMSCRIPT source file containing the preamble SIMFILES All other SIMSCRIPT source files A followed immediately by a carriage return must be put at the end of the line to continue to the next PREAMBLE Preamble sim ball sim bounce sim done sim init sim main sim menu sim menuctl sim output sim SFLAGS SIMSCRIPT compile flags SFLAGS d SIMFILES SIMLINK Specify link command with SIMGRAPHICS I SIMGRAPHICS II or no graphics dynamic or static link lt lt lt DYNAMIC LINK gt gt gt SIMGRAPHICS simgld1 SIMGRAPHICS simgld2 or simgld NO GRAPHICS simld lt lt lt STATIC LINK gt gt gt SIMGRAPHICS tsimgld1 SIMGRAPHICS tsimgld2 NO GRAPHICS tsimld SIMLINK simgld
2. 1 to 1 117 Simscript III User s Manual sqrt f double_arg A double function that returns the square root of double_arg The argument must be nonnegative tan f double_arg A double function that returns the tangent of double_arg The argument is specified in radians xor f integer_arg1 integer_arg2 An integer function that returns the value obtained by performing a bitwise exclusive OR of integer_arg1 and integer_arg2 For example xor f 23 51 returns 36 because the bitwise exclusive OR of binary 010111 23 and binary 110011 51 is binary 100100 36 118 C 3 Text Operations concat f text_arg1 text_arg2 A text function that returns the concatenation of two or more text arguments For example concat f Phi ladelp hia returns Philadelphia fixed f text_arg integer_arg A text function that returns the value obtained after appending space characters to or removing trailing characters from the value of text_arg to make its length equal the value of integer_arg For example fixed f abcd 2 returns ab and fixed f abcd 5 returns abcd Integer_arg must be nonnegative if it is zero a null string is returned length f text_arg An integer function that returns the number of characters in text_arg For example length f Chicago returns 7 and length f returns zero lower f text_arg A text function that returns the value of
3. 76 Note on OREPCMDS and OREADCMDS Even when output from read or repeated commands is turned off the output from the last command that was read or repeated will be shown so that you can see where you landed SEV entname attrname value Set Entity Values Allows you to change the attribute value of a temporary entity For quoting rules to set text values see the SV command For entname you can enter the same values as for FP an entity pointer name an entity pointer value in hex or a n pointer number Using n for entname When you get to an entity using FP follow pointer commands the display of the pointer attributes in the entity will overwrite the pointer number n you used to display this entity with FP n Thus there is no longer a valid n to use for entname You should go back outside of the entity e g back one element in a list and then use FPN n to display the entity FPN works like FP except that it does not reset the pointer numbers This way you will keep all pointers along the way for use by SEV Limitations It is currently impossible to change values of permanent entities i e arrays Also you cannot set the values of packed temporary entity attributes SB rtnname lineno SNAP Set Breakpoint Sets a breakpoint in routine rtnname at line lineno You can use for the routine name to denote the current routine routine in the current frame Snap Calls your specified snap routine SNA
4. Simscript III User s Manual uniform f double_arg1 double_arg2 integer_arg A double function that returns a random number in the range m to n from the continuous uniform distribution having parameters m equal to double_arg1 and n equal to m n double_arg2 and mean u equal to where m lt n Integer_arg must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate weibull f double_arg1 double_arg2 integer_arg A double function that returns a nonnegative random number from the Weibull distribution having shape parameter equal to double_arg1 and scale parameter 2 equal to double_arg2 where a gt 0Q and gt 0 Integer_arg must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate If equals 1 the Weibull distribution is the same as the exponential distribution If equals 2 the Weibull distribution is the same as the Rayleigh distribution 128 C 6 Simulation between v A subprogram variable that specifies a routine to be called by the timing routine before each process method or process routine is executed or contains zero which is the default if none is to be called The process notice is removed from the event set ev s and the simulation time time v and event set index event v are updated before this routine is called however the pointer to the
5. Along with the mathematical and statistical functions most often used in simulation exponential functions random number generators and so on SIMSCRIPT III includes the accumulate and tally statements that allow the model builder to collect statistics on key variables in his model Simscript III User s Manual e Simulation Graphics Brings interactive animated and display graphics to the SIMSCRIPT III models Graphical objects can be easily added to the program providing automatic animation and information display Input Output dialog boxes menu bars pallets can easily be added to the model providing elegant and functional Graphical User Interfaces e Data Base Connectivity Provides SIMSCRIPT III Application Program Interfaces API s to the major databases available on the market Microsoft Access SQL Server Oracle IBM DB2 and IBM Informix e Operating System Interface Provides SIMSCRIPT III Application Program Interfaces API s to Operating System Services facilitating portable models across all SIMSCRIPT III supported computer platforms e Open System SIMSCRIPT III provides possibility to call non simscript routines functions from a SIMSCRIPT model This facilitates usage of libraries written in C C Java or FORTRAN from SIMSCRIPT models e Complete Methodology The SIMSCRIPT III approach to simulation model development provides the complete set of capabilities needed to develop a simulation model A simulation model de
6. New code close unit 3 146 The NOW clause The NOW clause is used with the SCHEDULE CAUSE ACTIVATE statement to schedule a process for immediate activation Technically speaking the statement SCHEDULE NOW is equivalent to SCHEDULE IN RINF C UNITS The negative time specification is to ensure that the process scheduled before any other processes scheduled to run at the current value TIME V but after other existing process that have already been given a SCHEDULE NOW If the exact ordering of concurrently scheduled processes is not critical schedule now can be replaced by schedule in 0 0 units If in a rare case the ordering IS critical schedule now can be replaced by schedule in rinf c units Old code schedule a JOB now schedule a CUSTOMER now New code schedule a JOB in 0 0 units don t care about ordering schedule a CUSTOMER in rinf c units ordering is critical Archaic options for the OPEN statement Several of the options used in the OPEN statement have been deprecated which include SYNCHRONOUS ASYNCHRONOUS REOPENABLE REPOSITIONABLE VARIABLE FIXED UNDEFINED NUMBERED SPANNED ASA DEVICE SAVE DELETE PRINT NOPAD STRIP PASS INSERT LOCK TEMPORARY The following options are not deprecated APPEND BINARY CHARACTER FORMATTED NOERROR NAME and RECORDSIZE Archaic options for the CLOS
7. loop block 1096 Missing here for a jump back A here statement must exist prior to the occurrence of a matching jump back statement 90 1097 Missing here for a jump ahead A here statement must appear after a jump ahead This error is detected at the end of the routine 1098 Both accumulate and tally illegal on the same variable The mixing of statistics type is not allowed for a given variable See message 1099 1099 accumulate tally illegal for monitored random variables These operations are in fact implemented by constructing monitoring routines 1100 Statistic requested twice for the same variable One statistical keyword appeared more than once for a given variable 1101 Improper type of variable for accumulate or tally Accumulate or tally can be requested for unsubscripted global variables attributes of permanent entities temporary entities event notices processes resources and compound entities They cannot be requested for subscripted global variables subscripted attributes of the system or common attributes of temporary entities 1102 Attribute for accumulate or tally improperly pre defined The variables containing the accumulated or tallied statistics should be left for automatic definition by the compiler They should not appear in define statements 1103 Accumulate or tally on an undefined variable The name of the variable is probably spelled wrong 1104 Histogram of attribute of a temporary entity is forbidden Hi
8. o is sufficient Next make needs to know how to transform sim files into o files We do this using a transformation rule called sim o See the sample makefile in paragraph 2 7 5 for an example In transformation rules the special macros are set as follows is set to the file name without the suffix lt is the name of the file to be transformed and is the name of the file to be created or updated 2 7 4 Special Notes Each line in a makefile is executed by a new invocation of the shell so commands like ed for 66499 example must be combined into one line using the shell command separator 5 By default make displays each command before executing it This can be prevented by preceding the command with an at sign If a macro is defined on the make command line it supersedes the makefile s definition if any is present A typical use of this is to use make SFLAGS O to use optimization on any compiles that need to be performed There are several ways to force recompilation 1 Use touch 1 to update the source file s modify time Make will then consider the source file changed This will also force relinking if the corresponding object file is a dependent of the executable 2 Delete the corresponding object file This has the same effect as the above 3 Delete the executable This will force relinking but will not recompile any sources unless they are out of date 2 7 5 Sample Makefile
9. these functions are disabled In general if a PROCESS may be terminated prematurely the PROCESS itself should check for the conditions requiring termination rather than having the PROCESS pointer destroyed by a separate routine 1163 Context requires the name of a HISTOGRAM A statement of the form accumulate HISTOGRAM NAME LO to HI by INCREMENT as the histogram of VARIABLE NAME must appear in the PREAMBLE Also see message 1104 1164 Name of routine is not a monitored variable SIMSCRIPT II 5 monitors global variables by defining routines with the same name In this case you have provided a routine with the same name as a global variable but the variable is not being monitored Rename the variable or the routine 1165 Statement out of place A PREAMBLE type statement appeared in a routine or vice versa The unrecognized word is ignored and the error scan resumes with the next statement keyword in the input stream 1166 Invalid literal value The value of the literal provided is too large to hold in a variable location 1167 Returned Function mode undefined The mode of the value returned by a function must be declared in the PREAMBLE define FN as a FN MODE function If the mode is not explicitly included in the define statement the background i e normally mode is mode currently in effect is assumed 1168 Function should return a value 95 Simscript III User s Manual 1169 Statement incomplete 1170 Pointers can test f
10. to T When called as a left function the text value assigned to the function replaces the specified substring of text_arg which must be an unmonitored text variable The following assignment changes the value of T from delph to delta substr f T 4 2 ta If the value assigned to the substring is not the same length as the substring then space characters are appended to or trailing characters are removed from the assigned value Integer_arg1 must be positive and integer_arg2 must be nonnegative If integer_arg1 is greater than the length of text_arg or integer_arg2 is zero then a null string is returned when substr f is called as a right function and no modification is made to text_arg when substr f is called as a left function trim f text_arg integer_arg A text function that returns the value obtained by removing leading and or trailing blanks if any from the value of text_arg If integer_arg is zero leading and trailing blanks are removed if integer_arg is negative only leading blanks are removed and if integer_arg is positive only trailing blanks are removed If text_arg is the null string or contains all blanks then a null string is returned For example trim f Hello 0 returns Hello upper f text_arg A text function that returns the value of text_arg with each lowercase letter converted to uppercase All other characters are unchanged For example upper f Chicago returns CHICAGO and up
11. 0 to 65535 A 16 bit signed integer 32768 to 32767 A signed integer of at least 32 bits A floating point number of 32 bits A floating point number of 64 bits An address 32 bits An address of a routine 32 bits An address of a character string The following modes are supported on 64 bit platforms Alpha Integer2 Signed integer2 Integer4 Signed Integer4 Integer Real Double Pointer Subprogram Text An 8 bit unsigned integer used to store an ASCII character A 16 bit unsigned integer 0 to 65535 A 16 bit signed integer 32768 to 32767 A 32 bit unsigned integer A 32 bit signed integer A signed integer of 64 bits A floating point number of 64 bits A floating point number of 64 bits An address 64 bits An address of a routine 64 bits An address of a character string Maximum sizes for dynamic data structures are the same on both 32 bit and 64 bit platforms 53 Simscript III User s Manual e Max l dim Array size up to 2147483648 e Max Entity size up to 262143 2418 words e Max Text variable size up to 2147483647 3 2 Non SIMSCRIPT Routines This section illustrates how a SIMSCRIPT III program can call a routine written in C or FORTRAN 3 2 1 Calling C Routines Suppose we wish to call a subroutine named sub which is written in C and has two arguments sub inarg outarg long inarg long outarg The first argument is an input to the subroutine and the second argument is an outpu
12. 19 15 3 Compiler Listing Sasser esite ete ebe a ee oetra oe eee e eaae oa aeir aa o e 20 1 6 EXECUTING A MODE enee e eE EE E AEE EEEE SE EE NEET 20 1 6 1 Passing Command Line Arguments cccccesecesseseseseeseseseeseseseneeseseseeecseneeseseseeseaeneeaeaees 20 1 6 2 Running the Executable with the Symbolic D DUGQEL sececesseseteteeseeeseneeseeees 21 1 7 CLOSING THE PROJECT T rrer cesses besccdenes ete censovedesecedeudeesestecte ccateseecouenste AEE E E EEEE E 22 1 8 SETTING SIMSTUDIO PREFERENCES ccccccecececececececececececececececscececececececececececeeececeeeeeceesceeececess 23 1 9 ON LINE HEL Pa esci scoscc cn ddeuecenoseek tx de cacsch cote ste eaea eae coven ete cecedbis teathececosentis dotensthivten die tiestete vee 23 1 10 ADVANCED COMPILER LINK OPTIONS ccccccccccccccsececesecececececeseseseseceseceseseceessesesesesessseesesesuanaes 25 2 DEVELOPING MODELS USING COMMAND LINE INTERFACE eesssseessececssecesssccsscseessoceee 29 2 1 PREPARING SOURCE FILES ira ane R EEE A A AE E E E E EER 29 2 2 COMPILING Secgcessescceccceccecesvcarcuees cacadervcateceseusccdexsuases cence Caden E A E N EE E E 29 2 3 REGOMPILING e E a E E A E E es 35 2 4 TETINIRIIN E ARAPE E PAL E E IR A P EEE EEA E EEE TEETE es 36 2 5 EXE CUTTING APE E TI RAE A leashes E EAE lei cots 38 2 6 PRO NO a E E E T e cokes 39 2A MAKE S ear E E E E E E SS 42 2 7 1 Compilation SEQUENCE 0 esecseeccsesceseseseeseseneecesesesseaensecesesssscaesesse
13. Aerie Ra aie aks 59 iii Simscript III User s Manual 4 2 1 Tour 1 Showing the Stack and VariaDleS ccecescecesesseseseseeeeseseseeceseeeesceeseeeeaeeeeeees 59 4 2 2 Tour 2 Breakpoints and Single St PPinG c cscssesceecesseceseeeeseseneeceseeeeeeeeeeeeaeeeeeeees 62 4 2 3 Tour 3 Pointer Handling Entity Set Display cccccccceecesessesesenseseseeeeeeeeseeeeseeeeees 65 4 3 SIMDEBUG COMMAND REFERENCE sssssssesecececececececscececececececeesescececececececececececececeeecececeeecesecs 66 4 4 ADVANCED LOPIGS E E EEE E E AE EE tin ae nnatioin chitin 79 JA P OBa O O V a a d 79 4 4 2 Signal Handling External EV lts ccccececcscsceesssseseseeseseseseceseseseeecseeceaeeeeeeeeseeeeaeeeeeeees 80 44 3 Reserved Nams rss Foo re A E i late BORER a i 80 44A Displaying Aray Sa A EE ARAN ena R E AE A Ra ee ER 80 4 4 5 Permanent Entities and System Owned VariableS Set cccccccseeeeeceteeteteteesenes 81 4 4 6 Conditional BreakpointS 0 ccececesceceseseeseseseeesesensecesesessesensecesesessceeseeeaeeeeceeaeeetaeeeeeees 81 4 4 7 GOntinuOUS VANiaDIOS s sivo civ Boxset chs ote eev A etc a a a en Matt ees BE 81 APPENDIX A COMPILER WARNING AND ERROR MESSAGES cssscccsssssscssssccesssceeeees 83 APPENDIX B RUNTIME ERROR MESSAGES csssscssssssccsssscccsssseccsssssccessseccccssssecessssccessnee 103 B 1 RUNTIME ERROR MESSAGES cccccccccccccsececesececececesecececesesecese
14. For VMS systems only unexpected error condition from VMS received by SIMSCRIPT library procedure 2213 Origin r must be called before calendar functions 2217 negative argument to out f 108 An attempt is made to reference a column position less than 1 2218 argument to out f exceeds buffer length An attempt is made to reference a column position greater than the record size specified for the unit 2220 simulation time decrease attempted The value of time v has decreased since the last event occurred 2221 no event process to match name in external event data The external event data contains the name of an external event process which has not been defined in the preamble 2222 invalid external event name 2224 error in use of calendar time format 2225 attempt to destroy an entity owning a non empty set An F set attribute of the entity is not equal to zero when a destroy operation is attempted 2226 attempt to destroy an entity that is in a set An M set attribute of the entity is not equal to zero when a destroy operation is attempted 2227 attempt to use a random variable that has not been read 2228 Alpha probability encountered in random variable data 2229 probability not between 0 0 and 1 0 in random variable data 2230 end of file while reading value field in random variable data 2231 Alpha value encountered in random variable data 2232 Real value where integer expected in random variable data 2233 first cumulative pr
15. JOB JOB PRIORITY MEMORY REQUIREMENT PROCESSING TIME 27 28 end CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE MAIN ed_ex7 sim 29 30 main 31 32 define MEAN INTERARRIVAL TIME MEAN PROCESSING TIME STOP TIME 33 as real variables 34 35 open unit 7 for input name is ed_ex7_x dat 36 open unit 1 for input name is ed_ex7 dat 37 use unit for input 38 39 create COMPUTER CPU 40 create COMPUTER MEMORY 41 read TOTAL UNITS COMPUTER CPU TOTAL UNITS COMPUTER MEMORY 42 MEAN INTERARRIVAL TIME MEAN PROCESSING TIME STOP TIME 43 44 print 6 lines with TOTAL UNITS COMPUTER CPU 45 TOTAL UNITS COMPUTER MEMORY 60 MEAN INTERARRIVAL TIME 46 MEAN PROCESSING TIME STOP TIME thus 47 A COMPUTER CENTER Sor UID 48 NO OF CPU S i STORAGE AVAILABLE 49 SMALL JOBS ARRIVE AT THE RATE OF HOUR 50 AND HAVE A MEAN PROCESSING TIME OF AEA kK MINUTES SL LARGE JOBS ARE SUPPLIED AS EXTERNAL DATA 52 THE SIMULATION PERIOD IS a Oe HOURS 53 54 HOURS V 1 one hour per simulation time unit 59 56 schedule a COMPUTER JOB GENERATOR 57 given MEAN INTERARRIVAL TIME MEAN PROCESSING TIME STOP TIME now 58 schedule a COMPUTER STOP SIMULATION in STOP TIME hours 59 60 start simulation 61 62 read as using unit 5 to keep text window open 63 63 end Input data in file ed_ex7 dat NaF 51 10 11 12 Simscript III User s Manual Input data in file ed_ex7_x dat JOB JOB J
16. Window Help PE FOE feats aI a a executable Nai icn help Ffrm PacShip Pacific Shipping Simulation init frm Author Ron Sweet April 1987 Itug icn ro based upon GRPORT written by Garth Mo ltugp icn revised by Ed Russe pactitle icn ported to SIMSCRIPT pedro icn pedro_sav icn normally mode is undefined rtug icn rtugp icn processes include final_report tanker icn valdez icn valdez_sav icn B a sources P Preamble sim eM clock sim MMP initial_dialog sim MP initialize sim MP main sim P5 port sim D report sim BD ship sim pt tug sim lship3 exe LIST TMP Project Built Selected coastln icn 1969 1249 Zoom 1 Figure 1 1 Project opened in Simstudio with source and graphics windows The project window displays the project tree with current project subdirectories sources executable and temp The editor window contains windows for text and graphical editing The status window displays messages during project build and execution The project tree is composed of source code files with the extension sim in the directory sources The graphics sg2 file contains the following graphical elements icons with extension icn forms with extension frm and graphs with extension grf These can be found in the directory executable Simstudio incorporates SIMSCRIPT III Syntax Color Coded Text Editor for creating editing source files and Graphical Editors for creating
17. displayed n Thus with the FP n command you can follow a previously displayed pointer This is very useful for all data structures that employ pointers such as lists sets your own graph structures etc Example Walking through a set To step through all elements of a set simply type FP n where n is the index of the pointer that represents setname pointer to first in set The first displayed element will have a pointer field S setname to successor say with index 3 Repeated commands FP 3 will display one set member after another Temporary Entity Display For temporary entities SimDebug shows the whole entity with all attributes Packing 2 4 bit packing overlap is fully supported To see just one field of an entity type FP entname attrname Note on Destroyed Entities Remember that when you destroy an entity the pointer to that entity is still there But the storage freed by the destroy command will generally be reused immediately Thus a pointer variable that points to an entity might suddenly display Ptr gt Text Error in its mode field or appear to point to a different entity class even though you did not touch that variable This is especially noticeable for the global process entities that are deallocated when the corresponding process is suspended or terminated Note on Global System Variables When global variables are listed you will also see several internal system variables that are implicit
18. distribution is the same as the exponential distribution If is an integer the gamma distribution is the same as the Erlang distribution If mw is an integer and equals a the gamma distribution is the same as the chi square distribution with u degrees of freedom log normal f double_arg1 double_arg2 integer_arg A double function that returns a nonnegative random number from the lognormal distribution having mean yz equal to double_arg1 and standard deviation o equal to double_arg2 where u gt 0 and o gt Q Integer_arg must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate normal f double_arg1 double_arg2 integer_arg A double function that returns a random number from the normal distribution having mean u equal to double_arg1 and standard deviation o equal to double_arg2 where o gt 0Q Integer_arg must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate poisson f double_arg integer_arg An integer function that returns a nonnegative random number from the Poisson distribution having mean u equal to double_arg where u gt 0 Integer_arg must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate 126 randi f integer_arg1 integer_arg2 integer_arg3 An integer function that
19. editing Icons Graphs Dialogs Menus and Palettes When you open a text file with extension sim all necessary text editing menus Simscript III User s Manual and tool bars will appear The same applies to graphical editors The following sections will describe how to create projects add source code and graphical elements and build and execute the model 1 2 Creating a New Project To create a new project use the Project gt New menu option The dialog box Create New Project will appear x Project name fesores Location C CACI simprojectsitutoril O O roe Type smscript miray o Create Cancel Type in the project name Select type of project Click Browse Look in tutorial x fa e My Documents cal hora My Computer ol 3 File name fc CAChsimprojects tutorial Select directory Matec eee Files of type Directories only v Cancel Go to the directory where the new project will be located click on Select Directory and click Create The new project will be created with the following project directories executable sources and temp These appear in the project window An empty graphics sg2 file will be created in the executable directory to hold graphical elements A file with the project name and sp extension will be created in the project directory to hold project information SIMSCRIPT III Simulation Studio resource exe o Ei graphics sg2 sources H E te
20. enabling runtime checking Modules compiled with g will be shown with the current line number and all their local variables in a traceback G Link a SIMGRAPHICS program using simgld The compiler will write a listing to the standard output Typically standard output is redirected to a file For example to write a listing to a file named listfile enter simc l sim gt listfile The listing shows the source statements together with diagnostic messages if any It may also include local and or global cross references see the x and X options 32 I path m 0 name p uUum US V Import declarations which are in the public preambles in the path The compiler will produce output listings with n lines per page The default value is 55 Set membership checking When an entity is removed from a set SIMSCRIPT checks if this entity is indeed part of the given set This is accomplished by changing the contents of the M setname attribute of the entity which not only indicates that this entity is a member of some set but also indicates of which set When the set list is owned by a permanent entity the field M setname now contains the index integer to the head of the set When the list is owned by a temporary entity M setname now contains a pointer to the owner entity This means that source code that checks M setname for 1 should check for lt gt 0 When linking the executable file created wi
21. event is SALE external event unit is 3 if event is external New code external process is SALE external process unit is 3 if process is external NORMALLY TYPE IS UNDEFINED statement The NORMALLY TYPE IS statement is used to force the specification of either RECURSIVE or SAVED clauses when defining a local variable The statement can be removed Old code normally type is undefined New code lt remove the statement gt 139 Simscript III User s Manual Comparison operators gt and lt The operators gt and lt are used to mean not equal not greater than and not less than respectively They can be replaced with the equivalent operators such as lt gt lt and gt Old code if X Q gt Y New code if X lt Y OLD VERY OLD and NEW preamble declaration The behavior of clauses OLD VERY OLD and NEW when preceding a preamble declaration is unclear and not implemented consistently These keywords can be removed Old code very old preamble ehd New code preamble end The STORE statement In very early implementations of SIMSCRIPT II 5 the STORE statement was used to assign variables without automatic mode conversion In SIMSCRIPT II 5 the statement is identical to a LET statement and can be replaced Old code store 5 in X New code let X 5 140 Bit field and intra packing Packing is designed to allow more than one attribute or ar
22. exceed 127 1076 Number of yielding arguments exceeds the maximum allowed See message 1075 1077 Number of subscripts exceeds the maximum allowed The maximum number of subscripts allowed is 254 1078 Label subscript must be between 1 and 3000 The maximum subscript allowed on a label is 3000 Since subscripted labels require a table as large as the maximum subscript value smallest program size suggests that subscripts should normally range from 1 to n in increments of 1 1079 Number of recursive local variables exceeds available space Each routine has 1024 words of storage available for recursive local variables Some of this total is used by variables which the compiler generates internally 1080 Context requires subscripted label A subscripted label is required at this point 1081 Yielding arguments illegal in left function Yielding arguments are not allowed in monitoring routines or left handed functions Ignoring 89 Simscript III User s Manual the yielding argument list scans the routine 1082 enter statement permitted only in left functions This statement should be the first executable statement in a left handed routine 1083 Global properties specified in local define Local variables cannot be monitored packed or defined as stream variables 1084 Incorrect number of given arguments in left function A routine monitoring a variable must be given the same number of arguments as the number of subscripts originally defi
23. except that the array is printed from the information contained in the array descriptors That is the array will be printed with the mode it was first reserved as PT textvar textptr Print text values in full This command prints the whole text of a text variable or a pointer pointing to a text value This command is needed since PVonly prints the first few characters of a text string The whole text value isprinted with string quotes around it and a at the end of each line whenthe text continues on the next line Thus on an 80 character line you can see77 characters of text with two string quotes around it and a at the end Text attributes If the text you want to see in full length is an attribute of an entity you can use the address of the text that is given with the attribute output as an argument for FP The same holds for arrays of text pointers PV varname Print Variable Prints the value and type information for the variable varname SimDebug first searches the current frame and if varname is not defined there then the global variables for varname As described at the beginning of this paragraph you can use wildcards to specify the variable name prefix prefix suffix When several variables match a selection list is shown 73 Simscript III User s Manual Format of output Before printing the line with the actual variable SimDebug prints the type of variable it found Given Argument YieldingArgument Local Vari
24. greater than zero then the first line of each page is number 1 Each output unit has its own copy of this variable 121 Simscript III User s Manual lines v An integer variable that enables pagination for the current output unit if containing a positive value indicating the maximum number of lines per page or disables pagination if zero which is the default or negative Each output unit has its own copy of this variable mark v An alpha variable that specifies the character that marks the end of input data describing an external process or random variable Its default value is asterisk out f integer_arg An alpha function that returns when called as a right function or modifies when called as a left function the specified character of the current output line Integer_arg is the column number of the character which must be between 1 and the record size For example the statement A out f 4 assigns the character in column four to the variable A The statement out f 4 s changes the character in column four to s This function may not be used if the current output unit has been opened for writing binary data page v An integer variable that contains the number of the current page for the current output unit It is initialized to 1 and is incremented for each new page when pagination is enabled lines v is greater than zero Each output unit has its own copy of this variable pagec
25. may cause follow on errors 1050 Statement should be preceded by a control phrase A compute statement find statement when statement or a controlled read or write statement must be within a for while or until block 1051 write format used in read statement A character string appears in the as clause of a read statement 1052 Illegal or out of place Either an attribute of a temporary entity or an argument to a function call is subscripted by an or an array reference has an before the last subscript 1053 Attempt to perform set operation on a non set A file statement a remove statement a for each of Set statement an if Set is empty or a before or after statement references a quantity not defined as a set 1054 Statement requires attributes not defined for named set A file statement a remove statement an if set is empty or a for each of Set phrase is used but the necessary set attributes were deleted by a without phrase 1055 Name of a permanent entity required in this context A Create each statement or a for each statement must refer to a permanent entity 1056 also statement outside do loop 87 Simscript III User s Manual An also statement appeared outside of a do block The compiler assumes a do statement after the also block 1057 Name of a temporary entity required in this context A create statement destroy statement or before or after statement must refer to a temporary entity 1058 group used without c
26. may enter just the first few letters of the desired name When the input matches several names you will be offered a list from which you can select the desired variable Whenever 66 SimDebug looks for a variable it looks in the current frame first local variables on the stack and when the specified variable is not found there in the set of global variables List of SimDebug Commands Comment The remainder of this line is discarded This is useful for inserting comments in command files see READCMDS Help See HELP command BOT Bottom Set the current frame to the bottom of the stack i e to MAIN See note on current frame in the DN command BPDIS n Breakpoint disable Disables breakpoint n n comes from the LB command BPEN n Breakpoint enable Enables breakpoint n The LB command shows each defined breakpoint with a number that can be used for BPEN BPDIS and DB BR rtnname Break in Routine Sets breakpoint on the first executable line of the given routine Execution stops when the routine is entered BUF n Show Buffer Show the contents of the buffer of unit n This can also be used to show the contents of the buffer i e unit 99 Ctrl C INTERRUPT key This command interrupts your running program and enters SimDebug so you can see where you are in the program s execution The current routine is the currently executing routine INTERRUPT in no debug routine When you do not compile the curren
27. of entities 4 2 1 Tour 1 Showing the Stack and Variables Our program contains a runtime error When the error occurs SimDebug shows the error message floating point error The meaning of the minor error code is machine specific here it means division by zero OS prompts tst debug ERROR Floating point error Minor error code 200 R1 sample sim Line 39 gt write B A as I 4 59 Simscript III User s Manual SimDebug shows that the error occurred in routine R1 source file sample sim at line 39 The actual source code at that line is shown on the next line To see a traceback of the routine call hierarchy type t SimDebug gt t call stack R1 sample sim Line 39 Given Arguments A 0 Integer 00000000 B 2 Integer 00000002 Local Variables I 5 Integer 00000005 J 1 Integer 00000001 R1 sample sim Line 36 Given Arguments A 1 Integer 00000001 B 2 Integer 00000002 Local Variables I 5 Integer 00000005 J 1 Integer 00000001 MAIN sample sim Line 62 Local Variables 1 AARR null Pointer I 6 Integer 00000006 2 TARR 00060548 1 dim Integer array 3 IARR2 0005C268 2 dim Pointer array 4 LE 0005C3E8 Ptr gt class LISTELEM We now see that R1 is recursive and that A is 0 Obviously we tried to divide by zero A few more comments on the traceback output The types of
28. of the argument must be assignment compatible with the mode defined in the prototype 1178 Name is ambiguous and needs proper qualification This message will be reported when an unqualified name is used that matches different classes or entities declared in two or more modules The error also occurs if the name matches more than one inherited class or object attribute 1179 A class cannot be cyclically derived from itself Illegal cycles are detected and reported by the compiler when the IS A clause is used to derive a new class from an existing class that is already derived from this new class 1180 END required to terminate a class declaration 96 Every BEGIN CLASS statement must be terminated by an END statement 1181 Subscript must be a reference variable All pointer variables used as subscripts to an object attribute or method must be REFERENCE pointer of the matching type 1182 Must be declared as an object or class attribute All object attributes and methods referred to in a DEFINE statement must be declared in the same BEGIN CLASS block 1183 Class attributes must be defined inside a class definition block The THE CLASS HAS statement can only appear inside a BEGIN CLASS END block 1184 Invalid name This message is usually reported when a qualification is used in a place that it is not expected or if the qualification is of the improper form 1185 Word assignment of object attributes not allowed The IN WORD clause
29. process is equal to zero when a cancel operation is attempted 2016 no memory space available The program is attempting to dynamically allocate more memory than the operating system will allow 2017 negative argument in itoa f 103 Simscript III User s Manual 2018 argument gt 9 in itoa f 2019 attempt to use a write only I O unit for input An I O unit opened for output only appears in a use for input statement 2020 attempt to use a read only I O unit for output An I O unit opened for input only appears in a use for output statement 2021 attempt to use a unit for input that is in the output state An I O unit last used for output appears in a use for input statement without an intervening rewind 2022 attempt to use a unit for output that is in the input state An O unit last used for input appears in a use for output statement without an intervening rewind 2023 unable to open existing file See the UNIX error message on the line following this message for more information 2024 unable to create new file See the UNIX error message on the line following this message for more information 2025 subscript out of range An array subscript is less than 1 or greater than the number of array elements 2027 range error on computed go to The index value used in a computed go to statement is less than or greater than the number of labels 2028 formatted read goes beyond the end of input record An attempt is made to read cha
30. process notice process v is not yet assigned date f integer_arg1 integer_arg2 integer_arg3 An integer function that returns the number of days from the origin date established by a prior call of origin r to the specified date where month m equals integer_arg1 day d equals integer_arg2 and year y equals integer_arg3 The arguments must satisfy 1 lt m lt 12 1 lt d lt 3l and y gt 100 day f double_arg An integer function that returns the day of the month in the range 1 to 31 for the date that is double_arg days after the origin date established by a prior call of origin r The argument must be nonnegative ev s A one dimensional array of sets called the event set Each process method and process type in the program is assigned a unique index into this array A smaller index value gives higher priority to the process method or process type The set at an index contains a process notice for each scheduled invocation of the process method or process type associated with the index The process notices are ranked within the set by increasing time of occurrence time a The number of elements in this array is contained in events v event v An integer variable that contains the event set index in the range 1 to events v of the current process method or process type during a simulation 129 Simscript III User s Manual events v An integer variable that contains the largest event set index
31. program aborts with a core dump it is possible to analyze the core file using the UNIX debugger adb Any SIMSCRIPT III program may be invoked from a shell script The exit status returned by the program will be zero if the program was terminated by a stop or end statement and will be non zero if the program was aborted due to a runtime error However you may explicitly call exit r to terminate your program and return a particular exit status 2 6 Profiling Profiling is useful when analyzing the performance of a program Profiling helps determine where most of the execution time in a program is spent In the typical program execution time is confined to a relatively few sections of code It may be profitable to concentrate on improving coding efficiency in only those sections Profiling is platform specific and may not be available on all UNIX and Windows platforms We will describe a common approach using the prof command for profiling a SIMSCRIPT II model on UNIX platform The prof command produces an execution profile of a program The profile data is taken from the profile file which is created by programs compiled with the p option That option also links in versions of the library routines which are compiled for profiling When a program is profiled the results appear in a file called mon out default filename at the end of the run Every time the program is run a new mon out file is created overwriting the old version The pr
32. result can be achieved by moving the assignments after an IF FOUND clause Old code for each ITEM in COLLECTION with ACTIVE ITEM lt gt 0 find ACTIVE ITEM ITEM ID ID TAG ITEM New code for each ITEM in COLLECTION with ACTIVE ITEM lt gt 0 find the first case if found let ACTIVE ITEM ITEM let ID ID TAG ITEM always Defining sets without attributes and routines Sets can be defined to specifically exclude attributes and functionality that is normally provided automatically F L N attributes can be eliminated from the owner and P S and M attributes can be eliminated from member entities Individual set routines that are scripted to handle the various types of file and remove operations FF FL FB FA RF RL and RS can also be eliminated The WITHOUT clause can be removed without affecting the behavior of the set Old code define COLLECTION as a lifo set without L M attributes without FL RL routines New code define COLLECTION as a lifo set 143 Simscript III User s Manual Mixed compound entities SIMSCRIPT II 5 permits compound entities that are composed either of both permanent and temporary entities or of only temporary entities Each attribute of a mixed compound entity must be a function attribute The mixed compound entity specification can be removed and its attributes replaced by functions which accept the former component entity types as parameters Old code temporary
33. returns a random number in the range m to n from the discrete uniform distribution having parameters m equal to integer_arg1 and n equal to A m n s integer_arg2 and mean x equal to where m lt n Integer_arg3 must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate random f integer_arg A double function that returns a uniform random number in the range 0 to 1 Integer_arg must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate equal to 1 random f integer_arg seed v A one dimensional integer array that contains the current seed value for each random number stream A stream number is used as an index into the array The number of array elements returned by dim f seed v is the number of streams and is initially 10 however the program may release the array and reserve it to change the number of streams triang f double_arg1 double_arg2 double_arg3 integer_arg A double function that returns a random number in the range m to n from the triangular distribution having parameters m equal to double_arg1 peak k the mode equal to k double_arg2 and n equal to double_arg3 and mean yz equal to ao where m lt k lt n Integer_arg must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate 127
34. text_arg with each uppercase letter converted to lowercase All other characters are unchanged For example lower f Chicago returns chicago and lower f CAFE returns caf match f text_arg1 text_arg2 integer_arg An integer function that returns the position of the first occurrence of text_arg2 in text_arg1 excluding the first integer_arg characters of text_arg1 or returns zero if there is no such occurrence Zero is returned if text_arg1 or text_arg2 is the null string Integer_arg must be nonnegative For example match f Philadelphia hi 2 returns 10 and match f Chicago hi 2 returns zero repeat f text_arg integer_arg A text function that returns the concatenation of integer_arg copies of text_arg For example repeat f AB 3 returns ABABAB Integer_arg must be nonnegative A null string is returned if text_arg is a null string or integer_arg is zero 119 Simscript III User s Manual substr f text_arg integer_arg1 integer_arg2 A text function that returns a substring of text_arg when called as a right function or modifies a substring of text_arg when called as a left function The substring begins with the character at position integer_arg1 and continues until the substring is integer_arg2 characters long or until the end of text_arg is reached The first character of text_arg is at position 1 For example the statement T subsir f Philadelphia 6 5 assigns delph
35. two ways First with DM addr type count you set the starting point the type and the count of your memory display Then subsequent DM commands with NO ARGUMENTS will continue memory display where the previous display left off The arguments are addr Starting address in hex type Type of display of item H P 4 bytes as hex I integer R real D double A alpha Default is H hex count Number of items to display per command always 4 per line For Alpha mode non printable characters are shown as Down Move current frame n levels down towards MAIN in the stack Default n 1 Note The current frame is the routine being looked at in the call stack shown by the T traceback command When you look at a certain variable with the PV command you look first at the current frame and then at global variables to find this variable Thus with UP and DN you can move the current frame to allow inspection e g a certain instance of a recursive routine call ECHO arg arg2 EV Echo Echoes the words arg1 arg2 to the output This is useful to output messages from within a command file Event set Prints information about the simulation including the event set the current simulation time the current and next process etc For each process event the time of the next scheduled process event and of the last scheduled process event of that class is shown with pointer numbers n in brackets behind the times Using t
36. up multi dimensional arrays This is necessary when dealing with ragged arrays or assigning array fragments Printing Text Variables The normal output of PV and T shows just the first 10 characters of the text If you want to see the whole text use PT textvar QUIT Quit Quit exit from SimDebug All open log files will be closed Synonyms are Q 74 EXIT END BYE R Run Run start your program from the beginning You cannot start your program in the middle or restart the program with the R command To restart for debugging you must call your program again with debug READCMDS cmdfilename S n Read Commands from File With this command you can put a series of commands into a file and read them in just as if you had interactively typed them at SimDebug This is useful in conjunction with command logging see LOG when you want to store and then replay a sequence of commands that got you to a certain place Normally SimDebug does not echo commands read from a file even though output from these commands e g LR is of course visible When you want to see the commands read from a command file you can SET OREADCMDS 1 Init Command File At the beginning of the SimDebug dialog SimDebug looks for a file simdebug ini in the current directory When this file exists it is read as a SimDebug command file before you enter the SimDebug dialog In this file you can store your preferred SimDebug parameter settings see SET c
37. which is equal to the total number of process methods and process types defined by the program f ev s A one dimensional pointer array that contains in each element the reference value of the process notice for the most imminent invocation smallest time a of a process method or process type or is zero if there are no scheduled invocations The number of elements in this array is contained in events v hour f double_arg An integer function that returns the hour part in the range 0 to hours v 1 of the number of days specified by double_arg which must be nonnegative hours v A double variable that specifies the number of hours per day Its default value is 24 0 Lev s A one dimensional pointer array that contains in each element the reference value of the process notice for the least imminent invocation largest time a of a process method or process type or is zero if there are no scheduled invocations The number of elements in this array is contained in events v minute f double_arg An integer function that returns the minute part in the range O to minutes v 1 of the number of days specified by double_arg which must be nonnegative minutes v A double variable that specifies the number of minutes per hour Its default value is 60 0 130 month f double_arg An integer function that returns the month in the range 1 to 12 for the date that is double_arg days after the origin da
38. your program Use SV to change values of simple variables of any type You can change local variables arguments and global variables For text values Enter the text enclosed in string double quotes When the string you want to enter should contain a string quote itself it must be doubled i e a single string quote is denoted by Use SEV to set attributes of entities SYSVARS System Variables Shows the values of several system variables such as read v write v buffer v prompt v and hours v T from to Traceback Prints a traceback of the current call stack the hierarchy of called routines starting at the last called routine down to MAIN The arguments from and to can be given to limit the traceback to a range of routines useful for deep recursions From and to are specified as the level numbers given in the traceback for each routine MAIN is at level 1 where as a level number means the current frame By default the level numbers SL in the routine header in traceback are not given in the traceback However they are useful for deep tracebacks when you want to see only part of the traceback and for recursion You can enable the display of these stack levels with SET SHOWSTACKLEVELS 1 See SET command Global variables Generally the global variables are not considered a part of the traceback and hence are not shown with the T command If you SET GLOBWTRACE 1 see SET command you will also get the glob
39. 0 o File name systemfont obj view obj window obj Select libraries My Network Places Files of type fan Files X Cancel templates obj Figure 1 15 Selecting imported libraries and objects for linking Imports This option is available for Simscript III projects It specifies search path for import declarations Press Add to select directories to be searched Press Move up Move down to change order of these directories As an example every graphical SIMSCRIPT module imports declarations from the public preamble of the GUI M module Path for it is included by default in Import directories 27 Simscript III User s Manual Imports x Puen directories SIMHOME defs quim OK Cancel 28 Remove Move up Ad Move down 2 Developing Models Using Command Line Interface Developing a SIMSCRIPT III program using command line interface commands typically involves the following steps 1 Preparing one or more SIMSCRIPT III source files using a text editor Compiling the program and checking for compilation errors 3 Editing and re compiling the program as needed until there are no compilation errors 4 Linking the object files generated by the compiler to produce an executable file Executing the program 6 Debugging the program In case of errors during execution the program should be compiled with the debugging option lin
40. 0 logarithm of double_arg The argument must be positive max f numeric_arg1 numeric_arg2 A function that returns the maximum value of two or more integer or double arguments If every argument is integer the function returns an integer result otherwise the function returns a double result min f numeric_arg1 numeric_arg2 A function that returns the minimum value of two or more integer or double arguments If every argument is integer the function returns an integer result otherwise the function returns a double result mod f numeric_arg1 numeric_arg2 A function that computes numeric_arg1 divided by numeric_arg2 and returns the remainder If both arguments are integer the function returns an integer result otherwise the function returns a double result Numeric_arg2 must be nonzero If numeric_arg1 is positive the return value is positive If numeric_arg1 is negative the return value is negative For example mod f 14 5 3 returns 2 5 and mod f 14 5 3 returns 2 5 or f integer_arg1 integer_arg2 An integer function that returns the value obtained by performing a bitwise inclusive OR of integer_arg1 and integer_arg2 For example or f 23 51 returns 55 because the bitwise inclusive OR of binary 010111 23 and binary 110011 51 is binary 110111 55 pi c A double constant equal to the value of 7 3 141592653589793 116 radian c A double constant equal to t
41. 15 Illegal implied conversion between text and other modes Use ttoa f or atot f or access conversion routines by write and read using the buffer 1116 Improper argument mode for intrinsic function An argument of mode text was expected and not found or a text argument was given where a numeric argument was expected 1119 Packed variable cannot be passed in this context Array rows of variables that are bit packed or packed n m cannot be passed as arguments to NONSIMSCRIPT routines Individual elements or arrays packed m are valid arguments 1120 Improper first argument to left substr f The first argument to substr f must be an unmonitored text variable 1121 Attempt to equivalence text variable Text variables cannot be equivalenced with other variables 1124 Conflicting parameters in open or close The open or close statement was used improperly 1126 open does not specify either input or output Either input or output or both must be specified as an open statement option 1127 text function illegal in store statement The store statement should generally not be used with text data In this instance its use would result in permanent loss of a block of memory 1128 double variable overlap caused by equivalencing A double variable occupies two successive array number locations The second of these should not be assigned to any other use 1129 always is preferred usage in this context The else otherwise statement should be chan
42. 50 ST reserve IARR as 10 52 reserve IARR2 as 5 by 5 53 54 fon r ow 5 55 do 56 create a LISTELEM called LE 57 ATTRI LE I 58 ATTRP LE IARR2 I 59 file LE in LISTSET 60 loop 61 62 call R1 3 2 63 64 end We can start our program simply by invoking the s command single step But instead we will set a breakpoint on the line where a new entity gets created and where R1 gets called With Ib we get a list of the currently set breakpoints With r we start the program which runs until it hits the first breakpoint A message is printed and the source line that will be executed next is shown Note The current line in SimDebug is the line that gets executed next Thus a breakpoint at a certain line stops execution before that line We also set a breakpoint at the beginning of R2 Note that SimDebug asks for missing argument information SimDebug gt sb main 56 SimDebug gt sb m 62 M uniquely identifies MAIN the is optional SimDebug gt sb r List of matching routines 1 R1 63 Simscript III User s Manual 2 R2 L Enter routine by number gt 1 Enter line number gt 1 No executable source code at that line Used line 4 instead SimDebug gt Ib List of Breakpoints 1 MAIN line 56 2 MAIN line 62 SimDebug gt r BREAK User breakpoint MAIN sample sim Line 56 56 gt create a LISTELEM called LE After reaching the breakpoint we
43. A macro is invoked by preceding the name with a dollar sign is used to represent a real dollar sign Macro names longer than one character must be parenthesized like this PREAMBLE When the macro is invoked its text is replaced with its current value so in our example PREAMBLE would be replaced with Preamble sim Make also has four predefined macros specific to the job it performs These special macros are and lt These macros are re evaluated before each command They are evaluated as follows The macro is the root file name of the current file For example if the current file were frequency sim would equal frequency The macro represents the current target file name The macro is the string of file names found to be newer than the current target The lt macro is the name of the file which caused this command to be executed 2 7 3 Transformation Rules A transformation rule is what make uses to transform a source file into an object file or several object files into an executable Many useful transformation rules are built into make such as rules to compile C FORTRAN or even assembler Unfortunately the rules for SIMSCRIPT are not built in To provide make with this information make must first be informed of the new source suffix 43 Simscript III User s Manual sim This is done using a fake target called SUFFIXES For our purposes SUFFIXES sim
44. E statement Options given to the CLOSE statement have been deprecated These options include the following SAVE DELETE PRINT NAME IS UNLOCK Report generation statements These statements include BEGIN REPORT 147 Simscript III User s Manual BEGIN HEADING IF PAGE IS FIRST PRINT A GROUP OF FIELDS SUPPRESSING FROM Refer to the SIMSCRIPT II 5 documentation for a description of the above features 148 Appendix F Non Simscript routines can be case sensitive In SIMSCRIPT III Handling Non Simscript routines has been improved as follows 1 Mixed case routine names can be defined The nonsimscript routine defined in the preamble should match its definition in C routine The nonsimscript routine called in the executable should match its definition in the preamble exactly For example Preamble Define MixedCaseRoutine as a nonsimscript routine End Main Call MixedCaseRoutine 5 generated C code MixedCaseRoutine 5 End 2 The argument prototyping enhancement can be applied to nonsimscript routines Under SIMSCRIPT III caution must be taken when writing the code to call a nonsimscript routine For example if the implementation of MixedCaseRoutine takes double as its first parameter and the integer 5 is passed by the caller no conversion on the argument will take place The SIMSCRIPT II 5 compiler has no way of knowing
45. L F MEAN INTERARRIVAL TIME 3 minutes 90 loop OL 92 end CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE METHOD COMPUTER CENTER COMPUTER STOP SIMULATION ed_ex7 sim 49 7 9 Simscript III User s Manual process method STOP SIMULATION skip 6 lines print 9 lines with TIME V UTILIZATION CPU UTILIZATION MEMORY AVG QLEN MEMORY MAX QLEN MEMORY AVG QLEN CPU MAX QLEN CPU NO PROCESSED AVG JOB TIME thus AFTER AM SOR HOURS THE CPU UTILIZATION WAS THE MEMORY UTILIZATION WAS ole k k k k ole 4 4 THE AVG QUEUE FOR MEMORY WAS ee JOBS THE MAX QUEUE FOR MEMORY WAS JOBS THE AVG QUEUE FOR A CPU WAS JOBS THE MAX QUEUE FOR A CPU WAS JOBS THE TOTAL NUMBER OF JOBS COMPLETED WAS pee WITH AN AVERAGE PROCESSING TIME OF Pia Aer ae MINUTES rE stop end 50 CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE METHOD COMPUTER CENTER COMPUTER RESOURCE UTILIZATION ed_ex7 sim 113 114 115 116 117 118 method COMPUTER RESOURCE UTILIZATION return with 100 AVG USED TOTAL UNITS end CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE PROCESS COMPUTER CENTER JOB ed_ex7 sim 19 20 process JOB scheduled externally 21 22 define JOB PRIORITY MEMORY REQUIREMENT as integer variables 23 define PROCESSING TIME as a real variable 24 25 read JOB PRIORITY MEMORY REQUIREMENT PROCESSING TIME 26 call COMPUTER
46. OB JOB JOB JOB a e A AF THE THE THE THE THE THE THE WIT 1 00 3 1 5 00 2 46 12 7 00 3 78 3 3 1 0 00 92 28 2 25 30 00 10 48 1 4 40 00 24 22 1 5 60 00 xe C O M PU TER C E N T ER TE D E NO OF CPU S t STORAGE AVAILABLE 6 SMALL JOBS ARRIVE AT THE RATE OF 30 HOUR AND HAVE A MEAN PROCESSING TIME OF 800 MINUTES LARGE JOBS ARE SUPPLIED AS EXTERNAL DATA THE SIMULATION PERIOD IS 12 00 HOURS TER 12 00 HOURS CPU UTILIZATION WAS 47 74 MEMORY UTILIZATION WAS I2 g AVG QUEUE FOR MEMORY WAS 1 16 JOBS MAX QUEUE FOR MEMORY WAS 19 00 JOBS AVG QUEUE FOR A CPU WAS 15 JOBS MAX QUEUE FOR A CPU WAS 2 00 JOBS TOTAL NUMBER OF JOBS COMPLETED WAS 364 H AN AVERAGE PROCESSING TIME OF S827 MINUTES 52 3 SIMSCRIPT Ill Language Considerations SIMSCRIPT III is supported on 32 bit Windows Linux and Sun Solaris platforms It also runs on 64 bit PC Linux platforms Very few features of SIMSCRIPT II programming language are platform specific An example is data length difference on 32 bit and 64 bit platforms Also interfacing with the non simscript routines and functions C C Java and FORTRAN can be platform specific and special attention has to be paid to data type mapping 3 1 Datatypes Modes Modes on 32 bit platforms Alpha Integer2 Signed integer2 Integer Real Double Pointer Subprogram Text An 8 bit unsigned integer used to store an ASCII character A 16 bit unsigned integer
47. P R This is useful for debugging complicated data structures that require special user code to display relevant information You can use normal write statements to output your data Note that the output from this snap routine will NOT appear in the log file see LOG but in the normal program s output Thus when output is redirected the snap routine will write into your output file SRCDIRS src_dir_list Allow you to specify alternate directories where SimDebug can find the SIMSCRIPT source files for LS W etc sre_dir_list is a list of directories separated by spaces When no src_dir_list is given the current source directory list is shown In searching for source files SimDebug always starts at the current directory If the source file is not found there SimDebug looks into the directories in the order they were given in the sre_dir_list When your executable runs in a directory other than where it was built it is advisable to specify the source directories as absolute paths Example SRCDIRS src d1 srce d2 src d3 77 Simscript III User s Manual STOPTIME stoptime Stop at Simulation Time Allows you to stop execution and call SimDebug when the simulation time reaches the given stoptime A stoptime of 0 0 means that there is no stoptime active The stoptime is only valid for one stop It is then reset to zero set inactive again SV varname value Set Value Allows you to the change values in
48. SIMSCRIPT II 5 features SIMSCRIPT III is a superset of SIMSCRIPT II 5 Using language features of SIMSCRIPT II 5 that have been deprecated is allowed These features will continue to function normally and be supported but a warning message will be printed by the compiler whenever a deprecated feature is compiled Below each deprecated feature is described followed by examples of code using the feature and asuggested modification to the code Modification of the code is recommended but if not possible deprecation warnings can be suppressed by compiling using compiler switch w1245 All deprecated warnings errors can also be suppressed using compatibility switch e The deprecation warnings will NOT appear when compiling with the SIMSCRIPT II 5 compatibility switch e When this switch is used statements will exhibit the behavior described in SIMSCRIPT II 5 Language and Reference Manuals RELEASABLE routines Defining a routine as releasable has no effect The releasable keyword can be safely removed Old code define RTN as a releasable routine New code define RIN as a routine DUMMY variables A dummy variable can be used like a traditional variable but no storage is allocated to the variable Such variables must be monitored on the left and or right sides to be usable The same functionality can be achieved by defining the name as a function instead of a variable Old code every TE has a X
49. SIMSCRIPT III User s Manual CACI Products Company Simscript III User s Manual Copyright 2007 CACI Products Company All rights reserved No part of this publication may be reproduced by any means without written permission from CACI If there are questions regarding the use or availability of this product please contact CACI at any of the following addresses For product Information contact CACI Products Company CACTI Worldwide Headquarters 1455 Frazee Road suite 700 1100 North Glebe Road San Diego California 92108 Arlington Virginia 22201 Telephone 619 881 5806 Telephone 703 841 7800 www caciasl com www caci com For technical support contact Manager of Technical Support CACI Products Company 1455 Frazee Road 700 San Diego CA 92108 simscript caci com The information in this publication is believed to be accurate in all respects However CACI cannot assume the responsibility for any consequences resulting from the use thereof The information contained herein is subject to change Revisions to this publication or new editions of it may be issued to incorporate such change SIMSCRIPT II and SIMSCRIPT II 5 are a registered trademarks and service mark of CACI Products Company ii TABLE OF CONTENTS PREEBA CH wo csccskcscseccesccaduasesescecssscocecbeussaccsscncevaeensace susececsetcesseavacessuawssessesusscastaseseduseceesastasoecsssscascocsevexsscteseuse A INTRODUCTION acccsssiscsccssnsicetsessco
50. SS NOTICE as a pointer variable 32 define QUEUE as a set ranked by high PRIORITY 34 end 36 end af 38 methods for the RESOURCE class CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE 2 LEFT METHOD RESOURCE RESOURCE ACQUIRED UNITS resource sim 39 40 left method ACQUIRED UNITS 41 42 define ACQ as an integer variable 43 define REQ as a REQUEST reference variable 44 45 enter with ACQ 46 47 while QUEUE is not empty and UNITS F QUEUE lt TOTAL UNITS ACQ 48 do 49 remove first REQ from QUEUE 50 add UNITS REQ to ACQ 51 schedule the PROCESS NOTICE REQ now 52 destroy REQ 53 loop 54 93 move from ACQ 56 57 end CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE 3 METHOD RESOURCE RESOURCE AVAILABLE UNITS resource sim 58 59 method AVAILABLE UNITS 60 61 return with TOTAL UNITS ACQUIRED UNITS 62 63 end 47 Simscript III User s Manual CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE METHOD RESOURCE RESOURCE WAIT FOR resource sim 64 65 method WAIT FOR REQ UNITS REQ PRIORITY 66 67 define REQ as a REQUEST reference variable 68 69 create REQ 70 UNITS REQ REQ UNITS 71 PRIORITY REQ REQ PRIORITY 72 PROCESS NOTICE REQ PROCESS V 73 file REQ in QUEUE 74 suspend T3 76 end CACI Windows 2000 XP SIMSCRIPT III alpha 05709 2007 12 43 23 PAGE METHOD RESOURCE RESOURCE CLEAN UP resource sim 17 78 method CLEAN UP T9 80 define REQ as a REQUEST refere
51. Set Display Now the set is created and we are ready to look at the set and the entities The set LISTSETwas declared in the PREAMBLE as owned by the system This is why the fields for the setF LISTSET L LISTSET and N LISTSET are global variables We first display theglobal variables to see the variable F LISTSET which holds the pointer to the first element in the set Once we are in the set we follow the pointers using fp follow pointer debugger command along S LISTSET successor to get to the next elements Observe that the attribute ATTRI is 1 2 3 and that the ATTRP points to the different arrays as assigned in the loop SimDebug gt glob 1 DSPLY E null Pointer 2 F LISTSET 0005C368 Ptr gt class LISTELEM GLOBALD 0 Double GLOBALI 0 Integer 00000000 3 LISTELEM null Pointer 4 L LISTSET 0005C3E8 Ptr gt class LISTELEM N LISTSET 5 Integer2 00000005 SimDebug gt fp 2 Entity 2 0005C368 class LISTELEM ATTRI Integer 00000001 ATTRA 00 hex Alpha 1 ATTRP 0005C2C8 Ptr gt Array 5 of Integer 2 S LISTSET 0005C388 Ptr gt class LISTELEM 3 P LISTSET null Pointer M LISTSET 1 Integer2 00000001 SimDebug gt fp 2 SSS Entity 2 0005C388 class LISTELEM ATTRI 2 Integer 00000002 ATTRA 00 hex Alpha 1 ATTRP 0005C2E8 Ptr gt Array 5 of Integer 2 S LISTSET 0005C3A8 Ptr g
52. Undefined name The name is not defined in the current module or any imported module 1195 Set must be declared by a belongs phrase of this module The name given for a set is not defined in the current module or any imported module This error can occur if necessary set name qualification is omitted 1196 Set must be declared by a belongs phrase of this class An attempt was made to define a something as a set that has not been declared as a set through the BELONGS phrase 1197 Name cannot be used to rank entities or break ties Ranking attributes must be attributes of the same entity or object that the set belongs to 1198 Process method expected A name was used in a context where a process method was expected 1199 A function cannot have yielded arguments Only subroutines and subroutine methods can have yielded arguments 1200 Constant used as a subscript It is not allowed to use a constant in any context where a pointer is required 1201 Invalid method If inside a BEGIN CLASS block the name used after the word CALL in a before after statement must be the name of a method 1202 Process method not declared in enclosing class A process method name is expected for before after scheduling canceling statement appearing inside a BEGIN CLASS block 1203 Method not declared in enclosing class An attempt was made to define an undeclared name as a method 1204 Unknown event An event heading was found that was not declared in the preamble unde
53. _manufacturing_i sim sf job sim eM job_i sim D resource sim M resource_i sim MD station sim 0 station_i sim M transporter sim aa B5 transporter_i sim temp Figure 1 6 Project tree with SIMSCRIPT III source code with subsystems 12 1 3 4 Adding Graphical Elements to a Project Graphical elements for your model are located in the graphics sg2 in directory executable An empty graphics sg2 container will be created with every new project Right mouse click on graphics sg2 in the project window This brings up a pop up menu with the following options new import and save If you click on new a dialog box will be presented allowing you to name the new graphical element and to chose its type Icon Dialog Box Simple message box Menu bar Palette 2D chart Pie chart Analog clock Digital clock Dial Level Meter Digital display and Text display 1 Create new icon graph or form x Name Juntitiect icn Type r Create Cancel After you define a type and click Create a new graphical element icon will appear in the graphics sg2 project window This opens the graphics window in the Editor window along with the toolbar for the corresponding Graphical editor 13 Simscript III User s Manual Hi SIMSCRIPT III Simulation Studio resource File Edit Project Options Window Help las oft imlofesae eaea oo E E executable Icon untitled1 icn o Gi graphics sq2 l H sources H E te
54. a double result For example abs f 5 returns 5 and abs f 12 3 returns 12 3 and f integer_arg1 integer_arg2 An integer function that returns the value obtained by performing a bitwise AND of integer_arg1 and integer_arg2 For example and f 23 51 returns 19 because the bitwise AND of binary 010111 23 and binary 110011 51 is binary 010011 19 arccos f double_arg A double function that returns the arc cosine of double_arg in radians The argument must be in the range 1 to 1 The return value is in the range zero to z arcsin f double_arg A double function that returns the arc sine of double_arg in radians The argument must be in the range 1 to 1 The return value is in the range z to pi arctan f double_argY double_argX A double function that returns the arc tangent of double_argY double_argX in radians Either argument may be zero but not both If double_argY is positive the return value is in the range zero to z If double_argY is negative the return value is in the range 7z to zero If double_argY is zero and double_argX is positive the return value is zero If double_argY is zero and double_argX is negative the return value is 7 cos f double_arg A double function that returns the cosine of double_arg The argument is specified in radians The return value is in the range 1 to 1 114 dim f array_arg An integer function that returns the
55. able Local Saved Variable or Global Variable Then each line follows basically the same format ptrnum varname value mode information where the fields contain ptrnum varname value mode info For pointers The n entries for the FP follow pointer command The variable name The value Text is shown to the extent that it fits in the space where internal string quotes are not doubled i e a string containing a single string quote is printed as Integers and alpha characters are printed as usual where nonprintable alpha values are also printed in hex For reals and doubles you can define the output format with SET OREALF see SET command Pointers and subprogram variables are shown in hex Mode information For integers the value in in hex is appended For pointers pointer destination information e g entity class array type is shown Bad pointer means that this is an illegal address i e an address that would cause a segment violation if it were used For subprogram variables the subprogram name is shown Use SET EXTINFO 0 when you do not want this extended information for pointers Array mode info Normally arrays mode information is shown as the array was declared in the program e g 2 dim integer array With the SET parameter SHOWARRAYPTRS you can choose to see the internal structure of the arrays instead That is you can see the pointer structure arrays of pointers that makes
56. about the details of arguments to MixedCaseRoutine In SIMSCRIPT III each mode of each argument to a nonsimscript routine can be specified explicitly in the preamble The appropriate conversions of arguments are then performed by the calling function Preamble Define MixedCaseRoutine as a nonsimscript routine given 1 real argument End Main generated C code S_VOID MixedCaseRoutine S_R after seeing this prototype for MixedCaseRoutine C will perform the correct conversion to real Call MixedCaseRoutine 5 End The prototype of input arguments is optional though recommended The prototype of output arguments is a must to avoid error reported by the compiler 149 Simscript III User s Manual 3 The yielding clause can be used in conjunction with the argument prototyping A nonsimscript routine can be defined as yielding one or more arguments This allows arguments to be passed to the nonsimscript routine by reference For example suppose that MixedCaseRoutine was prototyped in the C code as follows void MixedCaseRoutine double dp It should then be defined in the Preamble as Preamble Define MixedCaseRoutine as a nonsimscript routine yielding 1 double argument End The nonsimscript routine can be called like a prototyped SIMSCRIPT routine Modes of variables used by the caller do not have to match exactly modes used by the callee In the following code an i
57. ach missing routine will be displayed If there are no undefined references an executable file named a out will be produced Suppose a program consists of only three routines main sim sub1 sim and sub2 sim Then the object files generated by the compiler are main o sub1 0 and sub2 0 The following command will link this program simid main o sub1 0 sub2 0 The following is a convenient way to link a program consisting of many object files within a single directory simld o Note that it is necessary to link all of the object files generated by the compiler Even if just a 36 single routine has been modified and re compiled it is necessary to re link the entire set of object files simid is a shell script which invokes the UNIX C compiler cc to link object files Any option which may be specified to cc may also be specified to simld The most useful of these is the o option It is used to name the executable file something other than a out For example to create an executable file named compute enter simld o compute o simgld is another shell script which invokes cc It must be used instead of simld to link SIMGRAPHICS programs For example to link a SIMGRAPHICS program and name the executable file animate enter simgld o animate o It is possible to create a library of SIMSCRIPT III routines using the UNIX archive utility ar To create a library named xyz from the object files in a directory enter the
58. ain its implementation i e private preamble and methods and routines By the same token sub2 sim and sub2_i sim sub3 sim and sub3_i sim should be created This naming convention and file organization will provide compilation of all simscript modules with the simple command like simc c sim If the main module and sybsystems span multiple files compiler has to be informed which files belong to the main module and which belong to a particular subsystem Compiler switch um tells the compiler that the list of files that follow belong to the main module and switch us is followed by the list of files which comprise the subsystem simc c um pre sim main sim rout sim us pubpre sim privpre sim math sim Importing If the program imports some external modules subsystems like exsub1 exsub2 which reside in the directories dirl and dir2 respectively then directories where the public preambles of the imported modules reside have to be given to the compiler in the command like simc c l dir1 lI dir2 sim and object files exsub1_i obj and exsub2_i obj or library which contain implementation od the private sybsystems should be included during the linking of the model 2 3 Recompiling Main module If the model contains only a main module whenever a change is made to the PREAMBLE it is necessary to re compile the entire program If a changes are made only to routines of the program only the modified routines need be re compiled no
59. al variables at the end of each traceback implicit GLOB command Output For each routine SimDebug first prints a line with the routine name the file name possibly the stack level and the current line number When a routine is compiled with debug all its local variables are shown with its values and modes When a routine is not compiled with debug only the routine name is shown The variables are given in a sequence of sections Given Arguments ordered as in routine definition Yielding Arguments ordered as in routine definition Local Variables ordered alphabetically and Local Saved Variables also ordered alphabetically Several SimDebug controls the extent of the output for each variable parameter See the SET command The format of the output for each variable is described by the PV command 78 TC TOP UP n W n The current frame and current routine The T command shows you the whole traceback i e all routines in the call stack Each invocation of a routine that is on the stack is called a stack frame Initially after a T command the top routine on the stack farthest away from MAIN is called the current routine which is in the current frame Since a routine can be called recursively we must destinguish between routine the source code and the frame invocation of the routine its arguments and local variables When PV looks up a variable it starts at the current frame and when the variable is
60. ated by removing the aliases in the preamble and changing the implementation code to refer to only one name If there are too many references to the alias name in the implementation code a substitution can be used in the preamble to redefine each alias to be the original variable Old code every DOG HOUSE has a DOG CANINE POOCH let CANINE DOG HOUSE MY DOG same as LET DOG DOG HOUSE let POOCH DOG HOUSE MY DOG same as LET DOG DOG HOUSE New code every DOG HOUSE has a DOG define POOCH to mean DOG define CANINE to mean DOG Word and array assignment of attributes SIMSCRIPT allows the programmer to control the memory assignment of both entity and system attributes using the IN WORD clause where the attribute is declared The IN WORD clause can be safely eliminated unless there is a compatibility issue with another language that somehow depends on the specific in memory layout of SIMSCRIPT entities Old code every SHIP has a WEIGHT in word 1 a LENGTH in word 2 New code every SHIP has a WEIGHT a LENGTH The FIN statement The FIN statement is a synonym for ALWAYS or ENDIF and can be replaced by either Old code 142 if X lt gt 0 list X fin New code if X lt gt 0 list X always Using the FIND statement with embedded assignments The FIND statement permits embedded assignment statements that are executed the first time the condition given in the statement is true The same
61. cannot be used to explicitly assign storage locations for object attributes 1186 Data size mismatch for equivalent object attributes Equivalent object attributes must have the modes that are the same size in bytes For example a DOUBLE variable cannot be equivalanced to an INTEGER 1187 The name of a class is required in this context The compiler expected the name of a class declared in either the current module or an imported module 1188 Method must be overridden When using multiple inheritance two or more parent classes may derive from the same class If any parent class has overridden a method defined in this common base class then the name of this method has now become ambiguous from the standpoint of the multiply derived class This method must be overridden 1189 Unknown module The name of an unknown module was used in a qualification 1190 Qualifier is not a class A class qualifier must the name of a known class 1191 Name not defined or inherited by class The name of an object attribute object method or class set was expected The name must be defined or inherited by the class reference in the nearby subscript or the current class 1192 Invalid use of set The name of a set was used in a context where it was unexpected Or a set was expected in a certain context and not found 97 Simscript III User s Manual 1193 Invalid reference The name of a class or temporary entity was expected as a reference type 1194
62. cesesesesecesesesesessssssssssussssssauseauaeaea 103 APPENDIX C STANDARD SIMSCRIPT TIT NAMES oeesssesssssecssocecssececssecssoceessoceessocessseessocseessose 111 C 1 MODE CONV 5 S59 C6 Fee ee eee 112 C 2 NUMERIC OPERATIONS EEEE EEE oe G8 xe OuRT gk St aS reagan Ha i Bg ata ag 114 C3 TEXT OPERATIONS a rar aa E cac ces oad RS E Menta aia Dig tia Bigatti gaia ERR 119 C 4 INPUT OUTPUT EERE A EEE EEE ane Tg ata E tua Rigi igh 121 C 5 RANDOM NUMBER GENERATION cccccccccccscscsesesesesesesesesesesesesesesesesesesesssesesesesesesssssssessessenseens 125 C 6 SIMULATION socsscabveiss ea sever cateed ssa oxo ea Ses sea ee eee ES A ae 129 C 7 MISCELLANEOUS cieceseeccccoecs ccocsecd cc feck ced oes ccs ces coud toed ccd A tres cas oda e bcs gi deieas ERR 133 APPENDIX D LATIN 1 CHARACTER SET secsssssssssscissecsensssvsvonsecnscessevensosseseasessescadevsessosestasesbeuse 135 APPENDIX E DEPRECATED SIMSCRIPT II 5 FEATURES sscccssssscsssssccssssccsssscccsssees 137 APPENDIX F NON SIMSCRIPT ROUTINES CAN BE CASE SENSITIVE ccsssssceseeee 149 APPENDIX G CONTINUOUS SIMULATION ccssssscsssssccssssccccssscccssssccccssseccecssscssssssccsessssees 151 iv FIGURES FIGURE 1 1 PROJECT OPENED IN SIMSTUDIO WITH SOURCE AND GRAPHICS WINDOWG 5 FIGURE 1 2 PROJECT TREE issies sie cecesseacsesyenavedestessbesbonevaceseedeestesvesudeeiasgiussgasesanttaageed aha iiA 7 FIGURE 1 3 CREATING A NEW SOURCE FILE ccessessssecesececesses
63. cilities 21 Simscript III User s Manual simbebugilawi06 Oe SimDebug gt ls main a TESS ny a Cas e Se eC SSS SS o l1 MAIN use l1 for input 2 k r write as Test LAWLO6 Port Operations model 2 4 CALL READ DATA S G 6 FOR REP NUMBER 1 TO NUM REPLICATIONS DO 5 8 CALL INITIALIZE 5 9 START SIMULATION z 10 LOOP z II write as End of Test LAW1l0O6 7 12 z 13 END MAIN SimDebug gt w SSS pila GPG I DEET Se SSS eS gt 1 MAIN use l1 for input N 3 write as Test LAW1LO6 Port Operations model z 4 CALL READ DATA 5 A 6 FOR REP NUMBER 1 TO NUM REPLICATIONS SimDebug gt gt Command Step In Next Continue Help E Figure 1 12 Simscript Symbolic Debugger window 1 7 Closing the Project Close an open project before opening another project To close a project use menu option Project gt Close 22 1 8 Setting Simstudio Preferences If you work on a project and close Simstudio without closing the project it will not remember the last project you worked on If you want Simstudio to open and reload the last project you worked on when launched again you can change its behavior Chose menu option Options gt Preferences and set your preferences in the dialog box preferences x OK V Reload files when opening project Cancel Marking check box Reload files when opening project allows the user to request Simstudio to open files from the prev
64. compiles a program consisting of main module with three source files abc sim def sim and ghi sim Warning messages will be suppressed w option and runtime checking code will be generated C option simc w C abc sim def sim ghi sim The compiler expects to find the preamble of the main module at the beginning of the first file specified Thus if the program in the above examples contains a preamble it must be located at the beginning of file abc sim or compilation errors will result The following is a convenient way to compile a program consisting of many source files within a single directory 34 simc sim In this example sim is automatically expanded into a list of source files sorted by name If the model consists only of the main module the compiler expects to find the PREAMBLE in the first file it encounters it is necessary that the file containing the PREAMBLE be given a name which precedes all others in sorted order Since on UNIX platforms upper case names precede lower case names one convention which may be followed is to store the PREAMBLE in a file named PREAMBLE sim and to name the rest of the files using all lower case characters If the program consists of main module mname and a set of subsystems subl sub2 sub3 preamble for the main module should be placed in mname sim and methods and routines in mname_i sim subl sim should contain the public preamble of the subsystem subl and subl_i sim should cont
65. contain the address of a temporary entity 2054 wrong temporary entity class The pointer used to identify a temporary entity contains the address of a temporary entity which belongs to an entity class different from the one that was expected 2058 reference to unreserved array The pointer used to identify an array is equal to zero 2060 zero or negative subscript specification in reserve statement The number of array elements specified in a reserve statement is less than 1 2061 dim f for array is gt 65535 The number of array elements specified in a reserve statement is greater than 65535 2062 attempt to create invalid entity class The entity class is not recognized when attempting to create an entity which is usually caused by failing to link the compiler generated routine setup r 2066 invalid array pointer The pointer used to identify an array does not contain the address of an array 2067 reference to a released array This error also appears for references to attributes of a permanent entity that has been destroyed The error is detected by the runtime checking option The comments that apply to destroyed entities apply here as well 2068 end of file encountered during read operation while eof v 0 2069 fatal I O error during read See the UNIX error message on the line following this message for more information 2070 fatal I O error during write See the UNIX error message on the line following this message for more informat
66. cs User s Manual A detailed description of the presentation graphics and animation environment for SIMSCRIPT II 5 e SIMSCRIPT II 5 Data Base Connectivity SDBC User s Manual A description of the SIMSCRIPT II 5 API for Data Base connectivity using ODBC e SIMSCRIPT II 5 Operating System Interface A description of the SIMSCRIPT II 5 APIs for Operating System Services e Introduction to Combined Discrete Continuous Simulation using SIMSCRIPT II 5 A description of SIMSCRIPT II 5 unique capability to model combined discrete continuous simulations Simscript III User s Manual e SIMSCRIPT II 5 Programming Language A description of the programming techniques used in SIMSCRIPT ILS e SIMSCRIPT II 5 Reference Handbook A complete description of the SIMSCRIPT II 5 programming language without graphics constructs e Introduction to Simulation using SIMSCRIPT II 5 A book An introduction to simulation with several simple SIMSCRIPT II 5 examples e Building Simulation Models with SIMSCRIPT II 5 A book An introduction to building simulation models with SIMSCRIPT II 5 with examples The SIMSCRIPT language and its implementations are proprietary program products of the CACI Products Company Distribution maintenance and documentation of the SIMSCRIPT language and compilers are available exclusively from CACI Free Trial Offer SIMSCRIPT III is available on a free trial basis We provide everything needed for a c
67. current frame is shown Source Listing Format Each output line consists of four fields l A for executable source lines you can set breakpoints there or a when a breakpoint is set on that line 2 gt when this is the current line of execution 3 The source line number of the line in the source file and 4 The first 72 characters of the source line itself Note Only the first 72 characters of a source line are printed so that all output fits on one line Memory Information Shows memory statistics such as how many entities of each type are currently created and how many strings and arrays there are Note Since string and array counters are for both SIMSCRIPT internal use and for user data the numbers do not directly reflect your program s memory usage Also since SimDebug uses strings the numbers will be higher when compiling with debug A good way to find out if your program has a memory leak is to write down the number of strings arrays etc at the beginning of the program and then let it run for awhile Interrupt the program with Ctrl C and look again Next Execute the next n default 1 SIMSCRIPT source lines and then return to the SimDebug dialog N steps over a routine call This routine and all routines called from this command execute until you are returned to the SimDebug dialog Unless of course there is a breakpoint set somewhere in the called routines Also see comment on Specifying Repeat
68. d Single Stepping We are now going to a different program that will illustrate the use of breakpoints single stepping and SimDebug s advanced pointer handling features This program creates a few entities and arrays We call our program with debug so that we are immediately put into the SimDebug dialog With the Ir command we get a list of the routines in the program that were compiled with debugging and their line number range You can use wildcards at the beginning and end of a routine name argument in Ir in the same way as with variable names Note how R2 a left routine gets displayed In these routines we can single step set breakpoints etc With IS we can look at the source of the routine main 62 A in front of a source line means that this line is executable and that you can set a breakpoint there OS prompts tst debug SimDebug SIMSCRIPT Symbolic Debugger Version 1 0 SimDebug gt Ir lists all routines compiled with debug or trace MAIN sample sim 44 64 R1 sample sim 29 41 R2 L rtns sim 1 32 SimDebug gt Ir fists all routines that begin with an R R1 sample sim 29 41 R2 L rtns sim 1 32 SimDebug gt Is mf lists the only routine that begins an M MAIN main sim 44 64 44 main 45 define LE as pointer variable 46 define IARR as 1 dim integer array 47 define AARR as 1 dim alpha array 48 define IARR2 as 2 dim integer array 49 define I as integer variable
69. d character string pass a text value Fir more information on interfacing with non simscript routines please see APPENDIX F 3 2 2 Calling FORTRAN Routines Suppose we wish to call a subroutine named SUB which is written in FORTRAN and has two arguments subroutine SUB inarg outarg integer inarg integer outarg The first argument is an input to the subroutine and the second argument is an output The subroutine must be declared in the preamble define SUB as a fortran routine Unlike SIMSCRIPT III and C FORTRAN passes arguments by reference i e the address of the argument is passed rather than its value The compiler for all routines declared as FORTRAN routines does this automatically write as Enter the input value read IN ARG call SUB IN ARG OUT ARG write OUT ARG as The output value is I 10 Suppose we wish to call a function named FUNC which is written in FORTRAN and has one argument integer function func inarg double precision inarg The declaration of the function in the preamble specifies the mode of the function 55 Simscript III User s Manual define FUNC as an integer fortran function Here is an example of a call to this function write as Enter the input value read IN ARG let RESULT FUNC IN ARG write RESULT as The function result is I 10 It is very important that the SIMSCRIPT III mode of each argument and function matches its FORTRAN type Here is a list o
70. d in some cases in SIMSCRIPT III 1249 Attempt to create a process method Unlike process routines the notice for process methods cannot be instantiated using a CREATE statement The process notice must be created using a ACTIVATE SCHEDULE CAUSE statement 1250 Assignment to a statistical variable Statistical holder variables such as those declared in a tally or accumulate statement are for reading only and cannot be assigned 1251 Attempt to divide by zero A zero or a constant with the defined value of zero cannot be placed in the denominator of a fractional expression 1252 Prototype mismatch with base class of covariant override Overridden methods that accept object reference types as parameters can be redefined within the same class as the override This definition must match up with the base class definition in accordance with the rules for covariant methods 1253 Low value of range is greater than high value When a range of values is specified in a CASE statement the second constant must be greater than or equal to the first 1254 This automatic variable should not be reserved released The automatically declared derivative of a continuous array is reserved automatically at the time the continuous variable is reserved This array should not be reserved by the application code 1255 This method does not match original declaration The heading of the implementation of a method originally declared as a process method must have c
71. d to that invocation of simc The options are g for traceback and d for full debug To be able to look at entities system variables and global variables you must compile the 57 Simscript III User s Manual PREAMBLE with debugging or traceback i e with the d or g option You should not mix the debug and optimization flags in the sime call That is do not specify d and O at the same time since this can lead to erroneous output from SimDebug 4 1 2 Invoking SimDebug To invoke SimDebug simply invoke your program with the command line option debug This option will only be recognized by SimDebug and will not be visible to your SIMSCRIPT III program as a command line argument The position of the debug option on the command line is irrelevant SimDebug Dialog When you invoke your program with debug you will be put into the SimDebug dialog Here you can examine the source set breakpoints and start your program When you do not specify the debug option your program will run as usual without any interference from SimDebug At the beginning of the SimDebug dialog whether you invoked it with debug or entered the dialog through a runtime error SimDebug looks for a file simdebug ini in the current directory If this file exists it is loaded as a SimDebug command file see READCMDS This way you can easily customize the setup and initialization of SimDebug SimDebug will always show a SimDebug gt prompt when it is ready f
72. define X as an integer dummy variable monitored on the left and right New code every TE has a X function 137 Simscript III User s Manual define X as an integer function routine X TE PTR end left routine X TE PTR end Using the ERASE statement for a text variable 6699 The erase statement is sometimes used to clear a text variable Assigning the empty string to a text variable has the same effect Old code erase T New code let T Graphic input and output units Using a unit for graphic input and output is a relic of 16 bit Windows SIMSCRIPT and has no effect in modern SIMSCRIPT II 5 For compatibility the syntax remains in the language These statements can be removed Old code use unit 8 for graphic output use unit 7 for graphic input New code lt remove the statements gt Event routines Event routines can be scheduled for future activation like process routines but cannot elapse time i e cannot include the wait or work statement It is not a requirement that process routines elapse time so event routines can be re declared as process routines Old code preamble events every SALE has a PRODUCT TYPE a PRICE and a QUANTITY 138 end egant SALE and New code preamble processes every SALE has a PRODUCT TYPE a PRICE and a QUANTITY end process SALE end External events External events can be replaced with external processes Old code external
73. ding a Directory or a File Using Project Window To add a new directory to the directory sources right mouse click on the directory sources It will bring a pop up menu with options add files new folder and delete Chose new folder New folder Enter the new folder name in the dialog box and click OK The new folder will be created on the disk and will appear in the project tree SIMSCRIPT III Simulation Studio resource H E executable G E sources E my_folder ooo bam AD MAIN SIM H E temp Figure 1 4 Creating a new folder in the project tree You can right mouse click on this new folder to delete it from the disk and the project tree Simscript III User s Manual When you chose add files from the pop up menu the browsing dialog box will appear This allows you to add any file to your project The added file will be copied to the selected directory and will appear in the project tree 10 1 3 3 Adding Multiple Directories and Files To add multiple source files that are organized in hierarchical multiple subdirectories copy the whole directory structure with the operating system tools to the project sources directory Use Project gt Update Project Tree to include all directories and files for the project tree m executable sources B E my_folder EF a INPUT M READDATA SIM a OUTPUT M REPORT SIM a PRE lt M Preamble sim E a intialization Mf INITIAL SIM 8B a process
74. e on Simscript III executable Build mode Release f Debug Cancel Help rCompile Release Debug rListing CICH IV Optimize I Suppress warnings Generate listing Runtime checking V Runtime checking I Local Xref Simscript 11 5 compatibility J Global xref Compiler imc cvdC Libraries Preambles rLink with graphics Static Without graphics Dynamic Binary calship3 cals Execute P ro Command line calship3 a v Line 1 Column 1 Figure 1 8 Selecting Project Options 1 5 1 Building a Project for Debugging During the development of your model you may want to build your project for debugging Select Options gt Project to open the Project options dialog box Check build mode Debug This will cause debugging facilities to be incorporated in your model You can also define if you would like compiler warnings to be presented or to be suppressed During the debug phase it is advisable that you request run time checking to be performed this will involve entity and object attribute access checking and array index checking and will generate run time error in case of incorrect access These features will speed up the testing phase 17 Simscript III User s Manual i Project options rm III executable v e ae EN E e Mv m a Libraries a m E O Imports e z s e Figure 1 9 Sel
75. e current frame in the traceback called hierarchy If we want to see where we are in the routine that called this R1 we must move the current frame one level down Top of stack is the last routine called Bottom of stack is MAIN The dn command moves the current frame one level down and SimDebug shows us the current line on that level Then we use te to get a traceback of only the current routine frame which is now R1 at stack level 2 Note that in this frame A 1 With pv we can ask for only one variable When it is in the current routine that value is printed Otherwise SimDebug looks at the global variables Before actually printing the line with the variable name value and type pv first prints whether the found variable is a given or yielded argument and whether it is a local local saved or a global variable SimDebug gt dn R1 sample sim Line 36 36 gt call R1 A 1 B SimDebug gt tc R1 sample sim Line 36 Given Arguments A 1 Integer 00000001 B 2 Integer 00000002 Local Variables I 5 Integer 00000005 J 1 Integer 00000001 SimDebug gt pvA Given Argument A 1 Integer 00000001 In large programs variable names as well as routine names are generally quite long To avoid having to type in the whole variable name you can enter just the first few letters SimDebug matches your input with the defined variables When your input uniquely identifies a c
76. e listing For example enter the following command to re compile file1 sim into an object file which will be called file1 0 The name of the file which contains the PREAMBLE Preamble sim must always be given because it contains definitions for SIMSCRIPT data structures The c option prevents linking simc cv Preamble sim file1 sim Enter the following command to create an executable called a out the default name from the object files in this directory after re compiling rout1 sim simc v Preamble sim rout1 sim o It can also be used for recompilation of implementation part of the subsystem when public preamble has not been changed The compiler will suppress warning messages i e no warning messages will be displayed The compiler will suppress warning messages i e no warning messages will be displayed for errors number n and m The compiler will write to the listing a local cross reference A local cross reference shows the line number of every reference made to each name in the module The compiler will append to the listing a global cross reference for the entire program A global cross reference shows the name of every routine or method which references each globally defined name The compiler will not generate code It is sometimes desirable to quickly check the syntax of a program and or produce a listing without generating any object files Note this is a one not an ell The following command
77. ecting debugging options in Simstudio To run your model with the debugger use Project gt Debug This will allow you to execute the model step by step and to observe model variables A model built for debugging can also be executed with Project gt Execute Project will run normally but in case of run time error control will be transferred to the debugger and you will have full debugging capabilities 18 1 5 2 Building a Project for Release When you finish debugging and your model is ready for the exploitation phase you may want to choose to build your model in Release mode Use Options gt Project to bring up the Project options dialog box and check Build mode Release This time choose Optimization to reduce model size and increase speed If you are sure that your model is fully debugged you may exclude run time checking This will further increase execution speed fi Project options e O Q E xi EE eN E onl Fmcrenny m E Libraries E m E O Imports E Preambles L Figure 1 10 Selecting Release options in Simstudio A model built in Release mode should be run with Project gt Execute 19 Simscript III User s Manual 1 5 3 Compiler Listings Checking the appropriate Listing boxes in Project Options will tell the SIMSCRIPT III compiler to generate various compiler listings a compiler listing with or without local cross reference or compiler listing with Global Cross Refe
78. en to the dialog log however When you press Return to repeat the last command the full command name will still be written to the command dialog log LR rntname prefix suffix ALLINODEBUG List Routines Lists the names of the routines in your program in the following order PREAMBLE MAIN and then all others in alphabetical order LR List all user routines compiled with debug or trace LR ALL List all user routines nodebug routines prefixed with N routines compiled with g are prefixed with T LRTRACE List all routines compiled with traceback g LR NODEBUG List all user routines that were not compiled with debug LR prefix List user routines that begin with prefix is optional LR prefix L Append L after the to see only left routines LR suffix List routines that end with a suffix e g LR CTRL Note Continuous variables will display as right and left routines When you have a routine with the name ALL TRACE or NODEBUG you must use ALL TRACE or NODEBUG to get the routine individually 71 Simscript III User s Manual LS rtnname from to MEM N n List Source Lists the source lines of the given routine The default is to show the whole routine Line numbers for from and to are given relative to the file not relative to the routine beginning or the like When the program is active the rtnname can be omitted in which case the current routine the source of the
79. ent reference and every attribute reference Also in the event of a runtime error a more elaborate traceback will be provided This option allows SIMSCRIPT III to detect a larger class of runtime errors and should be used when compiling a program that is not fully debugged Both the traceback and runtime error checking will make your programs run somewhat slower Note that runtime checking is not enabled by default Provide runtime checking for array element reference only without entity class checking and object type checking Note this is C zero not C oh Selects compiling for debug The compiler is fully integrated with the SIMSCRIPT II 5 symbolic debugger After linking the program can be activated with the command line switch debug to provide interactive dialog with the debugger The SIMSCRIPT II 5 symbolic debugger allows you to study and change the behavior of a model at runtime Debugging features include the following e Setting a break point in a method or a routine or in an active SIMSCRIPT process instance or process method e Single stepping one source line at a time e Viewing source code e Displaying of local global variables object attributes temporary entities in various formats and their modifications e Displaying the status of the program I O and memory usage statistics etc 31 Simscript III User s Manual F g To use all the debugger functions a SIMSCRIPT II 5 program must be com
80. entities every SOURCE has a LINK LIST every DESTINATION has a NAME every SOURCE DESTINATION has a DISTANCE function define DISTANCE as a double function New code temporary entities every SOURCE has a LINK LIST every DESTINATION has a NAME define DISTANCE as a double function given 1 SOURCE reference argument 1 DESTINATION reference argument Use of a right monitored variable as a subprogram literal Using any right monitored variable as a subprogram literal automatically refers to the right monitoring routine for the variable For the same results the monitoring routine can be replaced with a traditional function with left and right implementations These implementations refer to a separate variable to hold the data Old code preamble define X as a double variable monitored on the right end right routine X end define subv as a double subprogram variable define result as a double variable let subv X let result Ssubv New code preamble define XV as a double variable 144 define X as a double function end right routine X end left routine X enter with XV end define subv as a double subprogram variable define result as a double variable let subv X let result Ssubv The LAST COLUMN statement The LAST COLUMN statement specifies the maximum length of a line of code in the program Lines longer than the specified value are truncated automatically by the compiler Last column statem
81. ents can be safely removed Old code last column is 80 New code lt remove the statement gt Use of the STA A attribute STA A is an attribute of a process notice used to indicate the current condition of the process Using the WAIT statement automatically sets the process status STA A attribute to 0 Using the WORK statement sets STA A 1 The value of STA A has no effect on scheduling An application defined status attribute can be used to replace STA A Old code preamble processes include GENERATOR LATHE end process LATHE wait 5 units work 5 units end process GENERATOR if STA A LATHE lt gt 0 write as Lathe is working else write as Lathe is waiting always 145 Simscript III User s Manual end New code preamble processes include GENERATOR every LATHE has a STATUS end process LATHE let STATUS 0 wait 5 units let STATUS 1 work 5 units end process GENERATOR if STATUS LATHE lt gt 0 write as Lathe is working else write as Lathe is waiting always end The GENERATE INHIBIT LIST ROUTINES statement This statement performs no function and can be removed from the preamble Old code preamble inhibit list routines end New code lt remove the statement gt The REWIND statement The REWIND statement is equivalent to closing the unit number provided in the statement It can be replaced with a CLOSE statement Old code rewind unit 3
82. erminate Each output unit has its own copy of this variable wrecord v An integer variable that contains the number of lines written to the current output unit Each output unit has its own copy of this variable write v An integer variable that contains the unit number of the current output unit Its initial value is 6 because unit 6 standard output is the current output unit when a program begins execution The assignment write v N changes the current output unit and has the same effect as the statement use N for output 124 C 5 Random Number Generation beta f double_arg1 double_arg2 integer_arg A double function that returns a random number in the range zero to one from the beta distribution having shape parameters equal to double_arg and a equal to a double_arg2 and mean u equal to _ where gt 0 and gt 0 Integer_arg must a a specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate binomial f integer_arg1 double_arg integer_arg2 An integer function that returns a random number in the range zero to n from the binomial distribution having parameters n equal to integer_arg1 and p equal to double_arg and mean yw equal to np where n gt 0 and p gt 0 The return value represents a random number of successes in n independent trials where p is the probability of success for each trial Integer_arg2 m
83. ertain variable it will be printed as usual When you enter pv G and there are several variables locals or globals that begin with G you will be offered a list of matches from which you can select by number In the same way you can select from all variables that end with a certain suffix by using pv suffix When we want to use the input as a prefix the is optional pv always looks in the current frame first and then at global variables to find variables with a certain name pattern SimDebug gt pv g Matching GLOBAL variable names 1 GLOBALD 2 GLOBALI 61 Simscript III User s Manual gt Select variable by number 0O none gt 2 Global Variable GLOBALI 0 Integer 00000000 SimDebug gt pvli 1 LISTELEM null Pointer SimDebug gt pv set Matching GLOBAL variable names 1 F LISTSET 2 L LISTSET 3 N LISTSET gt Select variable by number 0 none gt 3 Global Variable N LISTSET 5 Integer2 00000005 In the same way you can restrict the output from the GLOB command with a prefix or a suffix argument The following example ends our first tour SimDebug gt globg GLOBALD GLOBALI SimDebug gt glob set 1 F LISTSET 2 L LISTSET N LISTSET SimDebug gt quit Double Integer 00000000 O 0 0005C368 Ptr gt class LISTELEM 0005C3E8 Ptr gt class LISTELEM 5 Integer2 00000005 Leaving SSDB OS prompts 4 2 2 Tour 2 Breakpoints an
84. es D CLOCK SIM D DTUG SIM HARBOR SIM PD MOVETO SIM tf SHIP SIM bb ff TUG SIM Bb Li MAIN SIM fa temp Figure 1 5 Project tree with hierarchical organization of source code Right mouse click in the project window to bring up the pop up menu with update project tree option This can be used to add a file or hierarchical files to the project If SIMSCRIPT III model is organized as a main module and a set of modules subsystems the following file naming conventions are suggested The public preamble of the main module should be placed in a file name sim where name is name of the main module For example main module of system shipping should be placed in shipping sim file The implementation of the main module i e methods and routines should be placed in a file shipping_i sim 11 Simscript III User s Manual Subsystem module imported by main module should be placed also in two files subsysname sim and subsysname_i sim The file subsysname sim should contain public preamble of the subsystem and subsysname_i sim should contain implementation of the subsystem starting with the private preamble and followed by the methods of the subsystem For example subsystem resource would be placed in resource sim and resource_i sim files All model files have to be placed in project sub directory sources 1 SIMSCRIPT III Simulation Studio introS a executable sources 5 flexible_manufacturing sim A Flexible
85. f FORTRAN types and the corresponding SIMSCRIPT III modes integer 2 signed integer2 integer integer logical integer real real double precision double Calling a FORTRAN routine that returns a real or uses real arguments results in a special case Unlike SIMSCRIPT II and C which interpret real float function results and assignments as 64 bit values FORTRAN uses a 32 bit value To obtain this value within a SIMSCRIPT II 5 program it is necessary to declare the function not as real but as integer and then equivalence an integer and real array to interpret the value as real For example suppose we wish to call a function named RFUNC which is written in FORTRAN and has one argument real function rfunc inarg real inarg Declare the function in the preamble as follows define RFUNC as an integer fortran function To call the function define IRESULT as a 1 dim integer array define RRESULT as a 1 dim real array write as Enter the input value read IN ARG reserve IRESULT as 1 let IRESULT 1 RFUNC IN ARG let RRESULT IRESULT write RRESULT 1 as The function result is D 10 3 56 4 SimDebug Symbolic Debugger SimDebug is the SIMSCRIPT III Symbolic Debugger In contrast to other debuggers that are separate programs this debugger is built into the language Simply compile the modules you want to debug with debugging and then run your program with the command line argument debug This will brin
86. f the listed arguments The notation T from to means that the command T traceback can have one or two optional arguments from and to Command names and keyword arguments are shown in UPPER CASE arguments of commands are shown in lower case e g READCMDS cmdfile Basic Syntax Each SimDebug command consists of the command name followed by one or more arguments each seperated from each other by one or more spaces There are no parentheses and there is no nesting of expressions needed SimDebug commands are not case sensitive Except for file names upper lower case is irrelevant Missing Arguments Whenever possible SimDebug will ask you for a missing argument instead of issuing an error message Repeat Last Command When you press Return no command entered the last command will be repeated This is particularly useful for the S N and FP commands Scrolling Output The output of SimDebug will appear in the terminal window from which you invoked your program If your terminal window does not allow scrolling back you can set a parameter SET SCROLLINES n so that the output will pause after every n lines press Return to continue Routine Names Several SimDebug commands take routine names as arguments You can type the routine name just as you use it in your program e g TACK ORDER QUEUE Upper lower case in routine names is irrelevant Variable Names You may use wildcards i e the when entering variable names or
87. f this variable after a use statement to determine whether an error occurred when opening the file otherwise such an error causes the program to terminate Each input unit has its own copy of this variable rreclen v An integer variable that contains the number of characters read in the current input line excluding the end of line character Each input unit has its own copy of this variable rrecord v An integer variable that contains the number of lines read from the current input unit Each input unit has its own copy of this variable 123 Simscript III User s Manual sfield f An integer function that returns the starting column number of the next value to be read by a free form read statement using the current input unit or returns zero if there are no more input values wcolumn v An integer variable that contains the column number of the last character written to the current output line or zero if no character has been written Each output unit has its own copy of this variable wopenerr v An integer variable that equals to indicate that an error occurred when opening the file associated with the current output unit or equals zero if no error occurred If the Open statement for the unit specifies the noerror keyword then the program can check the value of this variable after a use statement to determine whether an error occurred when opening the file otherwise such an error causes the program to t
88. f you are building existing SIMSCRIPT II 5 project in some cases you can use compatibility switch so that compiler suppresses warnings about deprecated functionality and your existing model should behave as before But usage of this switch will also exclude the new more efficient time scheduling mechanism and more efficient handling of ranked sets The model can be built either for Release or for Debugging You can define compiler options for release mode to optimize code generation and to include run time checking For Debugging mode you can define warning messages to be suppressed or displayed and run time checking to be performed You can also request various compiler listings to be generated Linking phase can also be defined Your model can be linked With Graphics libraries or Without Graphics libraries It can also be linked statically or dynamically Static link will link all necessary modules in the executable while dynamic link will link with the dynamic link libraries Dynamic link is faster and convenient during model development Static link is convenient when you want to link your model to be transferred to another computer for execution The name of the executable by default is project_name but you can change it by typing the desired name in the Binary text box 16 1 SIMSCRIPT III Simulation Studio calship3 loj x File Edit Project Options Window Help Oli tal Bl s l Sle e ANS ay Project options Project typ
89. following command ar r libxyz a o To make the library accessible to all users enter the following sequence of commands mv libxyz a SIMHOME lib ranlib SIMHOME lib libxyz a chmod 644 SIMHOME lib libxyz a SIMHOME is the environment variable which contains the full path where SIMSCRIPT III is installed For more details of the SIMHOME see the Installation Notes for the current SIMSCRIPT III release Note that ranlib is not available on all systems On systems where it is not available it is not needed To link the object files in a directory with this library enter simid o Ixyz A SIMSCRIPT III program can call routines written in other languages such as C or FORTRAN To link such a program specify to simld or simgld if the program makes use of SIMGRAPHICS features the name of each object file created by the other compiler along with the name of each object file created by the SIMSCRIPT III compiler Compiler switch G will link graphical models with the default SIMGRAPHICS3 libraries simc G sim SIMSCRIPT III runtime libraries as well as SIMGRAPHICS libraries are distributed in two versions dynamic link libraries and archive libraries This facilitates dynamic and static linking By default programs will be linked dynamically 37 Simscript III User s Manual When a model is linked dynamically the executable image does not include the entire object modules it needs for execution It contains pointers to t
90. form f call 2141 number of trials in binomial f call lt 0 2142 probability in binomial f call lt 0 2143 shape parameter lt 0 in weibull f call 2144 scale parameter lt 0 in weibull f call 2145 mean in gamma f lt 0 2146 shape parameter in gamma f lt 0 107 Simscript III User s Manual 2147 first parameter in beta f call lt 0 2148 second parameter in beta f call lt 0 2152 value of log e f or log 10 f argument lt 0 2153 absolute value of arcsin f or arccos f argument gt 1 2154 values of arctan f arguments 0 0 2155 value of sqrt f argument lt 0 2159 negative time expression in call of nday f 2160 negative time expression in call of weekday f 2161 negative time expression in call of hour f 2162 negative time expression in call of minute f 2169 minimum lt mean lt maximum is false in triang f 2171 attempt to open a unit already open 2173 invalid recordsize in open statement The record size is less than 1 or greater than 65534 2176 attempt to close a file already closed An attempt is made to close or rewind a unit that is not open 2177 attempt to close a standard SIMSCRIPT unit An attempt is made to close or rewind unit 5 6 or 98 2178 unable to close file See the UNIX error message on the line following this message for more information 2185 unable to record memory 2186 unable to restore memory 2188 unable to reopen or reposition a file during restore memory 2193 system service error
91. g Running Programs You can interrupt a running program by pressing Ctrl C or the INTERRUPT key combination defined for your system This will put you in the SimDebug dialog where the program is currently executing This is very useful to detect endless loops or recursions See the Ctrl C command in the command reference paragraph for more details Text Input Output On UNIX platforms the SimDebug dialog runs in the terminal window from which the program was started This means that the program s input output using units 5 6 or 98 will be intermixed with the SimDebug dialog as you would expect However when you redirect input or output when calling your program this will not affect the dialog of SimDebug Thus even if you type prog debug lt infile gt outfile the SimDebug dialog will still be connected to your terminal window This allows you to debug programs that read a lot of input from unit 5 standard in without the input interfering with the SimDebug dialog 4 2 A Quick Tour of SimDebug In this paragraph we will introduce SimDebug by example In the following tutorial user input is shown in bold face Courier and SimDebug output and example program source are shown in the regular Courier font The SimDebug dialog is indented our comments appear in between the dialog segments in italic We assume that we have recompiled our entire program using the d compiler option including the PREAMBLE so that we can see the attributes
92. g up the SimDebug dialog before the program starts Since the debugger is always there any runtime error will also put you into the SimDebug dialog where you can examine the stack local and global variables etc SimDebug s features include single stepping setting breakpoints viewing stack and global variables displaying temporary and permanent entities displaying sets and arrays displaying system variables I O and memory statistics displaying the I O buffer displaying simulation status changing variables and attribute values stopping at a certain simulation time command dialog logging and a lot more This chapter describes how to use SimDebug We first describe how to compile for and run SimDebug Then we will give you a quick tour that introduces the usage and major features of SimDebug in the style of a tutorial A detailed alphabetical description of all the SimDebug commands is given in paragraph 4 3 Some advanced topics related to SimDebug are given in paragraph 4 4 4 1 Compiling for Debug and Invoking SimDebug 4 1 1 Compiling for Debug This paragraph describes how to compile for debugging using the SIMSCRIPT III There are three levels of debugging support that can be selected for compilation The debugging level is controlled through a command line option to sime The three levels of debugging are none traceback only and full debug The selected debugging level applies to all routines in the modules supplie
93. ged to an always 1130 Number of labels exceeds allowed maximum Implementation constraints impose a limit on the allowed number of statement labels The routine should be subdivided into two or more routines 1131 Subprogram variable used out of context A subprogram variable may not be used within a computation 92 1132 Implicit conversion of subprogram variable Only subprogram variables or subprogram literal values may be assigned to a variable declared as mode subprogram 1133 Dimensioning of attributes not permitted Attributes of temporary and permanent entities are implicitly 1 dimensional subscripted by an entity pointer value The explicit dimensioning of these may cause ambiguity A dimension of 1 is substituted 1134 Illegal use of store with quantities of differing mode This usage of store may have undesirable side effects and is no longer permitted 1135 Use of store with text quantities may have undesired effect The use of the store statement between text quantities is allowed but strongly discouraged because it disables the automatic actions that assure the integrity of text values 1136 Variable is undefined or not fully defined This message appears when the background mode has been explicitly set to undefined using a normally statement 1137 Parameter in open statement not supported Differences in operating systems do not allow complete compatibility between SIMSCRIPT II implementations of the open statement Unsup
94. gt gt gt END OF PARAMETERS lt lt lt pa eee sos a Bosses oe l BELOW HERE NO CHANGES SHOULD BE NECESSARY 2z SE E E E SIMC SIMSCRIPT compile command SIMC simc OBJS List of o files OBJS PREAMBLE sim 0 SIMFILES sim 0 The first empty SUFFIXES clears the SUFFIXES list The second acknowledges only the sim and o suffixes This avoids problems with extraneous c files and others SUFFIXES SUFFIXES o sim c PRG OBJS echo Linking SIMLINK o PRG OBJS echo PRG was successfully built clean echo Removing all intermediate files and the executable rm f 0 c i S core a out PRG cleanexe echo Removing executables rm f core a out PRG RULES If preamble was changed we need to recompile everything Since after that all o will be current just the link is left in the target above PREAMBLE sim 0 PREAMBLE echo PREAMBLE sSim 0 outdated or missing echo Recompiling everything SIMC c SFLAGS PREAMBLE SIMFILES 45 Simscript III User s Manual How to make an individual object file from a simcript source file sim o S SIMC cv SFLAGS PREAMBLE sim 2 8 Obtaining Online Help Online documentation regarding the use of t
95. he SIMSCRIPT compiler can be obtained at the SIMSCRIPT WEB Site http www caciasl com products simscript cfm 2 9 Example Program The following is an example of a complete program and compilation Directory of C ex7 05 09 2007 01 20p lt DIR gt 05 09 2007 01 20p lt DIR gt ai 05 09 2007 01 19p 106 496 a exe 04 27 2007 10 51p 24 ed_ex7 dat 05 09 2007 01 19p 51 468 ed_ex7 obj 04 27 2007 10351p 4 771 ed_ex7 sim 04 27 2007 10 51p 140 ed_ex7_x dat 05 09 2007 01319p 32 500 resource obj 04 27 2007 10 51p 1 943 resource sim 8 File s 197 342 bytes 2 Dir s 63 822 127 104 bytes free CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE 1 RESOURCE PREAMBLE resource sim 1 public preamble for the RESOURCE subsystem 2 3 begin class RESOURCE 4 S every RESOURCE 6 has a TOTAL UNITS 7 an ACQUIRED UNITS 8 an AVAILABLE UNITS method 9 a WAIT FOR method LO and a CLEAN UP method and 11 owns a REQUEST QUEUE 12 13 define TOTAL UNITS as an integer variable L4 define ACQUIRED UNITS as an integer variable monitored on the left L5 define AVAILABLE UNITS as an integer method L6 define WAIT FOR as a method L7 given 2 integer values requested units and priority 18 before destroying a RESOURCE call CLEAN UP L9 20 end 21 22 begin class REQUEST 23 24 every REQUEST 25 has a UNITS 26 a PRIORITY 27 and a PROCESS NOTICE and 46 28 belongs to a QUEUE 30 define UNITS PRIORITY as integer variables 31 define PROCE
96. he dynamic link libraries also called shareable libraries The benefits of dynamic linking are twofold first linking time is shorter second all SIMSCRIPT models in the same computer platform share the same runtime libraries which results in substantial savings of disk space When you use existing link commands simld simgld simgld3 your model will be linked dynamically If you want to execute your model on some other platform which does not have the same release of SIMSCRIPT III or does not have SIMSCRIPT ITI installed at all your model must be linked statically This means that you have to perform static link or total link In other words your executable has to include all object modules in itself SIMSCRIPT III provides commands for platform independent static linking or total linking for both non graphical and graphical SIMSCRIPT models tsimld static link of non graphical models tsimgld static link of graphical models by default with SIMGRAPHICS II tsimgld3 static link of graphical models with SIMGRAPHICS II 2 5 Executing A SIMSCRIPT II program is executed by entering the name of the executable file For example a out Parameters specified on the command line are available to the SIMSCRIPT III program in the global text array parm v For example consider the following command a out i 10 WXYZ dat Upon entry to this program parm v will be set up as follows DIM F PARM V 3 PARM V 1
97. he number of degrees per radian which is zee or T 57 29577951308232 rinf c A double constant equal to the largest real value On 32 bit computers this value is approximately 3 4 x10 however a double value may be as large as 10 The smallest real value is rinf c shl f integer_arg1 integer_arg2 An integer function that returns the value of integer_arg1 shifted left by integer_arg2 bit positions For example shl f 23 2 returns 92 because binary 00010111 23 shifted left two positions is binary 01011100 92 The value of integer_arg1 is returned if integer_arg2 is zero The result is undefined if integer_arg2 is negative shr f integer_arg1 integer_arg2 An integer function that returns the value of integer_arg1 shifted right by integer_arg2 bit positions For example shr f 23 2 returns 5 because binary 010111 23 shifted right two positions is binary 000101 5 An arithmetic shift is performed with the sign bit copied to the most significant bit positions The value of integer_arg1 is returned if integer_arg2 is zero The result is undefined if integer_arg2 is negative sign f double_arg An integer function that returns the sign of double_arg 1 if the argument is positive 1 if the argument is negative and zero if the argument is zero sin f double_arg A double function that returns the sine of double_arg The argument is specified in radians The return value is in the range
98. hese pointer numbers you can step through the event sets for each process event type using the FP command The event process that is scheduled next is marked with a x behind the class number When only one process is scheduled in a class only the time a First is printed so you can easily tell that there is just one Entity in process v Process v is a pointer to the process event notice of the currently active process event For a process CUSTOMER the entity class will be 68 CUSTOMER This entity contains any user declared attributes as well as some internal attributes Never change any of the internal attributes FP ptrvariable FP ptrvalue FP n Follow Pointer With this command you can display the contents of an object that a pointer points to This will generally be an entity in which case the entity attributes are shown or an array in which case the array elements are shown There are three varieties of the command FP ptrvariable Ptrvariable is the name of a local or global pointer variable FP ptrvalue Ptrvalue is a pointer value in hex taken from previous output FP n n is a pointer index Whenever a pointer is shown as output from the T FP or other commands it is displayed with a prefix of the type n where n is a running index This way each pointer can be uniquely identified by n The running index n is restarted by each command that displays a pointer value Thus n applies to the last
99. his facilitates the development of general purpose models and simulation applications that can be moved easily from one site to another and from one organization to another e Appropriate Constructs SIMSCRIPT III provides constructs designed especially for simulation e g classes objects object attributes processes resources events entities and sets These constructs make it easier to formulate a simulation model Implementation of the simulation program is also quicker because these powerful tools do not have to be invented anew e Self Documenting Language Applications developed using the SIMSCRIPT II language is characteristically easy to read and understand The language encourages this because it is oriented toward the kinds of problems being solved rather than the machines being used as tools The very high level language features of SIMSCRIPT III were designed to make it possible to manage a complex simulation models e Error Detection SIMSCRIPT III performs a number of error checks that help to assure that a simulation model is running correctly Powerful inline symbolic debugger speeds up run time analysis of model behavior When an error in a run is detected model enters SIMSCRIPT III symbolic debugger which allows program status investigation which includes the names and values of variables system status and other valuable information This reduces the time spent in developing and testing programs e Statistical Tools
100. i PARM V 2 10 PARM V 3 WXYZ dat A SIMSCRIPT III program can read from standard input by reading from UNIT 5 It can write to standard output by writing to UNIT 6 and can write to standard error by writing to UNIT 98 Any redirection of these units which is allowed by the operating system may be specified on the command line Internal command line switches used for debugging like debug and batchtrace will not be seen by the program in parm v If a runtime error is detected by SIMSCRIPT III the program will be stopped and 38 1 A runtime error message will be written to standard error see Appendix B for a complete list of runtime error messages and the interactive debugger dialog will be entered allowing you to examine the state of the program 2 If the program was invoked with the command line switch batchtrace a runtime error message a traceback a simulation status report a memory status report and an I O status report will be written to a file simerr tre and the user supplied snapshot routine snap r will be called if it exists The level of debugging information included in a traceback depends on the compiler switches used for compilation d and g will provide method names and routine names with local variables and line numbers If none of these switches are used only method routine names will be written without other debugging information In the event that a runtime error goes undetected by SIMSCRIPT II and a
101. ibrary routines 40 Note The symbol mcount is a side effect of profiling and indicates the overhead incurred by profiling stime cumsecs call 21 4 25 66 18 6 47 91 11 9 62 12 6 9 70 34 220716 3 9 75 01 11755 3 5 79 16 165643 2 3 81 93 110445 2 2 84 62 110419 2 0 87 00 208985 1 7 89 08 86922 1 6 91 00 130610 1 5 92 84 86922 1 4 94 51 56318 1 3 96 11 208959 1 3 97 68 98664 1 2 99 12 55303 1 2 100 52 28165 1 1 101 84 1 1 1 103 12 98689 0 9 104 22 220716 0 9 105 28 208985 0 8 106 29 220716 0 8 107 21 130716 0 7 108 08 241264 0 7 108 90 429904 0 7 109 71 55210 0 6 110 46 43467 0 6 111 19 43467 0 6 111 86 55209 See the man page for prof 1 for more information ms call O O O O O o O O O O O O 8 04 40 03 03 02 01 02 01 02 03 01 02 03 0 05 1320 00 0 01 Coo eo eC OC aoa oO oO 00 01 00 01 00 00 01 02 02 01 41 name _HP_SUSPEND_R _HP_RESUME_R mcount _HTIMO_R _RJOB _HT_EV_S _HRANDOM_F _OS_N X TRANSPORTER _HPRQ R _OS_N X WORK_STATION _calloc QS_WS_NUM_MACH WORKING _QOS_N QO WORK_STATION _HPSU_R _HRNQ_R _log _RT_Q WORK_STATION _HTIME_R _HREQ R _HPCALL_R _HPSUSP_R _HTIM1_R _malloc mul _HDIM_F _RT_X_TRANSPORTER QS _ WS_DELAY_IN_QUEUE _HERLANG_F _RZ_X_TRANSPORTER Simscript III User s Manual 2 7 Makefiles The file naming scheme that this compiler uses is compatible with the naming scheme used by the C language compi
102. in SimDebug Since SimDebug is a program that is called when an error occurs SimDebug will be called from within SimDebug You will get a warning message You can look at some more variables but you cannot continue the execution Exit from SimDebug with QUIT and restart your program to find the error 82 Appendix A Compiler Warning and Error Messages A 1 Warning and Error Messages During compilation warning messages and error messages may be produced The text of each message appears below 1001 Invalid syntax A word found in the input stream did not conform to the syntax requirements of the SIMSCRIPT II 5 language The unrecognized word is ignored and the error scan resumes with the next statement keyword in the input stream 1002 Missing An arithmetic expression or subscript is missing a right parenthesis A possibly misplaced right parenthesis is assumed 1003 Missing terminal in ALPHA literal An ALPHAnumeric string must be contained on one line 1004 More format specifications than variables In formatted read and write statements there must be a one to one correspondence between variables and format descriptors The format descriptors including must be separated by commas In a print statement fields are defined by or a sequence of at least 8 contiguous periods 1005 More variables than format specifications See message 1004 1006 Conflicting or redundant properties in define More than o
103. index n in the S command Context Switch When a context switch occurs during a N or S or SR command a message is printed accordingly PAV arrvarname selvec Print array variable With this command you can display all or part of a multi dimensional array or parts thereof Arrvarname must be an array variable name and the whole array is printed by default Selvec is the selection vector that allows you to limit the output It consists of several elements with the following meanings n Show only this element from the current dimension 72 Show all elements of this dimension Stop display at this dimension A few examples will clarify this command Assume ARR3I is a 3 dimensional integer array reserved as 5 5 5 Then PAV ARR3I 1 Prints all elements of ARR3I 1 25 integers PAV ARR3I 2 3 Prints ARR3l 2 3 5 integers PAV ARR3I 4 5 Prints ARR3I 1 4 5 2 4 5 3 4 5 5 integers PAV ARR3I 3 Prints 5 pointers to the integer arrays of the last dimension ie 3 1 3 2 3 3 Equivalencing An array may be defined and reserved as a 5 by 5 integer array But if you assign this pointer to an array variable of mode 2 dim alpha array you can look at the data as alphas The PAV command uses the mode of the given array variable arrvarname to determine how to interpret the data PDV arrvarname selvec PDV ptrvariable selvec PDV ptrvalue selvec Print descriptor variable Same as PAV
104. ings from being displayed 1223 Override on the right not allowed here If an object attributes is overridden only a LEFT METHOD can be provided for this attribute 1224 Override on the left of non numeric not allowed here Only object attributes of mode alpha integer2 integer real and double can be overridden 1225 Initialize not allowed in main module The INITIALIZE routine is only allowed in subsystems 1226 Found duplicate routine or method A second routine or method heading was found 1227 Implementation of method not found The compiler will generate a warning whenever routines and methods are not found in any of source code files presented by the user Use the v option to prevent these warnings from being displayed 1228 Mode of yielded argument does not match prototype If the dimensionality of a prototyped yielded argument is greater than 1 the mode must match exactly For 0 dim arguments the mode of argument must be assignment compatible with the mode of the prototype 1229 Process methods cannot return a value A process method cannot be defined as a function A RETURN WITH statement is not allowed in the body of a process method 1230 Pointer variable used in expression A warning will be displayed if a variable of mode POINTER is used in an arithmetic expression 1231 Invalid boundaries for histogram The high value used in a histogram declaration must be greater than the low value The DELTA value must be grea
105. ings number kk nn mm x Display a local cross reference listing for a module Below is a complete list of the options available in the SIMSCRIPT III compiler a Compiler will produce a file containing the generated source code for the together with the SIMSCRIPT source code as comments Produces a c file with ALLSTARS comments which shows the expansion of complex SIMSCRIPT statements into simpler ones b N This compiler switch is seldom used The SIMSCRIPT III compiler generates C code as an intermediate step during the compilation This is transparent to 30 C you On some platforms C compilers cannot compile source files with a large number of C code lines because of the static allocation of the symbol table By default the SIMSCRIPT III compiler will generate the intermediate C code into one file To enforce splitting of generated intermediate C code into files with a defined maximum number of lines you should invoke the SIMSCRIPT III compiler with the optional compiler switch b N break C code after N number of lines For example simc b 3000 big sim File big sim will be transformed into big 1 c big 2 c etc Subsequently generated object modules will be big 1 0 big 2 0 etc The compiler s default behavior is to link using simld after compilation If you want to stop this from happening use this option The compiler will generate code to perform full runtime checking This code validates every array elem
106. ion 105 Simscript III User s Manual 2071 record length exceeds specified recordsize A record is read from the current input unit which is longer than the record size specified for the unit 2072 B format input column is not within record The column number is less than or greater than the record size specified for the unit 2076 B format output column is not within record See error 2072 2077 incomplete record on a fixed format file The last record read from a binary file is shorter than the record size specified for the unit 2084 invalid character in T format during input A character is read which is not one of the following blank or 0 9 2088 integer number too large for input A value is read which falls outside the range of integer values 2147483648 to 2147483647 2093 attempt to create text string gt 32 000 characters 2094 attempt to erase non text entity A value which is not text is encountered in a situation where a text value is required 2095 position zero or negative in substr f 2096 length negative in substr f 2097 offset negative in match f 2101 transfer to missing case in select In a select statement the expression is not equal to any of the values specified in any of the case statements and no default statement has been specified 2103 wild transfer in subprogram variable CALL The value of the subprogram variable is not equal to the address of a routine 2104 wild transfer in subscr
107. ions The compiler assumes a function definition 1040 Attempt to equivalence function attributes Function attributes are not assigned any storage and therefore cannot be equivalenced 1041 Missing in equivalence attribute group A possibly misplaced right parenthesis is assumed 1042 Attempt to pack function attribute 86 Function attributes are not assigned any storage and therefore cannot be packed 1043 Attempt to pack un subscripted system attribute The packing definition cannot be honored 1044 Illegal packing code For bit packing the bit numbers should satisfy the inequality 1 lt n lt m lt 32 For field packing and intra packing the denominator must be 2 or 4 1045 Packing code n illegal for temporary attribute The N packing codes can only be used for arrays such as attributes of permanent entities or subscripted attributes of the system A field packing of 1 N is assumed 1046 Compound entity may not belong to a set The compiler ignores the belong clause 1047 Attempt to define non local variable as saved or recursive This is an attempt to define a local variable in the PREAMBLE The definition is not processed 1048 Incorrect mode specified for packed variable Packing applies only to INTEGER quantities 1049 Defining set not previously declared in every statement Set definitions must be placed after the owns and belongs clauses defining their owner and members The definition of the set is ignored This
108. ious editing session 1 9 On line Help Simstudio provides full on line help for all aspects of developing SIMSCRIPT Models including SIMSCRIPT language constructs Simulation graphics Editors and graphics library Simstudio Command line interface for developing models List of Compiler and Run time errors using Symbolic Debugger Data Base connectivity etc Use menu option Help to invoke on line help system 23 Simscript III User s Manual DIBI Simscript I 5 Programming Lar A Lexical Elements Modes Variables Simscript Simulation Studio Expressions Overview Statements by Category The SimStudio Editor Window Routines by Category a z a Entities and Sets Compiling for Debugging Input Output Text Input Output Simulation Concepts External Unit Assignments Operating System Interfac Internal Files Simscript Simulation Graphics Errors in C Compile or Link s oai Printing and External Editing Segments Creating Presentation Gra Menu Dialog Boxes File Menu Bars Edit Palettes Project E Windows Options Simscript Database Connectiv gt Setting Up a Database Window Declaring the SDBC Funct Help H Connecting to a Database SIMSCRIPT II 5 Online Help SimDebug Figure 1 13 Simstudio on line help window 24 1 10 Advanced Compiler Link Options Project options dialog box has two buttons used only in more advanced model developments C C Options Facilita
109. ipted go to statement An attempt is made to go to an undefined subscripted label 2106 attempt to suspend when no process is active A wait work suspend request or relinquish statement is executed by a routine which is neither a process nor a routine called from a process 2107 attempt to relinquish more resources than requested An attempt is made to relinquish units of a resource that were not previously obtained by a request 106 2112 parameter 2 negative in D or E format A negative number of decimal places is specified 2116 parameter 2 gt parameter 1 in D or E output format The number of decimal places exceeds the total width of the field 2122 parameter 2 gt parameter 1 in D or E input format See error 2116 2124 real number too large for input A value is read which falls outside the range of double values 2128 invalid character in D or E format during input A character is read which is not one of the following blank period E e or 0 9 2130 negative argument to skip fields cannot skip backwards 2132 mean in exponential f call lt 0 2133 mean in erlang f call lt 0 2134 number of stages in erlang f call lt 0 2135 mean in log normal f call lt 0 2136 standard deviation in log normal f call lt 0 2137 standard deviation in normal f call lt 0 2138 mean in poisson f call lt 0 2139 second parameter less than first in randi f call 2140 second parameter less than first in uni
110. ked and then executed with the interactive SIMSCRIPT symbolic debugger to examine the state of the program and find the cause of the error vi 2 1 Preparing Source Files A SIMSCRIPT III program may be prepared using ed4sim SIMSCRIPT syntax color coded editor vi emacs or any other text editor If the program is small it is convenient to store the entire program within a single file If the program is large it is best to organize the code as subsystems Files containing SIMSCRIPT III source code must be given names that end with sim or SIM Public preamble of the main module or subsystem should be placed in name sim and implementation which contains private preamble and the methods and routines of that subsystem should be placed in name_i sim When you type simc sim This naming convention would allow compiler to see first public preamble for the module and then it s implementation Although not a requirement it is easier to compile and link a SIMSCRIPT III program that is stored in a directory of its own i e a directory containing the entire source files of the program in question and none of the source files of other programs 2 2 Compiling The SIMSCRIPT III compiler translates a program written in the SIMSCRIPT III programming language into one or more object files The compiler uses C as an intermediate language but this is transparent to you the SIMSCRIPT III program developer The compiler will write diagnostics erro
111. lect block after the use of the default statement 1155 No case statements appear within select Each select endselect block must include at least one case statement 94 1156 Select case without matching endselect Each select case block must be terminated by a matching endselect statement 1158 Symbol redefinition A local define to mean is redefining a global define to mean without an intervening suppress substitution This may have unexpected consequences For example if the PREAMBLE contains the statement define NUMBER to mean 10 and a routine contains the statement define NUMBER to mean 20 the compiler will first substitute 10 for NUMBER in the routine making the statement read define 10 to mean 20 and will then substitute 10 for 20 throughout the remainder of the routine 1161 Changing PROCESS pointer may affect implicit subscripting Changing the pointer to a PROCESS within its PROCESS routine will prevent the routine from later accessing the attributes of the current process Such attributes are often referenced through implied subscripts This warning may be the result of an activate create or remove statement intended to point to a different process notice Use a different pointer name to avoid this problem 1162 Storage may not be de allocated on destroy of a process When a PROCESS terminates normally SIMSCRIPT II 5 automatically performs some memory management functions By explicitly destroying the PROCESS pointer
112. ler Because of this it is possible to use the UNIX make utility This utility only recompiles the source files that have changed since the last compilation This is an easy and reliable way to manage models of medium to large size Make is not very good at handling models whose sources are spread over many directories but with care it is possible The make utility relies on a special file called a make file to describe the rules for rebuilding your particular model By default the make file is named either makefile or Makefile Other file names may be specified with the f option of make See the man page for make 1 for more information 2 7 1 Compilation Sequence The compiler knows about the following kinds of file extensions and treats them as follows sim Compile as SIMSCRIPT source files SIM Alternate suffix for SIMSCRIPT source files o Object files c C source files produced in intermediate stage a Archive libraries to include in linking Files must be named using this convention For other kinds of file extensions consult the manual for your C compiler Files are named after the SIMSCRIPT source using the following convention myfile sim gt myfile o This allows the use of makefiles The easiest way to use the compiler is to simply specify all the sources you want compiled and let the compiler compile and link them into an executable program However during development of a large program onl
113. ll be called name If this option is not specified a out is the default executable name For example the following command creates an executable called file after compiling all the sim source files in this directory simc sim o file The C compiler s optimizer will be involved when compiling This option will increase compile time but will reduce model runtime On very rare occasions some optimizers may produce incorrect code resulting in incorrect behavior of your program If this is suspected try compiling without optimization The following command will create an optimized executable called prog after compiling filename sim simc O o prog filename sim Compile using profiling code On UNIX platforms See prof 1 and ce 1 in the man pages for details This must be specified at link time either through simc or simld See paragraph 2 6 This option may not be provided on all computer platforms Create only a c file Do not produce o or link Specify list of files which comprise main module if it spans multiple files Specify list of files which comprise subsystem module if it spans multiple files This option means a VERY OLD PREAMBLE It is used during re compilation 33 Simscript III User s Manual W w n m X X 1 of SIMSCRIPT routines when there are no changes to the Preamble sim It will speed up the re compilation process because Preamble o will not be generated Also the PREAMBLE will not appear in th
114. ly defined by SIMSCRIPT II 5 such as resources temporary entities etc Instead of hiding these values SimDebug 69 Simscript III User s Manual FPN shows these internals since they are documented such as fields of resources etc However you should never change a variable that you did not create define yourself Printing Text Values SimDebug shows only a few characters of the text in the normal PV output To see the whole text use FP textvar See notes on the text display at the FP command Note on Integers Used as Pointers Since many SIMSCRIPT programs use integer variables to store pointers as well SimDebug allows you to follow integers as if they were pointers Like FP but this command does not reset the pointer number counter This allows you to keep the access handle n to the entity after you have displayed it This is needed for the SEV command set entity values See the notes for the SEV command GL pattern GLOB pattern H Globals Prints a list of all global variables and their values in alphabetical order See the T command for a description of the output Pattern can be prefix or prefix which shows all variables that begin with the given prefix or suffix which shows all variables that end with the given suffix HELP name LB HELP Gives an overview just the names of all SimDebug commands When name is given SimDebug gives a more detailed description of the topic command wi
115. metimes you may 79 Simscript III User s Manual want to just get a traceback into a file and want the program to terminate on a runtime error e g when you run i t in batch mode When you set the system variable batchtrace v 1 a runtime error will cause the traceback The I O event and memory information will be written to a fixed file simerr tre Another way of setting batchtrace v to 1 is to call your executable with the command line option batchtrace As with debug your application program does not see this option Setting batchtrace v 2 causes an immediate exit in case of a runtime error or a user interrupt e g Ctrl C No traceback is written 4 4 2 Signal Handling External Events SimDebug uses the signal handling facilities of the operating system to catch events like floating point errors segment violations etc If your program uses C code that sets its own signal handling routines you must comment out that code as long as you want to use SimDebug on that program Any mix will not work 4 4 3 Reserved Names In SIMSCRIPT all names that begin with lt letter gt or end with lt letter gt where lt letter gt is any letter are reserved for the system s usage This is why they do not appear in SimDebug If you use such an illegal name e g for a routine it will not appear as a user routine in SimDebug You cannot see it with the LR command Thus even if such a routine name does not clash with a system r
116. mp Figure 1 2 Project tree 1 3 Adding Source Code to a Project Source code for projects is stored by default in the directory sources You can create a new text sim file add individual directories and files or add the whole subdirectory with multiple sub directories to your project 1 3 1 Creating a New File with the Text Editor Simscript III User s Manual Use File gt New to open an untitled text window Type in the text and use File gt Save As to save it in the directory sources The new file will appear in the project tree in the project window and will be saved on the disk H1 SIMSCRIPT III Simulation Studio resource Relea File Edit Project Options Window Help Ol tal Bl me elal J executable J sources normally mode is integer end main write as Hello fort I 1 te 10 do 1ist 1 loop end Line 1 Column 1 Figure 1 3 Creating a new source file To open this file again click on its name twice with the left mouse button in the project tree When you open a text file for editing the menu option Edit and the text editor toolbar will contain all necessary options for text editing You can open or delete a file from the project tree Right mouse click on the source file name in the project tree This will open a pop up menu with the options open or delete You can open the file for editing or you can delete it from the project and the disk 1 3 2 Ad
117. mp Selected untitled1 icn X 17171 29763 Zoom 1 Figure 1 7 Adding a new Icon in Simstudio A detailed explanation on how to create and use graphical elements in SIMSCRIPT II models can be found in the SIMSCRIPT III Graphics Manual 1 4 Opening an Existing Project To open existing projects use the Project gt Open menu option The dialog box Open Project will appear allowing you to browse to the project directory 14 g 1 Open Project X Look in calship x cr executable sources temp valdez SanPedro B calship sp My Documents w Ls rN My Computer a Al File name ealship sp Open E Files of type simscrit Projects sp v Cancel Select project_name sp and click Open The selected project will be opened for development 15 Simscript III User s Manual 1 5 Building a Project Building a project can be done in two ways using menu options Project gt Build or Project gt Rebuild All If you use Project gt Rebuild All it will recompile all the project source files and re link the model When you use Project gt Build only the modules changed after the previous build will be recompiled and the model will be re linked You can influence the model building procedure using menu option Options gt Project It will bring up a dialog box Project options where you can define that you can build SIMSCRIPT III project or a library or an existing SIMSCRIPT II 5 project I
118. n 8 bit character encoding that includes ASCII as a subset Values 0 to 127 are defined by ASCII and values 128 to 159 are non printable Latin characters Values 160 to 255 are printable Latin characters and include these letters AAAAAAACEEEELI ISIDNOOOOOGOTUOUYPS amp tS i amp 8 Ce fer gt O gt amp 5 or Q a t lt and these special symbols pELAR LS O n C737 Ts 1 wm UNNA Words in the following languages can be represented using the Latini character set Afrikaans Albanian Basque Catalan Danish Dutch Faroese Finnish French German Icelandic Irish Italian Norwegian Portuguese Romansh Scottish Gaelic Spanish Swahili and Swedish 135 Simscript III User s Manual ASCII Character Set 0 NULL 32 1 SOH 33 2 STX 34 3 ETX 35 4 EOT 36 5 ENQ 37 6 ACK 38 7 BEL 39 8 BS 40 9 HT 41 10 LF 42 11 VT 43 12 FF 44 13 CR 45 14 SO 46 15 SI 47 16 DLE 48 17 DCI 49 18 DC2 50 19 DC3 51 20 DC4 52 21 NAK 53 22 SYN 54 23 ETB 55 24 CAN 56 25 EM 57 26 SUB 58 27 ESC 59 28 FS 60 29 GS 61 30 RS 62 31 US 63 Space TRZ OMANANNFWNK Or x y IAC 136 PUTT NKKM EK COUMAOVOZEO RUKH POMMOIND DS 96 97 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 a a EK EP TMH ODOR e a ho oe op DEL Appendix E Deprecated
119. nce variable 81 82 while QUEUE is not empty 83 do 84 remove first REQ from QUEUE 85 destroy PROCESS NOTICE REQ 86 destroy REQ 87 loop 88 88 end CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE COMPUTER CENTER PREAMBLE ed_ex7 sim 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 20 21 22 23 24 25 26 2 28 29 30 31 32 33 preamble for the COMPUTER CENTER system Ed Russell s Example 7 importing the RESOURCE subsystem begin class COMPUTER the class has a CPU a MEMORY JOB TIME in minutes JOB process method JOB GENERATOR process method STOP SIMULATION process method oo and define CPU MEMORY as COMPUTER RESOURCE reference variables define JOB TIME as a real variable tally NO PROCESSED as the number AVG JOB TIME as the average of JOB TIME define JOB as a process method and 1 real value processing time in minutes define JOB GENERATOR as a process method given 3 real values mean interarrival time in minutes mean processing time in minutes stop time end begin class COMPUTER RESOURCE every COMPUTER RESOURCE 48 given 2 integer values priority required units of memory is a RESOURCE and 35 has a UTILIZATION method 36 37 define UTILIZATION as a double method 38 39 accumulate AVG USED as the average of ACQUIRED UNITS 40 accumulate AVG QLEN as the average 41 MAX QLEN as the maximum of N QUEUE 42 43 end 44 45 processes i
120. nclude JOB 46 external process is JOB 47 external process unit is 7 48 49 end CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE METHOD COMPUTER CENTER COMPUTER JOB ed_ex7 sim 50 51 methods for the COMPUTER class 52 53 process method JOB JOB PRIORITY MEMORY REQUIREMENT PROCESSING TIME 54 55 define START TIME as a real variable 56 57 START TIME TIME V 58 59 if AVAILABLE UNITS MEMORY gt MEMORY REQUIREMENT and 60 QUEUE MEMORY is empty or PRIORITY F QUEUE MEMORY lt JOB PRIORITY 61 add MEMORY REQUIREMENT to ACQUIRED UNITS MEMORY 62 else 63 call WAIT FOR MEMORY MEMORY REQUIREMENT JOB PRIORITY 64 always 65 66 if AVAILABLE UNITS CPU gt 0 67 add 1 to ACQUIRED UNITS CPU 68 else 69 call WAIT FOR CPU 1 JOB PRIORITY 70 always 71 72 work PROCESSING TIME minutes 73 74 subtract MEMORY REQUIREMENT from ACQUIRED UNITS MEMORY EO subtract 1 from ACQUIRED UNITS CPU 76 aa JOB TIME TIME V START TIME MINUTES V 78 79 end CACI Windows 2000 XP SIMSCRIPT III alpha 05 09 2007 12 43 23 PAGE METHOD COMPUTER CENTER COMPUTER JOB GENERATOR ed_ex7 sim 80 81 process method JOB GENERATOR 82 given MEAN INTERARRIVAL TIME MEAN PROC TIME STOP TIME 83 84 until TIME V gt STOP TIME 85 do 86 schedule a JOB 87 given RANDI F 1 10 1 RANDI F 1 TOTAL UNITS MEMORY 2 88 MIN F EXPONENTIAL F MEAN PROC TIME 4 2 MEAN PROC TIME now 89 wait EXPONENTIA
121. nction that returns the year for the date that is double_arg days after the origin date established by a prior call of origin r The argument must be nonnegative 132 C 7 Miscellaneous batchtrace v An integer variable that specifies the action to take when a runtime error occurs The debugger is invoked unless the value of the variable is 1 or 2 If the value is 1 a traceback is written to a file named simerr trc and snap r is called If the value is 2 the program exits without a traceback or snap r invocation The default value is zero which invokes the debugger date r yielding text_arg1 text_arg2 A subroutine that returns the current date in the form MM DD YYYY in text_arg1 and the current time in the form HH MM SS in text_arg2 exit r integer_arg A subroutine that terminates the program with an exit status of integer_arg parm v A one dimensional text array that contains the command line arguments given to the program when it was invoked Dim f parm v is the number of command line arguments and is zero if no arguments were provided snap r A subroutine that may be provided by the program which is invoked when a runtime error occurs and the value of batchtrace v is 1 The subroutine may write to the file named simerr trc by writing to the current output unit 133 Appendix D Latin 1 Character Set SIMSCRIPT III supports Latin1 character set more formally ISO 8859 1 which is a
122. ne MODE DIMENSION or TYPE specification appears in the same define statement The indicated statement is ignored 1007 Number of subscripts different from definition or previous use A subscripted variable is redefined with a different number of subscripts than originally or a set name in a file or remove statement is improperly subscripted 1008 else or always without matching if The indicated statement is misplaced in the program 1009 if not terminated by always This error is detected at the end of a routine 1010 Use conflicts with definition The previous definition or use of this name precludes its use in this context This message can apply in a number of cases The most common are described below 83 Simscript III User s Manual e A belong clause in an every statement does not refer to a set name e Common membership in sets is limited to temporary entities e An every statement attempts to define an entity but the name has already been defined differently e A define statement attempts to define a variable a procedure or a set but the name has already been defined differently e The variable in an external unit statement has already been defined differently e The attribute of a has clause has already been defined differently or a common attribute is defined with a different word assignment or packing code e Attempt to read or write a variable defined as a set e Attempt to release a quantity which is not an arra
123. ned for the variable 1085 move statement not allowed here A move to statement can only appear in a right handed routine A move from can only appear in a left handed routine The statement is out of place 1086 before creating and after destroying options not allowed After creating and before destroying can be used to collect usage statistics 1087 More arguments than defined attributes in process or event It is necessary to define an attribute to hold each argument received by the event The excess arguments supplied can receive no values 1088 More arguments than defined attributes in activate It is necessary to define an attribute to hold each argument received by the event The excess arguments supplied cannot be stored anywhere 1089 Context requires name of an entity A list attributes of statement does not refer to a temporary entity 1090 Illegal attempt to break ties on an external event External events cannot appear in break ties statements 1091 Illegal attempt to equivalence random attributes Random attributes cannot be equivalenced with other variables of any type 1092 Illegal mode for a random variable A random variable cannot be of alpha or text mode 1093 stream phrase ignored variable not defined as random The define name as stream statement should be placed after the definition of the variable as a random variable 1095 cycle or leave ignored no loop in effect Either cycle or leave must appear within a do
124. nking model executable is controlled automatically for optimal efficiency Simstudio provides the most commonly used compiler switches and link options It will be explained in detail in Chapter 1 1 Command line interface can be used from cmd window It is very convenient for users who need more control over compilation and link phases and like to make use of make files and scripts You can use ed4sim SIMSCRIPT editor or your own favorite text editor edit vi etc to create SIMSCRIPT source files To create graphical elements for your model you have to use Simstudio graphicals editors or you can import JPG pictures and use them as SIMSCRIPT Icons for presenting dynamic objects or as a realistic background CACI provides a set of commands for compiling and linking graphical and non graphical models like simc simld simgld etc These commands are explained in full detail in Chapter 2 It also contains description of all available compiler switches Simscript III User s Manual 1 1 Simstudio Overview SIMSCRIPT II Development Studio helps you to organize your model as a project which can be built automatically using menu options When you start a new model development you have to create a new project add source files add graphical elements and define how you want your project to be built After that you can build and execute your model For a new project you will define the name of your project and directory where it will be located In the p
125. not found there it looks at global variables The commands up dn top bot move the current frame up down to the top last routine called or bottom MAIN Traceback Current Write trace of current frame Top Frame Set current frame to the top of the stack which is the last user routine called farthest away from MATN See note on current frame in the DN command Up Frame Set current frame n levels up away from MATN in the stack Default n 1 SL in the header line shows the stack level See note on current frame in the DN command Where Shows where you are in the source in the current frame It shows n source lines around the current line The default n is taken from the SimDebug parameter WW see SET command The current source line is shown with a gt in front of it Breakpoints appear with in front of the line WT filename from to Write traceback output of T and the output from the IO MEM and EV commands to a file The default filename is trace out By specifying from and to you can limit the traceback to those levels When the trace file exists it is overwritten WTA filename from to 4 4 Write Trace Append Same as WT except that the output is appended to the trace file Advanced Topics 4 4 1 Batchtrace v Normally when a SIMSCRIPT program runs into a runtime error SimDebug will be called so you can examine the stack and variables to find out what went wrong So
126. nteger mode variable is yielded Since the nonsimscript routine was prototyped in the preamble the appropriate conversion takes place Main Define V1 as an integer variable Call MixedCaseRoutine yielding V1 end 4 If input of a nonsimscript routine is un prototyped variables passed as arguments that are of mode REAL are NOT automatically converted to 64 bit double The variable will be passed as a 32 bit float and it is assumed in this case that the C routine expects a 32 bit float and not a 64 bit double 150 Appendix G Continuous Simulation SIMSCRIPT supports discrete and combined discrete continuous simulation through several unique features wait continuously statement and capability to define continuous variables In SIMSCRIPT III these features have been improved They are re implemented in a separate system module continuous m The public preamble for this module is in SIMSCRIPT directory SIMHOME defs Models which use SIMSCRIPT continuous capabilities should state in the preamble the import of this module subsystem and to import this directory during compilation All necessary library objects will be automatically linked with the model Here is description of the improved wait continuously statement Work wait continuously evaluating rtn statement When this statement is executed inside a process that process is suspended allowing continuous attributes of the process notice to be u
127. number of elements in array_arg The argument is normally an array pointer However if the argument names an array of sets then the f set array pointer is implicitly passed in its place If the argument is zero then zero is returned div f integer_arg1 integer_arg2 An integer function that returns the truncated result of integer_arg1 integer_arg2 Integer_arg2 must be nonzero For example div f 17 5 returns 3 and div f 12 8 returns l exp c A double constant equal to the value of e 2 718281828459045 exp f double_arg A double function that returns the value of e where double_arg is the exponent frac f double_arg A double function that returns the fractional part of double_arg It is computed by subtracting the truncated value of the argument from the original value If the argument is positive the return value is positive If the argument is negative the return value is negative For example frac f 3 45 returns 0 45 and frac f 3 45 returns 0 45 inf c An integer constant equal to the largest integer value On 32 bit computers this value is 2 1 2 147 483 647 The smallest integer value is inf c 1 log e f double_arg A double function that returns the natural logarithm i e the base e logarithm of double_arg The argument must be positive 115 Simscript III User s Manual log 10 f double_arg A double function that returns the base 1
128. obability not zero in data for random linear variable 2234 cumulative probability values not in increasing order 2235 individual probability values not allowed for random linear variables 2236 sum of probability values more than 1 plus rounding margin 2237 Jump to missing Here statement See compilation warning 2238 Time v decreased since last reset 2239 month origin error 109 Simscript III User s Manual A month is specified which is less than 1 or greater than 12 2240 day origin error A day of the month is specified which is less than 1 or greater than the number of days in the month 2241 invalid event process class An event process class is specified which is less than 1 or greater than the number of event process classes 2300 graphics system error See the error message on the line preceding this message for more information 2301 value of vxform v is invalid The number of the current viewing transformation is less than 1 or greater than 15 when an attempt is made to define a window or viewport 2302 invalid viewport dimensions An attempt is made to define a viewport having dimensions which do not satisfy the following requirement 0 lt xlo lt xhi lt 32767 andO lt ylo lt yhi lt 32767 2303 invalid window dimensions An attempt is made to define a window having dimensions which do not satisfy the following requirement xlo xhi and ylo yhi 2304 attempt to delete the open segment 2305 segment already o
129. ocuses on the use of CACI s SIMSCRIPT III compiler for developing simulation models Model development can be done either using SIMSCRIPT III Development Studio Simstudio or Command line interface CACI publishes a series of manuals that describe the SIMSCRIPT III Programming Language SIMSCRIPT III Graphics and SIMSCRIPT II SimStudio All documentation is available on SIMSCRIPT WEB site http www caciasl com products simscript cfm e SIMSCRIPT III User s Manual this manual is a detailed description of the SIMSCRIPT III development environment usage of SIMSCRIPT III Compiler and the symbolic debugger from the SIMSCRIPT Development studio Simstudio and from the Command line interface e SIMSCRIPT III Programming Manual A short description of the programming language and a set of programming examples e SIMSCRIPT III Reference Manual A complete description of the SIMSCRIPT II programming language constructs in alphabetic order Graphics constructs are described in SIMSCRIPT III Graphics Manual e SIMSCRIPT III Graphics Manual A detailed description of the presentation graphics and animation environment for SIMSCRIPT III Since SIMSCRIPT III is a superset of SIMSCRIPT II 5 a series of manuals and text books for SIMSCRIPT II 5 language Simulation Graphics Development environment Data Base connectivity Combined Discrete Continuous Simulation can be used for additional information e SIMSCRIPT II 5 Simulation Graphi
130. of pointer to a constant Only integer variables should be compared to a constant 1215 Private preamble is unexpected here A private preamble must proceed its public preamble This error can also occur if a duplicate private preamble is found 1216 Public preamble is unexpected here Only one public preamble is allowed per file 1217 LIFO and FIFO are ignored for ranked sets The LIFO and FIFO keywords do not apply if the set is ranked 1218 Name of private preamble must match public preamble If a private preamble is included in the same source as the public its name must match that of the public preamble 1219 Public preamble was not found The preamble heading for an imported module was not found 1220 Public preamble name must match source file name The file containing a public preamble must be named after the preamble For example the public preamble for a module named FACTORY must be found in the file named 99 Simscript III User s Manual factory sim 1221 Left monitoring routine method not found The compiler will generate a warning whenever routines and methods are not found in the any of the source code files presented by the user Use the v option to prevent these warnings from being displayed 1222 Right monitoring routine method not found The compiler will generate a warning whenever routines and methods are not found in any of the source code files presented by the user Use the v option to prevent these warn
131. ofiled program must exit or return normally for the profiling information to be saved in the mon out file The prof command is then used to interpret the results of the profile prof Displays the following information for each routine time Percentage of the total time of the program that was consumed by this routine 39 Simscript III User s Manual cumsecs A running sum of the number of seconds accounted for by this function and those listed above it call The number of times this routine was called ms call How many milliseconds this routine consumed each time it was called name The name of the routine To obtain a profile of a SIMSCRIPT III program it is necessary to link the program using the p option To tally the number of calls to a routine the file that contains the routine must be compiled with the p option Compile the modules you want profiled with the p flag simc c p file1 sim file2 sim simc c file3 sim To link the program type simid p file1 0 file2 0 file3 o Or simply simc p file1 o file2 0 file3 o Run your program a out Now use prof to write an execution profile to standard output prof a out The following is some sample profile data created by prof Routines that begin with _H are SIMSCRIPT library routines Routines that begin with _R were generated by the SIMSCRIPT compiler or are user routines Routines that begin with _Q are SIMSCRIPT or user left routines Other routines are C l
132. ol v An integer variable that specifies for the current output unit a positive starting column number at which the word Page followed by the current page number will be written as the first line of each page preceding lines written by a heading v routine when pagination is enabled lines v is greater than zero or the variable is zero which is the default or negative to disable this feature Each output unit has its own copy of this variable 122 rcolumn v An integer variable that contains the column number of the last character read from the current input line or zero if no character has been read Each input unit has its own copy of this variable read v An integer variable that contains the unit number of the current input unit Its initial value is 5 because unit 5 standard input is the current input unit when a program begins execution The assignment read v N changes the current input unit and has the same effect as the statement use N for input record v integer_arg An integer function that returns the number of lines read from or written to the specified T O unit Integer_arg must be a valid unit number ropenerr v An integer variable that equals to indicate that an error occurred when opening the file associated with the current input unit or equals zero if no error occurred If the Open statement for the unit specifies the noerror keyword then the program can check the value o
133. olumn repetition An in groups of phrase must be controlled by a for phrase The statement is ignored 1059 Name of an event required in this context The event process activates cause cancel break ties and priority statements must refer to an event or process name In the case of an event or process statement a routine named RO is assumed 1060 Misuse of suppression amid column repetition group The suppression phrase is misplaced 1061 Context requires a for phrase to follow the word printing The printing phrase is not properly programmed 1062 Column repetition context requires in groups of phrase The column repetition clause must include an in groups of phrase 1063 Column repetition group size is illegal The in groups of phrase specifies a 0 group size The compiler assumes a value of 1 in its subsequent error scan 1064 end statement required to terminate report heading The compiler assumes an end statement at this point 1065 end statement required to terminate report The compiler assumes an end statement at this point 1066 print 0 lines statement is ignored Subsequent error messages may refer to form lines 1067 Too few formats or too many expressions in print There must be a one to one correspondence between expressions and format specifications 1068 Set owner or member not defined A set name must appear in both an owns clause and a belongs clause to be defined Both the owns and the belongs clauses must precede
134. ommand Empty lines in a command file are ignored Commands from a command file are not remembered in the last command buffer However since empty commands that re execute the last command are still written to the command log file in full you will still get exactly the same behavior when reading a command file previously written as a command log Step Single step It executes the next n default 1 SIMSCRIPT source lines and then returns to the SimDebug dialog S steps in to routines when the next instruction is a routine call That is it stops on the first instruction in the called routine Specifying Repeat Index n After a single step command SimDebug will show you the next executable source line This is the source line that will be executed by the next S command When you specify a repeat index n you generally do not want to see the output of the n source lines executed However if you do you can enable the output for repeatable commands S N UP DN with SET OREPCMDS 1 Context Switch When a context switch occurs during a N or S or SR command a message is printed accordingly and the current simulation time is printed SET parname newvalue Set SimDebug Parameter Several aspects of SimDebug commands are controlled by parameters that you can change SET without arguments lists the values of all SimDebug parameters When a paremeter name parname is given you can change its value For example SET OREPCMDS 1 You
135. omplete evaluation on your computer There is no risk to you Training Courses Training courses in SIMSCRIPT III are scheduled on a recurring basis in the following locations San Diego California Washington D C On site instruction is available Contact CACI for details For information on free trials or training please contact the following CACTI Products Company 1455 Frazee Road suite 700 San Diego California 92108 Telephone 619 881 5806 www caciasl com Introduction As an aid to making important decisions the use of computer simulation has grown at an astonishing rate since its introduction Simulation is now used in manufacturing military nuclear applications models relating to urban growth hydroelectric planning transportation systems election redistricting cancer and tuberculosis studies hospital planning communications and multi computer networks SIMSCRIPT III is suitable for building high fidelity simulation models especially very large models SIMSCRIPT III modularity and object orientated concepts simplify development maintenance and code reuse SIMSCRIPT III is a language designed specifically for simulation It is the most efficient and effective program development technique for simulation due to the following properties e Portability SIMSCRIPT II development environment which includes Development Studio language compiler and Graphical systems are available on the various computer systems T
136. only have to type the first few letters of a SET parameter that make it unique 75 Simscript III User s Manual SimDebug SET parameters and their meanings n integer gt 0 m O or 1 defaults are given in SET WW n 5 WhereWidth Show n lines with W command 5 SET OREALF de a b OutRealFormat Output format for Reals Doubles They are output as de a b e g E 14 4 D 17 6 SET OREPCMDS m Show output from repeated commands n 1 or not 0 SET OREADCMDS m Show output from read commands n 1 or not 0 SET EXTINFO m Show extended information for pointer in mode field 1 SET GLOBWTRACE m Show global variables GLOB with trace command T 0 SET SHOWINTGL m m 1 Show internal global variables with GL 0 Internal global variables A I G are created by SIMSCRIPT and are in general not useful to see SET SCROLLINES n n gt 0 Output pauses after n lines Press Return to continue 0 SET SHOWARRAYPTRS m m 1 Show array mode information not as 2 dim integer array but as the internal pointers that implement this array 0 SET SHOWSTACKLEVELS m m 1 Show SLe the stack level in traceback 0 SET SHOWLIBRTNS m m 1 Show library routines in traceback 0 SET NAMECOMPLETION m m 1 Variable and routine names are automatically completed by SimDebug That is FP CU will follow the pointer that begins with CU In case of multiple matches you are offered a choice
137. ontain the word process Methods not declared as process methods must not be implemented as process 102 Appendix B Runtime Error Messages B 1 Runtime Error Messages When a runtime error is detected a runtime error message is written to standard error The text of each message appears below 2001 zero raised to a negative power 2003 negative number raised to a real power 2004 invalid I O unit The unit number is less than or greater than 99 2005 negative expression in SKIP INPUT statement 2006 attempt to file an entity in a set it is already in The M set attribute of an entity being FILEd in a set is not equal to zero 2007 attempt to file before or after an entity that is not in the set The M set attribute of the entity in the before or after phrase is equal to zero 2009 attempt to remove from an empty set The F set attribute is equal to zero when a remove operation is attempted 2010 attempt to remove an entity that is not in a set The M set attribute is equal to zero when a remove specific operation is attempted 2011 invalid random number stream The absolute value of the stream number is less than or greater than the number of random number streams normally 10 2013 attempt to schedule an event process already scheduled The m ev s attribute of the event process is not equal to zero when a schedule operation is attempted 2014 attempt to cancel an event process not scheduled The m ev s attribute of the event
138. or a new command Runtime Errors Even when you do not compile your program with the d option and you do not call your program with debug when SIMSCRIPT detects a run time error you are put into the SimDebug dialog You can then perform all SimDebug commands to inspect your program with one exception You cannot continue execution from floating point errors segment violations and bus errors When you do not want to enter the SimDebug dialog in case of a runtime error you can set the global system variable batchtrace v 1 This results in the traceback being written to simerr trc after which the program exits This is a change from the behavior of the previous release 1 9 where the traceback would always be output on the current output device according to write v However using the trace statement in your program will still write the traceback to the current output unit write v Instead of setting batchtrace v 1 in your program you can also call your program with the command line argument batchtrace This automatically sets batchtrace v 1 As with debug this command line argument will not be seen by your SIMSCRIPT program 58 If you want your program to exhibit the old traceback behavior and have a runtime error just write a traceback and then exit Compile your program with g and then execute with the option batchtrace The traceback will be written to simerr trc For further information see paragraph 4 4 1 Interruptin
139. or equality only 1171 Used as implicit subscript SIMSCRIPT II 5 is free format and allows for usage of implicit subscripts This increases the expressive power of the language but sometimes is error prone You can suppress implicit subscripts by using the SIMSCRIPT II 5 language statement suppress implicit subscripts The compiler will generate warning message 1171 whenever it detects implicit subscripts usage The scope of the suppress statement is global if used in a PREAMBLE or local if used in a routine Usage of implicit subscripts can be resumed by the statement resume implicit subscripts Any number of suppress resume statements are allowed in a routine 1172 Subscript should be pointer mode 1173 Attribute doesn t belong to subscript If a reference pointer is used as a subscript the compiler can detect when the attribute is unrelated to the reference type 1174 Mode of given variable does not belong to set An attempt was made to FILE or REMOVE from a set given a reference pointer that does not belong to the set 1175 Mode not specified A mode was not specified in a list of argument prototypes 1176 Mismatched number of dimensions in argument When passing an array argument to prototyped routine or method the number of dimensions defined in the prototype must exactly match the number of dimensions of the argument 1177 Mode of argument does not match prototype When passing an argument to prototyped routine or method the mode
140. outine you should not use these kinds of names 4 4 4 Displaying Arrays Before discussing SimDebug s array display capabilities we must discuss some background information Each SIMSCRIPT object that a pointer can point to such as arrays text or dynamic entities has a descriptor that contains information on what this object is and how to interpret the data For instance an entity descriptor contains the entity ID and an array contains the size of the array and the type of its elements This means that the FP follow pointer command can always follow a pointer to anything and display what it finds Apart from that SIMSCRIPT supports array equivalencing You can define an array IA for instance as a 1 dim integer array and then assign the pointer IA to a variable of type 1 dim alpha array AA and look at the data as characters The command PAV Print Array Variable looks at the array through the eyes of the array variable i e in the above example AA as alpha The command PDV Print from Descriptor Variable always looks at the array with the data 80 given in the descriptor It looks at how the array was first created and in the example above looks at the array as integer 4 4 5 Permanent Entities and System Owned Variables Sets Permanent entities are implemented as a set of 1 dimensional arrays that will appear as global arrays Use the GLOB command At this point the different fields of a permanent enti
141. pdated In SIMSCRIPT II 5 continuous attributes of a process are only updated while that process is suspended in a WAIT CONTINUOUSLY statement In SIMSCRIPT III continuous attributes are always updated Even if the process is suspended in some other way such as a discrete WAIT WORK statement In SIMSCRIPT II 5 an evaluate routine can be passed in the WAIT CONTINUOUSLY statement as a subprogram literal This routine is called frequently by the runtime library allowing the application to assign new values to the continuous attribute derivatives In SIMSCRIPT III the SystemOfEquations object can be subclassed and its evaluate method overridden Code for derivative evaluation should be placed in this overridden method Old code preamble processes every BALLISTIC has an X define X as a continuous double variable end routine EVALUATE RTN BALLISTIC let D X BALLISTIC end process BALLISTIC let D X 1200 work continuously evaluating EVALUATE RTN end New code preamble including the continuous m subsystem processes every BALLISTIC has an X define X as a continuous double variable 151 Simscript III User s Manual begin class Ballistic_Eq every Ballistic_Eq is a SystemOfEquations and overrides the Evaluate end end method Ballistic_Eq evaluate let D X BALLISTIC end process BALLISTIC let D X 1200 suspend end 152
142. pen An attempt is made to open a segment when there already is an open segment 2306 segment already closed An attempt is made to close a segment when there is no open segment 2307 segment does not exist 2308 invalid segment priority The segment priority is less than zero or greater than 255 2309 invalid POINTS argument The points array is unreserved or does not contain enough points 2310 form graph icon not found 110 Appendix C Standard SIMSCRIPT Ill Names Standard SIMSCRIPT III names are in the standard library m Library m is a special module subsystem that is implicitly imported by every preamble This module defines routines variables and constants which are accessible to every module These definitions may be accessed without qualification for example time v or with qualification for example library m time v The library m definitions are described in the sections of this chapter 1 Mode Conversion 2 Numeric Operations 3 Text Operations 4 Input Output 5 Random Number Generation 6 Simulation 7 Miscellaneous 111 Simscript III User s Manual C 1 Mode Conversion atot f alpha_arg A text function that returns a text value of length one containing alpha_arg as its only character For example atot f B converts an alpha B to a text B int f double_arg An integer function that returns the value obtained by rounding double_arg to the nearest integer If the argument is positive
143. per f caf returns CAFE 120 C 4 Input Output buffer v An integer variable that specifies the length of the buffer when the first use the buffer statement is executed Its default value is 132 efield f An integer function that returns the ending column number of the next value to be read by a free form read statement using the current input unit or returns zero if there are no more input values eof v An integer variable that specifies the action to take when an attempt is made to read data from the current input unit beyond the end of file If the value of the variable is zero which is the default the program is terminated with a runtime error However if the value of the variable is nonzero typically the program sets it to 1 the variable is assigned a value of 2 to indicate that end of file has been reached Each input unit has its own copy of this variable heading v A subprogram variable that specifies a routine to be called for each new page written to the current output unit when pagination is enabled lines v is greater than zero or contains zero which is the default if no routine is to be called The routine typically writes a page heading but may perform other tasks Each output unit has its own copy of this variable line v An integer variable that contains the number of the current line for the current output unit It is initialized to 1 If pagination is enabled lines v is
144. piled with the d compilation switch To start a program in debugging mode where you can set breakpoints etc the executable should be invoked with the debug option simc d prog sim o prog prog debug The debug option is internal to SIMSCRIPT and will not be seen by the user program A runtime error will automatically activate the debugger so that you can examine the current stack and variables that led to the error If the program was not compiled with the d option only a minimal set of debugging functions will be available If the program was compiled with the d option all debugger functions will be available An on line help command h will display a list of available debug commands and parameters See chapter 4 Compatibility switch for use with existing SIMSCRIPT II 5 models It will suppress warnings for deprecated functionality but the model will not have benefits of SIMSCRIPT III faster execution and handling of ranked sets This compiler switch is seldom used SIMSCRIPT III provides an interface toNON SIMSCRIPT and FORTRAN routines FORTRAN routines are invoked from SIMSCRIPT III programs without appending an underscore to the FORTRAN routine name In some computer environments this is necessary To generate calls with the appended underscore the SIMSCRIPT IHI compiler should be invoked with the optional compiler switch F For example simc F prog sim The compiler will provide a detailed traceback listing without
145. ported parameters are ignored 1138 Release routine statement no longer supported The statement is ignored 1139 Reset references variable not accumulated or tallyed Totals do not exist for a variable which has not been the object of an accumulate or tally statement 1140 Reset uses qualifier not declared as such Only a qualifier defined for an accumulated or tallyed statistic may be specified in a reset statement 1141 This statement not supported or no longer required 1142 Local variable used only once The indicated local variable appears only once in the routine This could be due to a typographical error 1143 Local variable never modified The indicated local variable has not been modified by the routine This means that its value is always zero or if a text variable This could be due to a typographical error 1144 Bad Block structure overlapping do and if 93 Simscript III User s Manual The statement violates SIMSCRIPT III s structured programming nesting rules by overlapping one of the following three control structures e do loop e if else endif e select case default endselect For example if the statement in error is a loop statement then an if block was not terminated by an endif or a select was not terminated by an endselect The error will also be seen when one block overlaps a portion of another block as in if do else loop endif 1145 Variable or function name req
146. r messages and warning messages to stderr Errors prevent the generation of object files warnings do not See Appendix A for a complete list of error 29 Simscript III User s Manual and warning messages that are issued by the compiler The sime command is used to invoke the SIMSCRIPT III compiler and linker Its general form is simc option file sim For example to compile and link a program consisting of a single source file named abc sim enter simc abc sim This command will compile the SIMSCRIPT source file abc sim reporting compilation errors and warnings to the terminal If the compilation is successful the object module abc o or abc obj will be linked producing an executable file named a out or a exe depending on a platform The SIMSCRIPT compiler options follow the same general format as many C compilers and other standard UNIX compilers The options available should be familiar to experienced programmers Below is a brief overview of a few of the most commonly used options c Do not link any object files after compilation d Enable SIMSCRIPT symbolic debugging e Compatibility switch for SIMSCRIPT II 5 programs I Specify path for imported public preambles Display a program listing o name When linking create an executable with the name provided v Compile the preamble as VERY OLD See below for more details w Do not report any compiler warnings w kk nn mm Do not report compiler warn
147. r the EVENTS section or was not used in a EVENTS INCLUDE statement 1205 Unknown process An event heading was found that was not declared in the preamble under the PROCESSES section or was not used in a PROCESSES INCLUDE statement 1206 Unknown class The class name used in a qualification or ina METHODS FOR statement was not declared in a BEGIN CLASS block 98 1207 Incompatible reference In a CREATE DESTROY statement the mode of reference variable appearing after CALLED must match the class or entity name appearing before CALLED 1208 Entity type or class not permitted in this statement The name of a process event or process method was expected 1209 Source code file could not be opened The error message will occur when attempting to import a module that cannot be found The source code file containing the public preamble of the imported module should be named after the module with sim appended 1210 Only one main module is allowed A second main module was found on the command line 1211 Redefinition of a system entity In SIMSCRIPT III predefined system entities cannot be modified through the every statement 1212 Word number mismatch for equivalent attributes If the IN WORD clause is used for two equivalent attributes the word numbers must match 1213 Name already specified in a priority order statement The same event process or process method cannot appear in more than one PRIORITY ORDER statement 1214 Comparison
148. racters beyond the record size specified for the unit 2030 formatted write goes beyond the end of output record An attempt is made to write characters beyond the record size specified for the unit 2032 negative field width in input format 2036 negative field width in output format 2040 mixed binary and character I O An I O operation allowed only on an ASCII file is attempted on a binary file or vice versa 2041 invalid character while reading C format A character is read which is not one of the following blank 0 9 A F or a f 2044 output format field width greater than record size 2048 input format field width greater than record size 104 2051 zero entity pointer The pointer used to identify a temporary entity is equal to zero 2052 reference to destroyed entity This error can be caused by keeping copies of an entity pointer in several variables destroying one copy and referencing attributes of another copy This error is detected by the runtime checking option If the option C is omitted a bus error may occur instead or bad values may enter a computation causing a delayed failure This is actually a special case of error 2053 invalid entity pointer It is not always possible to detect a destroyed entity since the memory may have been reused since it was destroyed If this is the case you will get error 2053 instead 2053 invalid entity pointer The pointer used to identify a temporary entity does not
149. ray element to share the same memory location For bit packing the bit location and number of bits that an attribute takes up in a 32 bit word can be specified Field packing allows the attribute to be assigned to individual bytes within the 32 bit word With intra packing each 32 bit word of an array can hold more than one element Packing specifications can usually be removed from the preamble without affecting the application However there are the following rare exceptions a Overlapped packing more than one variable needs to shares the same bits b Memory usage Packing used to save memory in an application where every bit is critical c Linking with other languages A specific entity structure is required bit for bit by part of the application written in a different language like C C d Packed attribute is written to a file whose format dictates that data elements are to be bit or field packed Old code temporary entities every TE has a FIELD PACK1 1 4 FIELD PACK2 2 4 FIELD PACK3 3 4 a BIT PACK1 1 8 BIT PACK2 9 16 the system has a INTRA PACKED 4 New code Temporary entities Every TE has a FIELD PACK1 FIELD PACK2 FIELD PACK3 BIT PACK1 BIT PACK2 oo 9 The system has a INTRA PACKED Attribute equivalencing 141 Simscript III User s Manual An individual entity attribute can be assigned multiple names using attribute equivalencing Equivalencing can be elimin
150. rence All compiler listings will appear in the status window and will be placed in the project_name lis file in the temp directory 1 6 Executing a Model After building the model executable is located in the project directory executable To run it use the menu option Project gt Execute This is the most common way to execute a model built in Release mode The directory executable will also contain graphics sg2 with graphical elements All input data necessary for a model run should be placed in this directory Projects built in Debug mode should be executed using Project gt Debug 1 6 1 Passing Command Line Arguments To pass command line arguments to the model or to redirect model output use the Command line text box of Project Options to write the command Project_name exe argl arg2 Here is an example of the redirection of output of the model ed106 exe to a file ed out 20 rr III executable v Figure 1 11 Defining command line for model execution 1 6 2 Running the Executable with the Symbolic Debugger If the executable was built in Debug mode it can either be executed using menu options Project gt Execute or Project gt Debug Project gt Debug will invoke the symbolic debugger and the user will be able to have full debugging control during execution like stepping setting break points and viewing model variables Chapter 4 of this manual explains all debugging commands and fa
151. roject directory a project_name sp file will be created to hold model information Three subdirectories will be created sources executable and temp sources will hold all the source files of your project You can keep all source files in one directory or organize them as a hierarchical structure of subdirectories If model is organized as a set of modules subsystems please see recommended source code organization section 1 3 3 executable will hold model executable project_name exe and graphics sg2 file which holds graphical elements used during model execution Input data files necessary for model execution should also be placed in this directory temp will hold object files necessary for model build and other temporary files Contents of this directory are not important to developers This project directory structure helps you during development and deployment of your model Subdirectory sources contains the current version of the model source code directory executable contains all components necessary for model execution Simstudio consists of a Menubar Toolbar and three windows The Project window is on the left Editor window on the right and Status window at the bottom Menu bar options File Project Options Window and Help facilitate creating a new project opening an existing project setting project options and building and executing the model 1 SIMSCRIPT III Simulation Studio calship3 File Edit Project Options
152. sesecseaenseaeseeeeseaeeeeaeaees 42 2 7 2 Make Description File FOriat cceccccecccesseseseseesesesenseceseseeeeseucecesesececaeneeaeseeeeeeaeeeeataees 43 2 7 3 Transformation RUTOS cee eee cc eeeccecceeesceescceesececscecsecesececssecessceessecessecesecetseeesecetseeesaecs 43 QA SPOCIAl NOLOS 53 cc cess sisi reach E casas dees OLS RCE EUR A 44 2 7 5 SampleMakeli E e E E E 44 2 8 OBTAINING ONLINE HELP inienn Se EAEE E EEEE E ER 46 2 9 EXAMPLE PROG M E E E r E 46 3 SIMSCRIPT TIT LANGUAGE CONSIDERATIONS eesssseessocccssecesssecssooeessoceessecesssecssoseesseceee 53 3 1 DATA TYPES MODES 3245550355053 225Ssehicsios E Cones bbe cote E wecosceubaeteebaoteeseavees escapees 53 3 2 NON SIMSCRIPT ROUTINES 0 ccccccccccccccccccccecececececeseseseeesesesesesesesesesssssscesessseusssseueussesseseanees 54 3 2 1 Calling C Routine Sse anaoa aaa eaaa a Ea S E a a ES 54 3 2 2 Calling FORTRAN POUutine S cccccccccsceseseseesesesesseceseseseescnseceseseseceeaeeceaeacseceeaeeeeaeeeeeeees 55 4 SIMDEBUG SYMBOLIC DEBUGGER eesssessseseessocecssececssecssccecssoceesseceessecsssoeessoceessecessscessoseesseceee 57 4 1 COMPILING FOR DEBUG AND INVOKING SIMDEBUG ccccccccccesecesesesecececesecesesesecsseseseeseessueeees 57 442 Gompiling Or Debug zi mesane eye eine ah RRR Hie A ORR ARTA RR ee 57 4132 ANVOKING SITIDO DUO arenema i e ae ART Mie REAR RENEE EER 58 AZA QUICK TOUR OF SIMDEBUG searen Baas a hee tei oi Reed
153. single step through the program for a while After each s command SimDebug shows the new current line that will be executed next Since an empty command repeats the last command we can simply press Return to repeat the singlestep If a line contains a routine call s will step into the routine whereas n will step over the routine After we have stepped enough we use the c command to continue the program until the next breakpoint SimDebug gt S 57 ATTRI LE I SimDebug gt no input repeat last command 58 ATTRP LE IARR2 I SimDebug gt 59 file LE in LISTSET SimDebug gt 60 loop SimDebug gt C continue execution BREAK User breakpoint MAIN sample sim Line 62 gt 62 call R1 3 2 SimDebug gt Is f lists source of current routine 44 main 45 define LE as pointer variable 46 define IARR as 1 dim integer array 47 define AARR as 1 dim alpha array 48 define IARR2 as 2 dim integer array 49 define I as integer variable 50 51 reserve IARR as 10 52 reserve IARR2 as 5 by 5 53 54 for I 1to5 55 do 56 create a LISTELEM called LE 57 ATTRI LE I 58 ATTRP LE IARR2 I 59 file LE in LISTSET 60 loop 61 gt 62 call R1 3 2 63 64 end 64 Conditional Breakpoints You can programmatically set conditional breakpoints on arbitrarily complex conditions by calling SimDebug itself See paragraph 4 4 6 4 2 3 Tour 3 Pointer Handling Entity
154. snsececesccscsesesssseeeceseeseeenenseaeees 8 FIGURE 1 4 CREATING A NEW FOLDER IN THE PROJECT TREE 00cscecscscssssssscscssssssesssssseees 9 FIGURE 1 5 PROJECT TREE WITH HIERARCHICAL ORGANIZATION OF SOURCE CODE 11 FIGURE 1 6 PROJECT TREE WITH SIMSCRIPT III SOURCE CODE WITH SUBSYSTEMG 12 FIGURE 1 7 ADDING A NEW ICON IN SIMSTUDIO ssseseseseeeseeeseseeeesseseseseeereseseeeresesesesesesess 14 FIGURE 1 8 SELECTING PROJECT OPTIONS 0 0ccccsssscssscscscssscseeeseseseeeaeseseecaeseseseeeeneeanees 17 FIGURE 1 9 SELECTING DEBUGGING OPTIONS IN SIMSTUDIO 0 0cccssssssscsssessssssssenssseees 18 FIGURE 1 10 SELECTING RELEASE OPTIONS IN SIMSTUDIO 0 ccccssssssssssssscsssssssssssseeees 19 FIGURE 1 11 DEFINING COMMAND LINE FOR MODEL EXECUTION 0ccscscssssssssssssssssesseees 21 FIGURE 1 12 SIMSCRIPT SYMBOLIC DEBUGGER WINDOW 0cccccscssssssssscsssssssssssssreseeees 22 FIGURE 1 13 SIMSTUDIO ON LINE HELP WINDOW 0 ccccccscscscssscscssesesessseceeeeseeseeeeeeenees 24 FIGURE 1 14 IMPORTING LIBRARIES AND OBJECTS FOR LINKING 0cccscssssscssssssscssesssseees 26 FIGURE 1 15 SELECTING IMPORTED LIBRARIES AND OBJECTS FOR LINKING 00cseeeeseeees 27 PREFACE This document contains information on CACI s new SIMSCRIPT II Modular Object Oriented Simulation Language designed as a superset of the widely used SIMSCRIPT II 5 system for building high fidelity simulation models It f
155. ssvecesossoscissecbecs sudonssscsedesasossscssesocseessvodsnssesssssvbsessossbcaesdecd osdbasdeossbeeesoesies 1 1 DEVELOPING SIMULATION MODELS WITH SIMSTUDIO csscccssssrccsssssccsssscccesscsece 3 1 1 SIMSTUDIO O VER VIEW issise couse secocssuvedeusvessvidaescetlsveseveciie vodaedh svvseddveceuesvesevedias vv dutschssucedtvedguessesetess 4 1 2 CREATING A NEW PROJECT cccccccccccccccccscsccccececesececesesesesesececesesesscesesesscesecesssseeesssssuesesessseusssneeaes 6 1 3 ADDING SOURCE CODE TO A PROJECT cccccccccccccccesccecesesecececesececesesesesssesssesessceseseseseseeeuseesseseenaes 7 1 3 1 Creating a New File with the Text EQCUutor c ccccscessssscesesseseseseeseseseeeceseeeesesceeeseneeeeaeaees 7 1 3 2 Adding a Directory or a File Using Project WinQOW ccccsseceseseesecetseseseeeeseseneeeeseaees 8 1 3 3 Adding Multiple Directories and FiOS ccc cescssecsseseseseeseseseseseseeeceeseseeseseeeceeseeeaeeees 11 1 3 4 Adding Graphical Elements to a ProjeCt cccceccccsceseseseesesesenseseseseeeeseneeseseeeeseseneeaeaees 13 1 4 OPENING AN EXISTING PROJECT eeestis reine e r e NEE E 14 1 5 BUILDING A PROJECT voere eeek eee ae aii E O e a e ATEEN EE N EEST 16 1 5 1 Building a Project for D DUQGING scsccsseseseseeseseseeseseseseeseseneeceseseeeeseneaeseeeeeeaeneataees 17 1 5 2 Building a Project for RElCASC eeccccececesseseseseeseseseneeseseseeeesenenseseseeecsenceaeseeeeseaeeeeaeaees
156. stograms may be requested for global variables system attributes and attributes of permanent entities 1105 Improper word boundary for a variable of mode double Certain systems the Gould and IBM mainframes among them require that all double precision floating point numbers be aligned on a double word boundary This requires that un subscripted double permanent attributes be assigned to odd numbered in array numbers and that double temporary attributes be assigned to odd in word numbers Other systems such as the VAX do not require such assignments but are compatible with them 1106 Multiple else statements not allowed on a if The language allows only one else statement Other diagnostic messages may indicate the prior if statement was not processed 1107 Then if statement after else obscure structure The then if construction is not permitted on a structured if Correct by explicitly using else and always statements as appropriate instead of using then if 1108 Else statement after then if obscure structure See message 1107 1109 A statement above this point is unreachable 91 Simscript III User s Manual An unlabeled statement or group of statements follows a return or an unconditional transfer This may be due to a missing label else or case statement 1110 Process not declared routine assumed The process routine has not been declared in the PREAMBLE 1111 This statement may appear only in a process 11
157. subscripted as the subscripts are treated as given arguments for the indirect call 1029 Attribute in first 8 words of process notice is illegal See message 1027 In addition a process notice contains the ipc a rsa a sta a and f rs s attributes 1030 Temporary attribute word number out of range The maximum permissible entity length is 1023 words Entities of this size should never be required 1031 Subscripts not permitted for this variable A variable defined as unsubscripted is used with a subscript 1032 Non integer subscript on a temporary attribute Temporary attribute subscripts must be pointers 1033 Negative constant used as a subscript This illegal condition cannot be compiled 1034 Subscript not permitted on label A label is used with a subscript in a go to statement or is defined as subscripted although it has already appeared without a subscript 1035 then if statement appears outside if The then keyword can only be used within an if block The compiler ignores the then word 1036 Missing in logical expression A possibly misplaced right parenthesis is assumed 1037 div f valid only with integer values A floating point division is performed 1038 Number of yielding arguments inconsistent with definition See message 1017 1039 Attribute of mixed compound entity must be a function Attributes of mixed compound entities compound of at least one permanent entity and at least one temporary entity must be funct
158. t The subroutine must be declared in the preamble define SUB as a nonsimscript routine When calling this subroutine the first argument should evaluate to integer since this is the SIMSCRIPT III mode which corresponds to the C type long The second argument must be a pointer to an integer This can be accomplished by passing a pointer to an integer array For example define IN ARG as an integer variable define OUT ARG as a 1 dim integer array write as Enter the input value read IN ARG reserve OUT ARG as 1 call sub IN ARG OUT ARG write OUT ARG 1 as The output value is I 10 Suppose we wish to call a function named FUNC which is written in C and has one argument long func inarg double inarg The declaration of the function in the preamble specifies the mode of the function define FUNC as an integer nonsimscript function Here is an example of a call to this function 54 define IN ARG as a double variable define RESULT as an integer variable write as Enter the input value read IN ARG let RESULT FUNC IN ARG write RESULT as The function result is I 10 It is very important that the SIMSCRIPT III mode of each argument and function matches its C type Here is a list of C types and the corresponding SIMSCRIPT III modes unsigned char alpha unsigned short integer2 shortsigned integer2 long integer float real double double If an argument is a pointer to a null terminate
159. t class LISTELEM 3 P LISTSET 0005C368 Ptr gt class LISTELEM M LISTSET 1 Integer2 00000001 SimDebug gt Pressing Return repeats last FP command Step through set Entity 2 0005C3A8 class LISTELEM ATTRI 3 Integer 00000003 ATTRA 00 hex Alpha 1 ATTRP 0005C308 Ptr gt Array 5 of Integer 2 S LISTSET 0005C3C8 Ptr gt class LISTELEM 3 P LISTSET 0005C388 Ptr gt class LISTELEM M LISTSET 1 Integer2 00000001 SimDebug gt fp 1 FP knows how to interpret pointers this is IARR 3 1 1 1 2 0 0 00000000 00000000 65 Simscript III User s Manual 1 3 0 00000000 1 4 0 00000000 1 5 0 00000000 This concludes our quick tour of SimDebug All commands are fully documented in paragraph 4 3 4 3 SimDebug Command Reference The SimDebug commands and their options are listed below in alphabetical order When commands have abbreviations the abbreviations are given on the next lines below the command To list each command with its optional arguments the following notation is employed CMD arg Command names and keywords are shown in UPPER CASE arguments are shown in lower case Optional arguments are enclosed in square brackets a b Alternatives are separated by the vertical slash For example LOG CMDS DIALOG START STOP CLOSE means that the LOG command can have no argument or can have one o
160. t be inherited by the object 1240 Set must be declared by an owns phrase of this class The set referenced in a BEFORE AFTER FILING REMOVING statement must be owned by the class containing the statement 1241 Set must be declared by an owns phrase of this module The set referenced in a BEFORE AFTER FILING REMOVING statement must be owned by an entity or the system within the module containing the statement 1242 Missing comment delimiter Multiple line comment delimiters and must be used in pairs 1243 Invalid assignment to a constant Constants cannot be used on the left side of an assignment statement 1244 Global class or local constant expected Some statements such as the CASE statement expect only numeric or predefined constants 1245 Use of a deprecated feature Some features of SIMSCRIPT II 5 have been deprecated in SIMSCRIPT III These features can still be used in practice but are no longer formally documented Passing 101 Simscript III User s Manual the w1245 option to simc will eliminate these warnings 1246 Duplicate definition or specification A name was used twice in the same list 1247 Use of a monitored variable in substring assignment Using the SUBSTR F call on the left while passing a left monitored text variable as an argument is not supported 1248 Invalid mode for statement A variable used within the statement was not of the expected mode Pointer integer mode interchangeability is not allowe
161. t routine with debug you will not be able to see the current line of execution or the local variables arguments You will only see the routine name An s single step command in a routine that was not compiled with debug will take you to the next line of code that was compiled with debug this may be several levels up in the calling hierarchy INTERRUPT during simulation When you press the INTERRUPT key while a simulation is running SimDebug may report the current line as the line that contains the start simulation statement This means that your program is in between the last and the next process event A single step command s will take you into the next line of the next process when you compiled that process routine with debug 67 Simscript III User s Manual DBn Continue Continues execution When there is no breakpoint set in the execution path the program runs until completion until a runtime error occurs or until you press Ctrl C to interrupt the running program Delete Breakpoint Deletes breakpoint n n is defined from the LB command DM addr type count DN n Display Memory For the rare cases where you might want to look at memory in an unstructured way e g for non SIMSCRIPT data the DM command allows you to view areas of memory as Hex values 4 bytes each as Integers 4 bytes Reals 4 bytes 4 Doubles 8 bytes or 40 characters 1byte each To display contiguous areas of memory you can use DM in
162. t the entire program Suppose 35 Simscript III User s Manual that the routine in file xyz sim has been modified If this routine does not require anything declared in the PREAMBLE then the following command can be used to re compile it simc c xyz sim If this routine does reference something declared in the PREAMBLE it is necessary to recompile the PREAMBLE along with it simc cv PREAMBLE sim xyz sim The v option is specified to avoid regenerating the scripted routines contained in the PREAMBLE o Subsystems When a program contains main module and a set of subsystems the subsystems can be compiled separately If the public preamble of the subsystem is modified the whole subsystem has to be recompiled Also all the subsystems which import this module have to be recompiled and subsequently re linked If only the private preamble of the subsystem is modified or the methods and routines of that subsystem are modified only the implementation part of the module subsystem has to be recompiled And the modules which import this subsystem have to be re linked 2 4 Linking If the c option is used to suppress linking the compiler generates object files which need to be linked Each of these files has a name that ends with o on Unix or obj on Windows platform The simid command is used to link a SIMSCRIPT III non graphical program Its general form is simld file o If there are any undefined references the name of e
163. te established by a prior call of origin r The argument must be nonnegative n ev S integer_arg An integer function that returns the number of process notices in ev s integer_arg The argument must be in the range to events v nday f double_arg An integer function that returns the day part of the number of days specified by double_arg which must be nonnegative origin r integer_arg1 integer_arg2 integer_arg3 A subroutine that establishes the specified date as the origin where month m equals integer_arg1 day d equals integer_arg2 and year y equals integer_arg3 The arguments must satisfy 1 lt m lt 12 1 lt d lt 3l and y 100 process v A pointer variable that contains the reference value of the process notice for the current process method or process routine during a simulation or zero if no process method or process routine is active time v A double variable that contains the current simulation time Its initial value is zero which corresponds to the start of the day of origin 131 Simscript III User s Manual weekday f double_arg An integer function that returns the weekday in the range to 7 representing Sunday through Saturday for the date that is double_arg days after the origin date If no origin date has been established by a prior call of origin r the origin is assumed to be a Sunday The argument must be nonnegative year f double_arg An integer fu
164. ter than zero 1232 Definition cannot be modified privately In some cases it is not permissible to modify the definition of a name in the private preamble 100 that was originally declared in the public preamble 1233 Argument list ignored when scheduling existing processes If a THE keyword is used in conjunction with the SCHEDULE statement arguments are not passed to the process or process method 1234 Implicit conversion of a reference variable A reference variable cannot be used in the same way as a generic pointer variable and cannot be used in any expression It must only point to an object or entity of the type 1235 Unsigned INTEGER4 bit 32 ignored under this architecture Currently the unsigned INTEGER4 mode is not supported on 32 bit platforms The SIGNED term can be used when defining a variable as INTEGER4 to get rid of this warning 1236 MAIN cannot appear inside a subsystem The MAIN routine can only appear in the Main module 1237 Invalid context for definition of a dummy variable A dummy variable cannot be defined here 1238 Invalid prototype for routine or method Prototypes and headings for routines and methods specified in a BEFORE AFTER statement are subject to restrictions since these routines are called automatically See the SIMSCRIPT II reference manual for a description of the arguments for these routines 1239 Invalid name for override of object method or attribute The name used in an override clause mus
165. tes preserving C files generated by the SIMSCRIPT compiler options Tl Produce C files OK Cancel If you check this option you will only generate C files If you want to build the model you should not check this option Libraries Facilitates linking executable with objects from additional objects or external libraries Press Move up Move down to change order of libraries and objects to be linked 25 Simscript III User s Manual I jj x SIMHOME defs quim window obj SIMHOME defs quim view obj E E Noosa Rei estas ol 5 uim popupmenu obj uim plot obj OEA E bj SIMHOME defs quim messagebox obj SIMHOME defs quim menubar obj SIMHOME defs quim markstyle obj SIMHOME defs quim linefont obj SIMHOME defs quim icon obj SIMHOME defs quim quiitem obj SIMHOME defs quim qui x obj SIMHOME defs quim qui m obj SIMHOME defs quim qui i obj SIMHOME defs quim graphic obj SIMHOME defs quim graph obj SIMHOME defs quim form obj SIMHOME defs quim field obj Figure 1 14 Importing libraries and objects for linking Press Add to select additional libraries and objects 26 iT x Look in E gum x Sie color obj i dialogbox e field obj F form obj a graph obj e graphic obj P gui i obj My Recent Documents F gui m obj gui x obj A quiitem obj j F icon obj e window obj a linefont obj My Computer j
166. th a subscript 1020 Name repeated in parameter list The names in the given arguments list or in the yielded arguments list may each appear only once in the list 1021 Undefined label This error is detected at the end of a routine 1022 do without a matching loop This error is detected at the end of a routine 1023 MAIN routine should use stop The MAIN routine should not use a return statement The compiler substitutes a stop statement 1024 Missing end The compiler supplies the end statement and completes the processing for the routine 1025 define to mean or substitute incomplete An end of file was encountered during the processing of a substitute statement or no substitutable text was found Blanks and comments are invalid substitutable text The statement is ignored 1026 Inappropriate mode or dimension for implicit subscript Due to local redefinition the mode or dimensionality for this implied subscript is inappropriate The compiler ignores the dimensionality but uses the new mode 1027 Attribute in first 5 words of event notice is illegal The first five words of an event notice contain the time a m ev s p ev S S ev s and eunit a attributes These attributes cannot be redefined The compiler ignores the specification 85 Simscript III User s Manual 1028 Context requires an un subscripted subprogram variable An indirect call to a function using the name feature requires that the subprogram variable name be un
167. th that name Name can be either a command name or a topic name such as breakpoints Both the command and topic names are given in the help overview TVO Information Shows information about the I O status of your program i e for each unit used whether it is input or output which file is attached if any how many records were read written etc Use the BUF command to look at buffer contents for units List Breakpoints Lists all currently defined breakpoints Disabled breakpoints see BPEN BPDIS appear in parentheses LOG CMDS DIALOG STOP START CLOSE logfilename Command and Dialog Logging You can have SimDebug write all commands or all of the dialog commands and SimDebug output to a log file Command and dialog logging cannot be active at the same time there is only one log file The variants of the command are the only arguments listed 70 without argument Show status of logging CMDS logfilename Start command logging Default file cmdlog log DIALOG logfilename Start dialog logging Default file dialog log STOP Stop current logging START Resume logging CLOSE Close current log file Allows you to start a new log command or dialog When command logging is turned on only the actual commands and not the SimDebug gt prompts are put into the log file As a special case LOG commands are not put into the command log since you generally do not want them when repeating the command sequence They are writt
168. the rounded value is computed by adding 0 5 to the argument and truncating the result If the argument is negative the value is obtained by subtracting 0 5 from the argument and truncating For example int f 3 5 returns 4 and int f 3 5 returns 4 itoa f integer_arg An alpha function that returns the character representation of integer_arg The argument must be in the range 0 to 9 The return value is in the range 0 to 9 itot f integer_arg A text function that returns the text representation of integer_arg For example itot f 100 returns 100 and itot f 5 returns 5 real f integer_arg A double function that returns the floating point representation of integer_arg For example real f 3 returns 3 0 trunc f double_arg An integer function that returns the value obtained by truncating double_arg to remove its fractional part For example trunc f 3 5 returns 3 and trunc f 3 5 returns 3 112 ttoa f text_arg An alpha function that returns the first character of text_arg or returns a blank if text_arg is the null string For example ttoa f yes returns y and ttoa f returns 113 Simscript III User s Manual C 2 Numeric Operations abs f numeric_arg A function that returns the absolute value of an integer or double argument If the argument is integer the function returns an integer result If the argument is double the function returns
169. the set definition 1069 Attributes of common set must be declared in an every statement The set pointers must appear in an every statement No attribute definition takes place 1070 Mode of quantity conflicts with automatic definition 88 The M or N attribute for a set or the N entity name for a permanent entity were explicitly defined with real mode They must be integer 1071 Number of subscripts conflicts with automatic definition The attributes of a set were explicitly defined with an incorrect dimension or the N entity name for a permanent entity was defined as a subscripted variable 1072 Explicit definition conflicts with automatic definition One of several conditions has appeared e The owner or member attributes of a set were explicitly defined and their definition conflicts with the owns or belongs clause for the set e The N entity name for a permanent entity is neither a global variable nor apermanent attribute of the system e The F name or S name of a random variable should be left for automatic definition 1073 Ranking attribute must be declared in an every statement The ranking attribute in the define Set statement is not an attribute of the member entity 1074 Illegal file statement for ranked set The file first file last file before and file after statements are not permitted on ranked sets 1075 Number of given arguments exceeds the maximum allowed The combined number of given and yielding arguments cannot
170. ty are not shown together e g with the entity name but appear separately in the alphabetical listing of all global variables The system owns variables and sets show up as global variables in alphabetical order 4 4 6 Conditional Breakpoints Certain problems only appear after a large amount of data has been processed For example after 10000 iterations in a loop To allow you to break the process and go into the debugger upon any arbitrarily complex condition SimDebug offers you a direct call to SIMDEBUG R When you call this routine from your application program you are put into the SimDebug dialog just as if you had set a breakpoint You can examine the stack global variables entities and single step through the program in the usual manner Example for i 1 to 10000 do do something if i gt 10000 and A B C gt DATTR ENTPTR call SIMDEBUG R endif loop 4 4 7 Continuous Variables Continuous variables for continuous simulation are implemented as right and left functions Therefore they will show as right and left routines in the LR command but not as variables WARNING Simdebug Recursion SimDebug protects itself from errors that normally cause a program to fail such as attempting to use a bad pointer or having unaligned accesses However 81 Simscript III User s Manual in some rare cases it can happen that SimDebug does not catch an error condition that then causes another error with
171. uired A non numeric quantity such as a set cannot be the object of a read print or list statement A statement such as list attributes of each entity in set may have been intended 1146 Assignment between incompatible data types Check the modes on both sides of the equal sign in an assignment let statement 1147 Implicit conversion of pointer variable The indicated variable must be either mode pointer or mode integer 1148 Name of a resource required The request and relinquish statements apply to resources only 1150 Multiple MAIN routines encountered Only one MAIN routine may be included in any compilation 1151 case control outside select endselect A case or default statement can be used only between a corresponding select endselect pair 1152 Mode of case term does not match select The mode of the term is incompatible with the mode of the select expression Some mode conversion is performed A real expression may include integer terms and both text and alpha expressions require string literal case terms If necessary assign the expression to a variable of the appropriate mode 1153 case term duplicates previous term s This term is unreachable because it is completely blocked by corresponding terms in an earlier case statement This message will not be given for select expressions with a mode of real double or text 1154 Statement not allowed after default The case or default statement is not valid within a se
172. ust specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate If n equals 1 the binomial distribution is the same as the Bernoulli distribution erlang f double_arg integer_arg1 integer_arg2 A double function that returns a nonnegative random number from the Erlang distribution having mean yw equal to double_arg shape parameter equal to integer_arg1 and scale parameter 2 equal to a where w gt 0O and a gt Q Integer_arg2 must specify a random a number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate exponential f double_arg integer_arg A double function that returns a nonnegative random number from the exponential distribution having mean yw equal to double_arg where u gt 0 Integer_arg must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate 125 Simscript III User s Manual gamma f double_arg1 double_arg2 integer_arg A double function that returns a nonnegative random number from the gamma distribution having mean yw equal to double_arg1 shape parameter equal to double_arg2 and scale parameter equal to ay where 4 gt 0 and a gt 0 Integer_arg a must specify a random number stream between 1 and dim f seed v or a negative stream number to generate the antithetic variate If a equals 1 the gamma
173. variables distinguished in the output for each routine are Given Arguments Yielded Arguments Local Variables and Saved Local Variables Given and yielded arguments appear in the order in which they were defined in the routine source code All other variables including the global variables appear in alphabetical order Each line that shows a variable has basically the same format VarName Variable name Value The value Pointers are shown as 8 hex digits Mode Mode information for that variable For pointers SimDebug shows where it points to which kind of entity array etc For integers we also show the value again as hex in To see the global variables type glob They are ordered by name and appear in the same format as the variables in the traceback SimDebug gt glob 1 DSPLY E null Pointer 2 F LISTSET 0005C368 Ptr gt class LISTELEM GLOBALD 0 Double GLOBALI 0 Integer 00000000 3 LISTELEM null Pointer 4 L LISTSET 0005C3E8 Ptr gt class LISTELEM N LISTSET 5 Integer2 00000005 60 Again we want to see where we are The w command shows us the context of the current line default 5 lines with a gt in front of the current line SimDebug gt W R1 sample sim Line 39 34 J A B 35 if A gt 0 36 call R1 A 1 B 37 else 3 38 write as B A gt 39 write B A as I 4 40 endif 41 end All these commands still apply to the current routine or th
174. veloped in the SIMSCRIPT II programming language is readable by the analyst familiar with the system under study e Support CACI provides SIMSCRIPT III software documentation training and technical support Model development services are also available from CACI 1 Developing Simulation Models with Simstudio Developing a SIMSCRIPT III model typically involves the following steps 1 Preparing one or more SIMSCRIPT III source files using a text editor Preparing graphical elements Icons Graphs Dialog boxes Menubars etc 3 Building the model creating the executable file checking for compilation or linking errors 4 Editing and re building the model as needed until there are no errors Executing the model 6 Debugging the model In case of errors during execution the model should be built with the debugging option and executed with the interactive SIMSCRIPT III symbolic debugger to examine the state of the model and find the cause of the error aah This development process can be done in the following two ways 1 Using SIMSCRIPT III Development Studio Simstudio or 2 Using Command line interface from cmd window Simstudio is an easy to use user friendly integrated programming development environment It is the Graphical User Interface GUI to the SIMSCRIPT II compiler syntax color coded text editor graphical editors automatic project builder and help system In Simstudio editing source files compiling and li
175. y a routine or a subprogram variable e Attempt to store in a random variable 1011 Illegal assignment target This error is caused by an illegal attempt to store information in a built in function Builtin functions include abs f div f int f real f mod f max f min f and all text related functions Except for substr f these functions cannot be used on the left hand side of assignment statements or as yielded arguments 1012 Array number out of range Application has more than 8000 variables and or permanent entities The maximum permissible array or word number for global variables or permanent attributes is 8000 Use of an array number larger than this is not permitted in this implementation 1013 Context requires routine name A routine statement uses an incorrect name or the name appearing is not a routine name 1014 return with not allowed here Event routines and left handed routines cannot return any values 84 1015 loop without a matching do The compiler ignores the loop statement 1016 Implied subscripting attempted on a common attribute Common attributes must be explicitly subscripted 1017 Number of given arguments inconsistent with definition A call or function reference uses a number of arguments different than that defined for the subject routine 1018 Multiple definition of label The label has been defined elsewhere in the routine 1019 Subscript required on label The label name was previously encountered wi
176. y recompiling those source files that have changed since the previous compilation can save much time This is accomplished by saving the object file for each source file Then when a source file is recompiled the new object file replaces the old and all of the object files can be relinked to create a new executable Linking all of the object files is much faster than compiling all of the source files Make takes this one step further It checks the modify time of each source file and only recompiles it if it is newer that its object file or the target executable This way only the 42 source files that need compiling are actually compiled The actual compilation and linking commands are specified in the makefile 2 7 2 Make Description File Format The descriptions in this section are simplified For a complete description of the file format see the documentation that came with your system Entries in a makefile are of the following form target1 target2 dependent lt tab gt command comments Items in square brackets are optional The lt tab gt must be a tab character Shell metacharacters such as and are expanded The entry is concluded with a blank line Makefiles can also contain simple macros Macros can be defined in the make command line or more commonly in the makefile The definition is simple a macro name an equal sign and the macro value An example is PREAMBLE Preamble sim

Download Pdf Manuals

image

Related Search

Related Contents

AGITATEUR VERTICAL BCI / BCA / BCR  Istruzioni per l`uso dell`IMPRESSA J7  Cisco Supervisor Desktop User Guide /CAD 8.5 for Unified CME  OWNER`S MANUAL  - Polaris Brasil    Samsung SFD-321B/LFHSE floppy drive  users manual  Yorkshare “Tools for Students” Overview  Conductivity pDS Manual  

Copyright © All rights reserved.
Failed to retrieve file