GPSS

This division was heavily involved with research into the design of teleprocessing systems, trying to achieve an economic balance of the use of computer resources and shared lines between server terminals.

[2] Between the winter and summer of 1961, a group of three programmers (including Gordon) rewrote the simulation system with a new algorithm and new block types.

It was officially released as a supported IBM-label program on September 27, 1961 with 25 block types.

It includes scripting with PLUS (a Pascal-like language), graphical system state displays, graphing, and optimization experiments.

Simulations have Transaction entry points through the GENERATE command, such as a customer walking into a store.

Then, actions are performed through claiming Facilities/Storage (like a cashier), waiting, saving statistics, etc.

Blocks can be facility-oriented (such as machines in a job shop) or transaction-oriented (such parts of work-in-process, signals in electronic components or documents in a bureaucratic procedure).

Computational entities, like Ampervariables (variables), Functions and random generators are used to represent the state of Transactions or elements of their environment.

The optional argument decrements the completion counter, which is a variable that is chosen by the user when running the simulation.

The "program" is comprised between the SIMULATE and END statements, and is divided into "model segments" and "control cards".

The GENERATE block creates a flow of Transactions and schedules them to enter the model with an inter-arrival time uniformly distributed over the range 18±6.

It is the programmer's responsibility to interpret these transaction as customers and to understand that the time is to be counted in minutes.

They can model operators, like a barber, a repairman, an agent, but also pieces of equipment, like a crane, a gas station, an authorization document, etc., in fact anything with capacity one.

To simulate multiple parallel servers, like a team of five barbers, or an oven with a capacity of 10, GPSS uses entities named STORAGEs.

After a customer seizes Joe, she proceeds to the next statement which is ADVANCE 16,4, whose task is to freeze the entity for a prescribed length of time, here a random number picked between 16-4=12 and 16+4=20mn.

After the prescribed time, the customer will wake up, proceed to the next statement, which will free Joe, and TERMINATE.

Then the next transaction on the previous block, that is a customer sitting on a chair, will be able to SEIZE Joe.

To select the "next" transaction, GPSS uses the first-come first-served basis, with priority.

Other selection policies can be programmed by direct manipulation of the future event chain entity.

This time, the TERMINATE as a parameter of 1, meaning a special counter is decreased by 1.

Incidentally, Joe was cutting the hair of customer number 26 when the simulation was closed.

No programming provisions were taken for the barber to finish the hair cut before closing the shop.