2' 'ư>HELPA\NhNN:l4CONTINUEhh(PAEXIT&%p=lHALTމPl4dSTEP 1r4߉lg STOP߉X^F%EFSTOP ,,OFFg^w@߉UxT߉WxOgp߉.OdAg|߉A|ŻOdgAModelsLocksimn.gpsLFeCFEOzhLzh2~hE(((((((((({\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern Courier New;}} {\colortbl\red0\green0\blue0;} \deflang1033\pard\tx1200\tx2400\tx4450\plain\f2\fs20 ; GPSS World Sample File - LOCKSIMN.GPS, by Gerard F. Cummings \par ********************************************************************** \par * Lock Simulation * \par * Time in Hours * \par ********************************************************************** \par * X$Uplimit = Number of barges to go up \par * X$Downlimit = Number of barges to go down \par * X$Upcount = Number of barges which have passed up \par * X$Downcount = Number of barges which have passed down \par RMULT 94521 \par Upbarge FUNCTION X$Upcount,D6 \par 1,.967/2,.767/3,.767/4,.767/5,.767/6,.767 \par Downbarge FUNCTION X$Downcount,D6 \par 1,.967/2,.767/3,.767/4,.767/5,.767/6,.767 \par Upq QTABLE Upq,.25,.25,20 \par Downq QTABLE Dnq,.25,.25,20 \par Upcount TABLE X$Upcount,2,2,20 \par Dncount TABLE X$Downcount,2,2,20 \par INITIAL X$Uplimit,6 ;No. of barges to go up \par INITIAL X$Downlimit,6 ;No. of barges to go down \par ********************************************************************** \par GENERATE 1.67,.5,.67 ;Up barge arrives \par QUEUE UPQ ;Join queue \par GATE LR Lock ;Gate for the lock \par SEIZE Lock ;Get the lock \par SAVEVALUE Upcount+,1 ;Accumulate up number \par DEPART Upq ;Depart the queue \par ADVANCE FN$Upbarge ;Time to service barge \par TEST GE X$Uplimit,X$Upcount,Swh1 ;Have enough passed? \par TEST NE Q$Upq,0,Swh1 ;Check if Upq is zero \par RELEASE Lock ;Free the lock \par TERMINATE \par ********************************************************************** \par Swh1 LOGIC S Lock ;Set lock the other way \par RELEASE Lock ;Free the lock \par TABULATE Upcount ;Record no. passed up \par SAVEVALUE Upcount,0 ;Set count to zero \par TERMINATE \par ********************************************************************** \par GENERATE 1.67,.5,1 ;Arrival of down barge \par QUEUE Dnq ;Enter queue \par GATE LS Lock ;Is lock set? \par SEIZE Lock ;Get the lock \par SAVEVALUE Downcount+,1 ;Accumulate down count \par DEPART Dnq ;Depart the queue \par ADVANCE FN$Downbarge ;Time for down barge \par TEST GE X$Downlimit,X$Downcount,Swh2 ;Down count reached? \par TEST NE Q$Dnq,0,Swh2 ;Any down barges left? \par RELEASE Lock ;Free the lock \par TERMINATE \par ********************************************************************** \par Swh2 LOGIC R Lock ;Set lock for other way \par RELEASE Lock ;Free the lock \par TABULATE Dncount ;Record down count \par SAVEVALUE Downcount,0 ;Reset down count to zero \par TERMINATE \par ********************************************************************** \par GENERATE 24 ;One xact per day \par TERMINATE 1 ;One day has passed \par \par \par }