18.10.2014 Views

SIMSCRIPT II.5 Programming Language

SIMSCRIPT II.5 Programming Language

SIMSCRIPT II.5 Programming Language

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Discrete Simulation Concepts<br />

time. A local saved variable is used in this routine to record the value of time.v, allowing an advance<br />

in time to be detected.<br />

preamble<br />

the system owns a SYNCH.SET<br />

and has a (XARR, YARR)<br />

define XARR as a 1-dimensional array monitored on the left<br />

define YARR as a 1-dimensional array<br />

temporary entities<br />

every MEMO has a VALUE and an INDEX<br />

and belongs to the SYNCH.SET<br />

define INDEX as an integer variable<br />

end<br />

main<br />

let between.v = 'SYNCH.RTN'<br />

.<br />

.<br />

start simulation<br />

end<br />

left routine XARR(SUBSCRIPT)<br />

define SUBSCRIPT as an integer variable<br />

enter with ASG.VAL<br />

create a MEMO<br />

let INDEX(MEMO) = SUBSCRIPT<br />

let VALUE(MEMO) = ASG.VAL<br />

file MEMO in SYNCH.SET<br />

return<br />

end<br />

routine SYNCH.RTN<br />

define SAV.TIME as a saved variable<br />

if SAV.TIME ne time.v<br />

let SAV.TIME = time.v<br />

for each MEMO in SYNCH.SET<br />

do<br />

remove MEMO from SYNCH.SET<br />

let YARR(INDEX(MEMO)) = ASG.VAL(MEMO)<br />

destroy MEMO<br />

loop<br />

always<br />

return<br />

end<br />

A statement such as let XARR(1) = XARR(1) + 1 does not appear to have any effect until simulation<br />

time advances. This example merely demonstrates the principle. It may be extended as required.<br />

237

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!