This website explains the EAS-E view of modeling and programming, and provides free software useful to those who adopt this view.

EAS-E stands for Entities, Attributes, Sets and Events. These concepts were introduced in 1962 in the SIMSCRIPT [I] "simulation programming language" developed at the RAND Corporation. SIMSCRIPT II, which appeared in 1968, was developed as a general purpose programming language that included a simulation capability. It was planned to also have database capabilities based on the Entity, Attribute, Set and Event view of system description. RAND developed and released SIMSCRIPT II including simulation capabilities but not including database capabilities. A few years later a database version of SIMSCRIPT II, called EAS-E, was developed at IBM’s T.J. Watson Research Center. We will refer to it as [TJW] EAS-E. It was a technical success, but IBM declined to release it as a product, presumably because IBM had just converted from its antiquated IMS to its new Relational database view with SQL front end.

An advanced version of SIMSCRIPT [I], called SIMSCRIPT I.5, and later an advanced version of SIMSCRIPT II, called SIMSCRIPT II.5, were developed by CACI. For many years these CACI versions of SIMSCRIPT were widely used to program a great variety of commercial and military simulators. CACI still sells and supports SIMSCRIPT II.5. However, it is priced well beyond the reach of individual PC users. (For further background, see Brief History)

This site aims to partly fill a gap due to the facts that [TJW] EAS-E is dead and SIMSCRIPT II.5 is prohibitively expensive except for large corporate and government (including military) simulation users. Specifically, this site includes pages which explain how to model a system (to be simulated or represented by a database) in EAS-E terms; how to implement such a system once thus represented; and how to use the free software presented here. We discuss these three topics briefly here and more extensively elsewhere in this site.

It might be simplest to describe Entities, Attributes, Sets and Events (i.e., EAS-E) as "programming constructs"; but it is more accurate to call them" modeling" constructs. When the EAS-E view was developed for SIMSCRIPT [I] it was common to have a division of labor, in the development of large simulation projects, between a "modeling team" that would decide the contents of the simulation model and a "programming team" that would implement it. The goal of SIMSCRIPT [I] was to allow the model to be specified in a convenient manner, then generate the simulator from this specification with as little as possible programming details. SIMSCRIPT [I] was not completely successful in meeting this goal, since some programming was required. It did succeed, however, in much reducing the programming required to go from modeling concepts to simulator. In particular, many modelers who would not have considered programming a complex simulator themselves before SIMSCRIPT found it convenient to do-it-themselves after SIMSCRIPT.

The SIMSCRIPT [I] programmer/modeler specified the names of entities, attributes and sets on the SIMSCRIPT [I] definition form. SIMSCRIPT II did away with the difinition form for logistics reasons. However, standard good procedure recommended that the modeler/programmer document the entity, attribute, set structure of his or her simulation or data base program with some similar tabular listing of the names of entities, attributes and sets together with other information. Such a tabulation is part of "seeing the world" in terms of EAS-E. See ILLLUSTRATIVE EAS for an example extracted from the actual EAS documentation of a complex applications system.

As noted above, it was planned that SIMSCRIPT II have both a simulation and data base EAS-E capability. SIMSCRIPT II with simulation capabilities was released by RAND and enhanced by CACI . [TJW]EAS-E was developed at the T.J. Watson Research Center but not released. The software presented here, in EAS-E CODE and documented in C++EAS-E MANUAL, is useful for programmers who wish to develop large RAM (e.g., simulation) programs in C++. Specifically it provides routines for efficiently filing, removing and finding entities in very large ranked (ordered) sets. It is hoped that similar database capabilities can be made available at some later date. We refer to the routines presented here as C++EAS-E.