Está en la página 1de 154

CAPITULO 1

INTRODUCCION

Introduccin a la simulacin
Muchas veces habremos odo la palabra simulacin sin entender plenamente su significado. Una definicin formal podra ser: "La prctica de generar modelos para representar un sistema del mundo real o hipotticos mundos futuros, experimentando con l para explicar el comportamiento del sistema, mejorar su funcionamiento o disear nuevos sistemas con caractersticas deseables". Tras esta definicin encontramos una actividad que, de una manera no profesional, todos realizamos da a da. Cuando realizamos cualquier accin, normalmente la simulamos anteriormente de una forma mental como cuando movemos un mueble en una habitacin. Antes nos imaginaremos el movimiento del mueble y cules sern las acciones mejores para realizar este movimiento. Pues esta accin tan habitual es lo que llamamos simulacin. Su utilizacin a nivel profesional se viene realizando desde hace aproximadamente medio siglo, auspiciado por el crecimiento de los ordenadores, y ha ido creciendo con el paso de los aos, llegando a convertirse en una herramienta de uso fundamental en la industria e investigacin, por una serie de ventajas frente a otros mtodos tradicionales que enumeraremos ms adelante. Conviene precisar que la simulacin no se restringe al uso de computadoras, y se puede aplicar de muchos modos, aunque el uso de stas es el principal. Es mucho ms sencillo y econmico reproducir en un ordenador distintos fenmenos, tales como fenmenos fsicos asociados al vuelo de una avin, y realizar la simulacin en una computadora. De todos modos, la simulacin va unida fielmente al desarrollo de las otras ciencias, y no es posible simular aquello que no se puede estudiar adecuadamente, de modo que en algunas situaciones la simulacin no es una situacin posible. Por otro lado, debemos tener en cuenta que los sistemas simulados son de Entrada-Salida. Estos sistemas nos darn una salida para unos datos iniciales que nosotros debemos suministrar. Por ello son incapaces de generar una solucin por s mismos. Slo pueden servir como herramienta para el anlisis del comportamiento de un sistema en condiciones especificadas por el experimentador.

Sistemas, Modelos y Simulacin


En el mundo actual, tanto en el rea de los negocios, como en la industria y el gobierno, los proyectos en gran escala y de gran complejidad son la regla y no la excepcin. Estos proyectos complejos requieren estudios previos a su construccin o modificacin, denominados estudios pilotos. Tales estudios pilotos se realizan utilizando la tcnica de la modelizacin: construccin de modelos donde se realiza el estudio con el fin de obtener conclusiones aplicables al sistema real. Construido el modelo, el proceso de ensayar en l una alternativa se llama simular. El conjunto de alternativas que se definen para su ensayo constituye la estrategia de la simulacin. Los objetivos del proyecto definen cul es el sistema y cul el medio ambiente que lo rodea. El sistema procurar satisfacer las necesidades cambiantes de ese medio ambiente en el que est insertado. Cada nuevo sistema lo modifica y crea en l nuevas necesidades. El sistema, para poder subsistir, debe adaptarse a los cambios. Uno de los objetivos de la simulacin es realizar ensayos de cambios en el sistema probndolos en el modelo, con el fin de elegir la mejor alternativa, y as enfrentar mejor a una realidad que vara da a da.

Sistema
Pueden darse varias definiciones de sistema: ! ! ! ! "Conjunto de elementos cuya interaccin interesa estudiar". "Conjunto de elementos que interactan entre s, con un fin comn, que se asla del universo para su estudio ". "Conjunto de partes organizado funcionalmente de manera tal de constituir una unidad interconectada". "Combinacin de elementos o componentes interrelacionados entre si y con el global que actan juntos para obtener un fin".

La palabra interrelacin es el fundamento de la definicin.

Subsistema:
Es un conjunto que se asla dentro del sistema. El sistema puede verse como un subsistema del Universo. Cada subsistema puede ser tratado dentro del sistema o estudiado en forma aislada. El comportamiento del sistema total depende de: 1.- El comportamiento de cada subsistema. 2.- Las relaciones entre los subsistemas. 3.- Las relaciones con el mundo exterior, o sea, con el medio ambiente que lo circunda. Estas ideas son fundamentales para la resolucin de problemas que implican la construccin de modelos.

Clasificacin de Sistemas:
Generalmente los sistemas se clasifican en funcin de su estado. Definimos como estado de un sistema para un momento de tiempo al valor de un conjunto de variables que definen al sistema en dicho momento de tiempo. Segn esto el sistema podr ser esttico o dinmico. Entendemos por sistema esttico aquel cuyos valores no cambian con el tiempo. Por tanto, dinmico ser aquel cuyos valores varen con el tiempo. Esta variacin puede ser cclica, puede ser aleatoria. Eso nos dar lugar a una nueva subdivisin dentro de los sistemas dinmicos. Esta clasificacin se realiza en funcin al tipo de variables que conforman el sistema. Segn este criterio existirn tres tipos de sistemas dinmicos: los continuos, los discretos y los hbridos, en los que las variables pueden ser tanto continuas como discretas. Entendemos por sistema continuo aquel cuyas variables varan de forma continua en el tiempo. Un sistema dinmico se considerar discreto cuando las variables que le describen varen de una forma discreta sobre el tiempo. Nunca hay fracciones, siempre se habla de unidades enteras. En general, gran parte de los sistemas asociados a fbricas son sistemas discretos. Un sistema en el que sus variables varen unas de forma discreta y otras de forma continua se considerar un sistema hbrido. Otro concepto a tener en cuenta dentro del comportamiento de los sistemas dinmicos es si se encuentra

en estado transitorio o estacionario. Diremos que un sistema se encuentra en un estado estacionario cuando los cambios que se produzcan en el estado del sistema en el tiempo lo hagan dentro de un intervalo relativamente fijo. Un estado transitorio es aquel en el que se producen cambios bruscos en el estado del sistema.

Modelo
Definicin:
Anteriormente hemos mencionado que un sistema es una seccin de la realidad que es el foco primario de nuestro estudio. De cara a estudiar este sistema. Primero deberemos realizar una representacin del sistema. A esta representacin es lo que denominamos modelo. Dicho de otra manera, realizaremos una abstraccin del sistema que nos sea til de cara a estudiar su comportamiento. La simulacin de sistemas implica la construccin de modelos. El objetivo es averiguar qu pasara en el sistema si acontecieran determinadas hiptesis. Desde muy antiguo la humanidad ha intentado adivinar el futuro. Ha querido conocer qu va a pasar cuando suceda un determinado hecho histrico. La simulacin ofrece, sobre bases ciertas, esa prediccin del futuro, condicionada a supuestos previos. Para ello se construyen los modelos, normalmente una simplificacin de la realidad. Surgen de un anlisis de todas las variables intervinientes en el sistema y de las relaciones que se descubren existen entre ellas. Entrada Correspondencia Entrada

Parmetros

Sistema

Correspondencia

Modelo

Parmetros

Inferencia Salida Salida

A medida que avanza el estudio del sistema se incrementa el entendimiento que el analista tiene del modelo y ayuda a crear modelos ms cercanos a la realidad. En el modelo se estudian los hechos salientes del sistema o proyecto. Se hace una abstraccin de la realidad, representndose el sistema/proyecto en un modelo. El modelo que se construye debe tener en cuenta todos los detalles que interesan en el estudio para que realmente represente al sistema real (Modelo vlido). Por razones de simplicidad deben eliminarse aquellos detalles que no interesan y que lo complicaran innecesariamente. Se requiere pues, que el modelo sea una fiel representacin del sistema real. No obstante, el modelo no tiene porqu ser una rplica de aquel. Consiste en una descripcin del sistema, junto con un conjunto de reglas que lo gobiernan. Dado un sistema, son muchas las representaciones que se pueden hacer de l. Depende de las facetas del sistema que interesan en el estudio, de la herramienta que se utiliza en el mismo e incluso de la modalidad personal del que lo construye. En los modelos deben estar identificadas perfectamente las entidades intervinientes y sus atributos. Las mismas pueden ser permanentes (Ej.: empleados atendiendo) o transitorias (Ej.: clientes). Las acciones provocan cambios de estado, es decir, se modifican los atributos de las entidades; se producen los eventos.

Clasificacin de modelos: Existen mltiples tipos de modelos para representar la realidad. Algunos de ellos son: 1.- Dinmicos: utilizados para representar sistemas cuyo estado vara con el tiempo. 2.- Estticos: utilizados para representar sistemas cuyo estado es invariable a travs del tiempo. 3.- Matemticos: representan la realidad en forma abstracta de muy diversas maneras. 4.- Fsicos: son aquellos en que la realidad es representada por algo tangible, construido en escala o que por lo menos se comporta en forma anloga a esa realidad (maquetas, prototipos, modelos analgicos, etc.). 5.- Analticos: la realidad se representa por frmulas matemticas. Estudiar el sistema consiste en operar con esas frmulas matemticas (resolucin de ecuaciones). 6.- Numricos: se tiene el comportamiento numrico de las variables intervinientes. No se obtiene ninguna solucin analtica. 7.- Continuos: representan sistemas cuyos cambios de estado son graduales. Las variables intervinientes son continuas. 8.- Discretos: representan sistemas cuyos cambios de estado son de a saltos. Las variables varan en forma discontinua. 9.- Determinsticos: son modelos cuya solucin para determinadas soluciones es nica y siempre la misma. 10.- Estocsticos: representan sistemas donde los hechos suceden al azar, lo cual no es repetitivo. No se puede asegurar cules acciones ocurren en un determinado instante. Se conoce la probabilidad de ocurrencia y su distribucin probabilstica. Es interesante destacar que algunas veces los modelos y los sistemas no pertenecen al mismo tipo.

Validacin de modelos:
Cualquier modelo no es vlido para representar un sistema. Deberemos utilizar un mtodo que nos permita averiguar cuan parecido es nuestro modelo a la realidad de cara a evitar lamentables errores que puedan echar a perder nuestra simulacin. Aqu es donde debemos darnos cuenta de la importancia del modelo. Cualquier valor que obtengamos ser nulo si el modelo no se comporta como el sistema. De hecho, esta es la parte ms complicada y tediosa del proceso de simulacin. Es ms, algunos sistemas extremadamente complicados son muy difciles de modelar y los cientficos pueden tardar aos en conseguir un modelo, que en muchos casos slo es vlido para un pequeo rango de valores.

Simulacin
Tras haber estudiado con detenimiento qu es un sistema y cmo se modela, llegamos a la parte que ms nos interesa: la simulacin. Esta es realmente la que usa el ordenador como herramienta principal y es la que vamos ha intentar desarrollar. Una definicin ms acadmica de la simulacin sera: "Es la tcnica de construir y poner en funcionamiento el modelo de un sistema real con la intencin de estudiar su comportamiento sin irrumpir en el entorno del sistema real" (Koskossidis y Brennan). La simulacin nicamente nos dar una lista de valores para las variables que definen el estado del sistema. El uso posterior de esos datos ya no pertenece al proceso. Una vez construido el modelo, se ensaya en l una alternativa con el fin de aplicar las conclusiones al sistema. Los resultados obtenidos no tienen valor si no son aplicables al sistema. La simulacin tiene como principal objetivo la prediccin, es decir, puede mostrar lo que suceder en un sistema real cuando se realicen determinados cambios bajo determinadas condiciones. La simulacin se emplea slo cuando no existe otra tcnica que permita encarar la resolucin de un problema. Siempre es preferible emplear una alternativa analtica antes que simular. Ello no implica que una opcin sea superior a otra, sino que los campos de accin no son los mismos. Mediante la simulacin se han podido estudiar problemas y alcanzar soluciones que de otra manera hubieran resultado inaccesibles.

Causas de fracaso de una simulacin:


La simulacin puede fracasar por: ! ! Modelo invlido: no representa fielmente al sistema en estudio. Mala estrategia en la seleccin de alternativas: al aconsejar la mejor se aconseja la "menos mala" que est lejos de la mejor.

Muchos casos en los que hay concordancia entre el comportamiento del modelo y el sistema real no aseguran la validez del modelo; basta un solo caso en que el modelo no se comporta como el sistema real para afirmar que el modelo es invlido. La simulacin involucra dos facetas: 1.- Construir el modelo. 2.- Ensayar diversas alternativas con el fin de elegir y adoptar la mejor en el sistema real, procurando que sea la ptima o que por lo menos sea lo suficientemente aproximada.

Fases que comprende todo estudio que utiliza la simulacin. 1.- Definicin del sistema con el mximo de detalle.
Se debe evitar comenzar a trabajar en la construccin del modelo con un sistema superficial, mal concebido. !Se perdern horas hombre y de computadora en tareas intiles!. Es un principio comprobado de organizacin que la incidencia de un error en un proyecto aumenta dramticamente con el instante en que se lo descubre. Es decir, cuanto ms se demora en detectarlo, mucho ms complicada es su correccin. Se debe discutir en detalle el sistema; analista y usuario reunidos durante largas horas evitarn que el sistema tenga que ser redefinido despus. En esta etapa se definen los lmites del sistema y los objetivos del estudio, chequeando que estos no cambien durante el desarrollo del mismo. Deben tenerse en cuenta las condiciones iniciales del sistema y sus condiciones de rgimen. Interesa estudiarlo ya en rgimen y no inicialmente cuando los recursos estn desocupados y favorecen el movimiento de los elementos por el sistema. El modelo debe considerar qu resultados estadsticos interesan obtenerse para evaluar correctamente al sistema en estudio.

2.- Eleccin del mtodo para realizar el estudio.


- Bsqueda de la herramienta analtica de resolucin. - Adopcin de la misma en caso de encontrarla. - Utilizacin de la simulacin como ltima alternativa.

3.- Variables a incluir en el modelo.


Qu variables y parmetros se incluyen? Cules se desprecian por su irrelevancia? La eleccin no es sencilla. Conviene hacer un ranking de las variables y restricciones del sistema en orden de importancia. Este ranking debe ser discutido con el usuario y con los distintos especialistas a fin de proceder a su verificacin y eventual correccin. Se debe recordar que quitar una variable superflua de un sistema es algo bastante sencillo, mientras que incluir una que se haba despreciado es de ordinario mucho ms complicado. Tomar debida cuenta de los casos especiales: !muchas veces stos obligan a tener en cuenta variables despreciables para el resto de los casos!. Esta seleccin de variables a considerar depende de la mecnica con que se maneja el sistema, de la experiencia que se tenga de l e incluso de la intuicin del grupo humano que interviene en el estudio. Se debe evitar una sobresimplificacin que invalida al modelo en cuanto se lo quiere ensayar con casos especiales, o una sobreespecificacin que hace largo y difcil el trabajo de construir el modelo. Todas las variables que intervienen en un modelo son medibles. No siempre es posible lo mismo con las que intervienen en un sistema real.

Muchas veces se debe hacer una estimacin de las mismas con el fin de incorporarlas en el modelo. Existen variables endgenas (internas y controladas por el sistema) y exgenas (externas al sistema y fuera de su control). Existen variables cualitativas, como la preferencia personal, y cuantitativas, como la frecuencia con que arriban los clientes a un banco. Todas deben ser estimadas en trminos cuantitativos.

4.- Recoleccin y anlisis de los datos del sistema.


Definidas las variables intervinientes en el sistema es habitual que existan muchas variables estocsticas. Para esas variables se debe disponer de: ! ! ! La densidad de probabilidad o La funcin de distribucin acumulativa en forma matemtica o Una tabla de valores del comportamiento de la variable.

Se utiliza para ello todas las herramientas estadsticas clsicas, tales como, anlisis de regresin, de serie de tiempos y de varianzas. Se debe hacer un relevamiento del tiempo que se insume en las distintas tareas tratando de no obtener datos distorsionados producto de la medicin (la persona trabaja ms rpido o ms lento debido a que lo estn midiendo y le parece ms conveniente mostrarse en forma distorsionada). Si se tiene el valor medio de la medicin y no se conoce su distribucin, es preferible adoptar una distribucin exponencial que una uniforme, pues en la primera, pueden darse situaciones crticas que no se dan en la segunda. El tiempo empleado validando los datos de entrada est totalmente justificado y es absolutamente necesario para construir un modelo vlido sobre el cual se pueden sacar conclusiones aplicables al sistema real.

5.- Definicin de la estructura del modelo.


Se definen: ! ! ! Las entidades permanentes y sus atributos, es decir, los recursos con que se cuenta en el sistema y cuantitativamente cmo es su comportamiento. Las entidades transitorias que circulan por el modelo tienen definida probabilsticamente su ruta por el sistema y los tiempos de utilizacin de los recursos. Los eventos que provocan los cambios de estado, modificando los atributos de las entidades.

Se debe disear el modelo de manera que los cambios en su estructura estn en cierto modo previstos.

6.- Programacin del modelo.


Objetivo: obtencin del programa de computadora que representa el modelo.

10

Se debe elegir el lenguaje con que se construir el modelo. Una vez elegido, se lo utiliza para construir el modelo, que debe representar fielmente todo lo que ha sido relevado del sistema.

7.- Validacin del modelo.


Aunque imposible de demostrar rigurosamente se trata de verificar al modelo con una serie de situaciones conocidas como para tener un alto grado de confiabilidad.

8.- Anlisis y crtica de los resultados.


Paso previo a la entrega de resultados al usuario se debe: ! ! ! Verificar que los resultados obtenidos sean realmente suficientes para tomar una correcta decisin. Hacer una buena compactacin en la presentacin de los mismos procurando que sean perfectamente comprensibles para el usuario. Recordar que un exceso de informacin ocasiona casi los mismos inconvenientes que la falta de informacin, ya que el usuario en ambos casos no puede acceder a los resultados que necesita como apoyo a la toma de decisiones. Estudiar la factibilidad, y, en caso afirmativo, proponer una alternativa que signifique un cambio estructural del sistema y por ende del modelo, la que se considera digna de tener en cuenta antes de tomar una decisin definitiva.

11

Ventajas de la Simulacin
El hecho de que no siempre se puede aplicar la tcnica de la simulacin y su uso no produzca una solucin analtica, nos sugiere una pregunta: cundo es til la utilizacin de la simulacin ?. En general, nos ser til siempre que nos sea ms barato y ms fcil que la realizacin del experimento sobre el sistema real, bien sea porque el experimento exige parar el sistema, no existen herramientas analticas para desarrollar una solucin o porque alguna de la condicin a reproducir es difcil de conseguir. En general, las ventajas que presenta la simulacin son las siguientes: ! ! ! Permite, de una forma econmica representar y estudiar prcticamente cualquier sistema, dentro de categoras cientficas muy diferentes. El experimento se puede repetir tantas veces como sea necesario sin un gran coste adicional. Permite jugar con el tiempo de forma totalmente imposible para un experimento tradicional. Permite adquirir una rpida experiencia a muy bajo costo y sin riesgos. No se compromete la confiabilidad del sistema en los ensayos (las aglomeraciones, las largas demoras, son simuladas y no reales). Permite identificar en un sistema complejo aquellas reas con problema ("cuellos de botella"). Permite un estudio sistemtico de alternativas (variaciones uniformes en los parmetros intervinientes imposibles de lograr en un sistema real). Permite utilizarse en "training" para gerentes/ejecutivos. Un modelo de "juego de empresas" les permite probar sus medidas en el modelo y ver sus resultados luego de pasado el perodo simulado. Se repite el proceso durante varios perodos y cada ejecutivo observa los resultados de sus decisiones. Se analizan errores, se comparan estrategias hallando ventajas y desventajas de cada una. Ensayar estrategias de guerra, faceta donde primero se emple la simulacin. Permite explorar infinidad de alternativas para un problema sin modificar el funcionamiento del mismo, caso de una fbrica. Podramos redisear el Layout sin necesidad de pararla y, de este modo, perder ingresos. No tiene lmite en cuanto a complejidad. Cuando la introduccin de elementos estocsticos hace imposible un planteo analtico surge la modelizacin como nico medio de atacar el problema. Todo sistema, por complejo que sea, puede ser modelizado, y sobre ese modelo es posible ensayar alternativas. Puede ser aplicada para diseo de sistemas nuevos en los cuales se quieren comparar alternativas muy diversas surgidas de utilizacin de diferentes tecnologas. Puede utilizarse, durante la vida de un sistema, para probar modificaciones antes que stas se implementen.

! ! !

! !

12

Desventajas de la Simulacin
Pero no todo es bueno dentro de la simulacin. Si tenemos fe ciega en ella podremos encontrarnos con problemas indeseables. Por ello es importante tener en cuenta sus inconvenientes: ! No se la debe utilizar cuando existan tcnicas analticas que permitan plantear, resolver y optimizar todo el sistema o alguna parte del mismo. Existe un gran deseo de incluir todo en la simulacin donde los resultados son visibles y comprendidos por todas las personas (especialistas o no), las cuales gustan hacer ensayos. No es posible asegurar que el modelo sea vlido: se corre el riesgo de tomar medidas errneas basadas en aplicar conclusiones falsas obtenidas mediante un modelo que no representa la realidad. No existe criterio cientfico de seleccin de alternativas a simular (estrategia). Es posible omitir alguna buena sugerencia de innovacin simplemente porque a nadie se le ocurri ensayarla. Existe el riesgo de utilizar un modelo fuera de los lmites para el cual fue construido, queriendo realizar ensayos para los cuales el modelo no es vlido. Es posible elaborar todo un gran andamiaje de pruebas y resultados falsos, basados en un modelo confiable y vlido bajo otras condiciones. El desarrollo de un buen modelo de simulacin es costoso requiere de mucho tiempo.

! ! !

! La simulacin es imprecisa y no podemos medir con exactitud el grado de imprecisin.

13

Tcnicas, mtodos y herramientas de simulacin


A continuacin se detallan algunos de los distintos conceptos, tcnicas, mtodos y herramientas que se utilizan hoy en da para realizar simulaciones.

Herramientas de simulacin.
Realizado el programa que representa el sistema que se quiere estudiar, ensayar alternativas no es otra cosa que dar los datos a la mquina para que esta imprima los resultados. 1. Programas de uso general.

Programacin tradicional: C, Pascal, Fortran, Basic, Cobol, etc. Desventajas de la programacin tradicional: ! ! Realizar un programa completo para cada simulacin. No es fcil describir el sistema mediante un lenguaje tradicional.

2.

Programas especficos.

En contraste a lo que sucede con la programacin tradicional, el uso de un lenguaje orientado a la simulacin (preparado para construir modelos donde se pueda simular) reduce el esfuerzo realizado a la dcima parte.

Un lenguaje orientado a la simulacin debe manejar:

1. 2. 3.

Fcilmente al modelo, permitiendo el ensayo de alternativas. El tiempo "simulado" (meses, das, horas, segundos, milisegundos). Eventos, es decir, acciones que provocan los cambios de estado: Los cambios de estado se materializan por dos eventos: el de comienzo y el de finalizacin. La accin est definida por: instante de comienzo y duracin. El lenguaje se encarga de hacer finalizar la accin.

4. 5. 6. 7. 8.

Variables random fcilmente definibles, generadas en forma automtica por el lenguaje. Acumulacin/clculo/impresin de estadsticas de las entidades intervinientes en el sistema. El estado del sistema en cualquier instante (imprimindolo en caso necesario). La extensin del perodo de simulacin. Simultaneidad y administracin de recursos.

14

Sistemas de simulacin discretos.


La siguiente informacin trata de cubrir el uso que se le da a la simulacin digital para representar sistemas complejos del mundo real. Para poder comprender la aplicacin de dichos modelos, es necesario comprender los siguientes conceptos.

1.

Estadsticas y Probabilidad para Simulacin

Para poder utilizar las herramientas que nos brindan la Estadstica y la Probabilidad, es necesario estar al tanto de los distintos conceptos en los cuales stas ciencias se basan. Entre los ms importantes encontramos: ! ! ! ! ! ! ! Intervalo de confianza Varianza y Desviacin Estndar Distribucin Normal Teorema del Lmite Central Inferencia estadstica Modelo de los mnimos cuadrados ANOVA o Anlisis de la Varianza.

2.

Simulacin de salida de datos y Procesos Estocsticos

3.

Sistemas dinmicos

Es el estudio riguroso de problemas en el comportamiento de sistemas usando los principios de feedback, dinmica y simulacin. Estn caracterizados por: bsqueda de soluciones tiles a problemas reales, especialmente en sistemas sociales (empresas, escuelas, gobiernos,...) y el entorno. Buscan la manera de trasladar resultados cientficos a mejoras que puedan ser implementadas en el mundo real.

4.

Simulacin social

La simulacin es un mtodo importante para modelar procesos econmicos y sociales. Los mtodos de simulacin por computadora pueden ser efectivos para el desarrollo de teoras tales como la prediccin. En la simulacin social, un "mundo" es especificado con detalle computacional, para luego ser simulado y revisar algunas de las implicaciones no triviales del mundo real.

5.

Simulacin basada en la Web

La simulacin basada en la Web est emergiendo rpidamente en el rea de la simulacin. Este inters es consecuencia natural de la proliferacin de la World-Wide Web y sus tecnologas (HTML, HTTP, CGI, etc). La aparicin de lenguajes como Java, y tecnologas de objetos distribuidos como CORBA y OLE/COM, han tenido efectos considerables en la prctica de la simulacin. Actualmente, el inters est en tratar temas como metodologas para el desarrollo de modelos basados en la Web, desarrollo de modelos colaborativos sobre Internet, simulacin y modelacin en Java, y nuevas aplicaciones.

15

6.

Simulacin paralela y distribuida

Utilizan estrategias ms eficientes para acelerar el proceso de simulacin. Los temas que actualmente cubre son: sincronizacin, scheduling, administracin de memoria, algoritmos reactivos/adaptativos y randomizados, particionamiento y balanceo de carga.

7.

Otras tcnicas disponibles


! ! ! ! ! ! ! ! La ruta ms corta en una red. Simulacin manual. Distribucin de la entrada: Distribucin Chi-cuadrado, tabular y grfica. SIMSCRIPT. Anlisis de salida: Anlisis sensitivo y de estabilidad. Tcnicas de reduccin de la varianza: Generacin de variables random Tcnica de Integracin de Monte-Carlo. Tcnica de reduccin.

16

CAPITULO 2

EL LENGUAJE DE SIMULACION

17

PARTE I

EL LENGUAJE

18

Declaraciones
Un programa VisualSIS est compuesto de una secuencia de declaraciones. Estas declaraciones son las unidades bsicas de accin. Las declaraciones estn compuestas de partes llamadas campos. Un campo es un nmero variable de caracteres. En general, las declaraciones son del tipo: Etiqueta (opcional) | Verbo (requerido) | Operandos (dependen del verbo) | Comentario (opcional).

Las Declaraciones VisualSIS estn divididas en "Declaraciones de Control" y "Declaraciones de Bloques". Las declaraciones de bloques resultan en la creacin de un bloque VisualSIS, mientras que las de Control usualmente definen entidades de VisualSIS o, en alguna forma, afectan el estado general del modelo actual.

Etiquetas
El campo etiqueta permite nombrar y referenciar a entidades con nombres de nuestra eleccin. Se puede asignar un valor propio a un nombre con la sentencia Equ. Esto es til cuando se quiere experimentar con varios valores de una misma variable. Ahora bien, VisualSIS usa su propio nmero interno unico para las entidades nombre y parmetros de transacciones. Si se elige asignar un nmero propio a una entidad nombre, se deberia asignar el valor en una sentencia EQU antes de referenciar a la entidad por su nombre. Cuando VisualSIS encuentra un nuevo nombre, ste asigna un nico entero al nombre. Estos enteros son distintos y contiguos. Las etiquetas de bloques son llamadas direcciones y son tratadas diferente. Los valores de estos nombres son renumerados antes de comenzar cada simulacin donde estos empiezan en 1 y son contiguos. Se puede usar el mismo nombre para referirse a diferentes tipos de entidades. Por ejemplo, se puede tener una entidad STORAGE y una entidad TABLE ambas llamadas SALAESPERA. No se debe usar un nmero como un nombre en un campo etiqueta. Esto viola las convenciones de nombres. Si se quiere explcitamente controlar el nmero de una entidad, se puede asignar un valor a un nombre usando una sentencia EQU.

Verbos Verbos
Los verbos permiten ingresar el nombre de la accin de la sentencia. Este debe ser un nombre de bloque de VisualSIS o uno de los verbos de una sentencia de control.

Operandos
Los verbos pueden estar seguidos de uno o ms operadores. Estos campos dependen de el verbo. Algunos son requeridos y algunos son opcionales. Los operandos son separados por comas.

19

Expresiones
Las sentencias BVARIABLE, FVARIABLE, y VARIABLE tienen un campo de expresin requerido. En efecto, se puede usar una expresin en algn campo de operando siguiendo un SNA de clase BV o V. Para hacer esto se debe simplemente definir una entidad variable y usar su asociacin SNA en el campo operando deseado. Cuando una expresin es usada para definir un SNA, este resultado es siempre truncado a un entero. Las expresiones son combinaciones de operadores matemticos, funciones de librera, SNAs, y constantes que obedecen las reglas elementales de lgebra. Una expresin es evaluada segn la jerarqua de operadores listada abajo, y otros de izquierda a derecha. El orden de evaluacin puede ser controlada insertando un par de parntesis. Las expresiones son evaluadas usando un formato de doble precisin de punto flotante. El resultado es truncado y cargado como un entero. La evaluacin de las expresiones es afectada por el comando que es usado en. ! VARIABLE crea una variable aritmtica VisualSIS que cuando es evaluada por una llamada de un SNA, realiza todas las operaciones un nmeros de punto flotante de doble precisin, luego trunca todos los resultados intermedios antes de proceder con la siguiente operacin. Finalmente el resultado es truncado a un entero. FVARIABLE crea una variable de "punto flotante" que, cuando es evaluada por una llamada por un SNA, realiza todas las operaciones con nmeros de punto flotante de doble precisin, truncando slo el resultado final de la operacin. Los valores fraccionales pueden ser considerados con un apropiado cambio de unidad, as como "milsimos". Entonces un valor SNA de 500 es interpretada como el nmero . BVARIABLE crea variables booleanas que cuando es evaluada por una llamada de un SNA, realiza todas las operaciones en nmeros de punto flotante de doble precisin, luego retorna 1 si el resultado es distinto de cero, 0 en otro caso.

Se debe notar que la tecla [#] es usada para la multiplicacin. El asterisco es reservado para direccionamiento indirecto. Los operadores lgicos tales como LE para menor o igual que deben ser encerrados entre comillas simples o apostrofes sin espacios entre los operadores del operando. El resultado de un operador lgico es 0 1.Tambien, las funciones aritmticas, tales como SIN(), requieren que sus argumentos se encierren entre parntesis sin espacios en ellos. Existen muchas funciones matemticas disponibles para ser usadas en expresiones. Se pueden utilizar casi cualquier valor como un argumento. Los operadores y libreras de funciones permitidas en expresiones son dadas en prioridad decreciente de evaluacin: ! ! ! ! ! ! ! ! ! NOT produce un 1 (TRUE) si el operando es 0, 0 (FALSE) si el operando es distinto de cero. ABS() valor absoluto. ATN() arcotangente en radianes. COS() coseno, argumento en radianes. INT() trunca a un entero. EXP() nmero "e" de x, el argumento es usado como exponente de "e". LOG() logaritmo natural. SIN() seno, argumento en radianes. SQR() raz cuadrada.

20

! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !

TAN() tangente, argumento en radianes. [-]negacin. AND produce un 1 (TRUE) si el producto aritmtico es distinto de cero, 0 (FALSE) en otro caso. OR produce un 1 (TRUE) si cada operando es distinto de cero, 0 (FALSE) en otro caso. G mayor que, produce un 1 (TRUE) un 0 (FALSE). L menor que, produce un 1 (TRUE) un 0 (FALSE). E igual que, produce un 1 (TRUE) un 0 (FALSE). NE distinto que, produce un 1 (TRUE) un 0 (FALSE). LE menor o igual que, produce un 1 (TRUE) un 0 (FALSE). GE mayor o igual que, produce un 1 (TRUE) un 0 (FALSE). [^] exponenciacin. [#] multiplicacin. [/] divisin. [\] divisin entera, produce un cociente entero. [@] modulo de la divisin, produce un resto entero. [+] suma y [-] resta.

El uso de funciones matemticas en expresiones y la habilidad para mezclar SNAs dentro de una compleja expresin, es sumamente poderoso. Se puede definir variables de todo tipo para una expresin. Este mtodo puede ser usado para generar precisiones sobre cualquier distribucin de probabilidad terica que se desee. Sin embargo, es todava ms eficiente pero menos exacto en el uso de funciones. Las expresiones deben estar bien formadas de acuerdo con las leyes del lgebra elemental. Estn pueden contener los siguientes elementos: ! ! ! Enteros Fracciones decimales SNAs

Estos elementos pueden ser combinaciones de funciones de libreras matemticas, operadores aritmticos, y operadores lgicos, para construir una expresin a ser evaluada. El orden de evaluacin de una expresin puede ser controlada usando parntesis en torno a los trminos a ser combinados. Si no se usan parntesis para forzar el orden de evaluacin , la evaluacin procede de acuerdo a la prioridad del operador. Las expresiones son restringidas a menos de 80 caracteres. Si se necesita evaluar una expresin mas compleja, se tiene que definir mas de una entidad variable para que estas sean evaluadas. Se puede usar mltiples variables para evaluar expresiones mas complejas. Sin embargo, la recursin en la evaluacin de variables no est permitido y causar un error de stop.

21

Atributos numricos del sistema SNAs


Los Atributos Numricos del Sistema, o SNA's, son "variables de estado" simuladas disponibles para usar en declaraciones. Son objetos propios del sistema, casilleros que almacenan valores comunes a todas las transacciones. Los SNA's pueden ser accedidos desde el entorno o dentro de la simulacin cuando una transaccin activa intenta entrar a un bloque. Todas las SNA's retornan un valor numrico entero como resultado. Los valores fraccionales son truncados. Algunos SNA's son mantenidos automticamente, y otros requieren un clculo cuando son llamados. Por ejemplo, la cantidad acumulada de entradas a un bloque est disponible como un SNA. Hay alrededor de 45 clases de SNA, cada una de las cuales contribuyen al poder de las simulaciones. Muchos SNA's, tales como PR (prioridad), son evaluados sobre la misma transaccin activa. Tales SNA's no pueden ser evaluados a menos que estn en una transaccin activa. Por ejemplo, se debe ingresar el comando START antes de poder observar estos SNA's. Otros SNA's, tales como el reloj del sistema C1, puden ser evaluados sin referirse a una transaccin. Entre los SNA's ms importantes se encuentran los relacionados con Facilitys (recursos de uso exclusivo de las transacciones que se mueven por el sistema), Storages (recursos de mayor capacidad), Colas (se forman automticamente), Cadenas (son como colas pero las forma el programador), Grupos numricos y Grupos de transacciones. Estos SNA's nos brindan informacin acerca de si funcionan o no los recursos, la ocupacin actual, ocupacin remanente, cantidad promedio, porcentaje de uso, cantidad de transacciones que usaron el recurso, cantidad que hubo como mximo, tiempo promedio de uso del recurso, cantidad de ceros (entradas sin tener que esperar en cola), etctera.

22

Especificaciones de una Entidad SNA


Muchos SNAs pueden ser especificados en ms de una forma. Por ejemplo el SNA W22 retorna el nmero de transacciones esperando en el bloque nmero 22. El bloque identificado en este caso es el nmero 22, pero hay otras posibilidades. Este SNA pudo haber sido especificado usando alguna de las siguientes especificaciones: ! ! ! ! ! Wj- donde j es un entero positivo, el nmero de bloque en la simulacin. WSname- donde name es la posicin del bloque deseado. W*j- donde j es un entero positivo, el nmero del parmetro de la transaccin activa que contiene el nmero del bloque deseado. Esto es direccionaminto indirecto. W*name- donde name es el nombre del parmetro de la transaccin activa que contiene el nmero del bloque deseado. Esto es direccionamiento indirecto. W*parmetro- denota que tanto W*j, W*name, o W*Sname pueden ser usados.

Algunas clases de SNA, tales como AC1, C1, M1, MP, PR, y TG1, son SNAs "atmicos". Los SNAs atmicos son completos y no comprenden una entidad especifica.

SNAs Disponibles
Los siguientes SNAs estn disponibles para su uso en los campos de operandos y expresiones de sentencias. En todos los casos entnum debe ser reemplazado por alguna entidad especifica. La entidad especificada deber ser un nombre (precedido por un separador [$]) o nmero, o si es por direccionamiento indirecto, sta deber ser un asterisco, [*] , seguido por un nmero o nombre. La lista completa de SNAs disponibles en VisualSIS son: ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! AC1- Valor absoluto del reloj del sistema. Tiempo simulado desde el ultimo CLEAR. Bventnum C1- Valor relativo del sistema de reloj. Tiempo simulado desde el ultimo RESET. CAentnum- Promedio del contenido de la cadena de usuario. El tiempo promedio de la cantidad de transacciones encadenadas en la cadena de usuario entnum. CCentnum- Total de entradas en la cadena de usuario. El contador de todas las transacciones encadenadas por la cadena de usuario entnum. CHentnum- Contenido corriente de la cadena de usuario. El nmero actual de transacciones encadenadas por la cadena de usuario entnum. CMentnum - Mximo contenido de la cadena de usuario. El nmero mximo de transacciones encadenadas por la cadena de usuario entnum. CTentnum Promedio del tiempo de residencia en la cadena de usuario. La duracin promedio de transacciones en la cadena de usuario entnum. Fentnum Facility ocupada. Si la facility entnum esta actualmente ocupada, Fentnum retorna 1, sino retorna 0. FCentnum Cantidad de facilitys capturadas. El nmero de veces que la facility entnum a sido SEIZEd o PREEMPTed por una transaccin. FIentnum Facility entnum interrumpida. Si la facility entnum esta actualmente intrerrumpida, FIentnum retorna 1, sino retorna 0. FNentnum Funcin. Resultado de evaluacin de la funcin entnum. FRentnum Utilizacin de facility. La fraccin de tiempo que facility entnum ha sido ocupada. FRentnum es expresada en partes por mil por eso retorna un entero de 0-1000. FTentnum Tiempo promedio de retencin de la facility. El tiempo promedio de la facility entnum es apropiada por una transaccin. FVentnum Facility en estado disponible. FVentnum retorna 1 si la facility entnum esta en estado disponible, sino retorna 0.

23

! ! ! ! ! ! ! ! !

GNentnum Cuenta un grupo numrico. GNentnum retorna la cantidad de miembros de el grupo numrico entnum. GTentnum Cuenta grupo de transacciones. GTentnum retorna la cantidad de miembros del grupo de transacciones entnum. LSentnum Setea una llave lgica. LSentnum retorna 1 si la llave lgica esta en estado "set", sino retorna 0. MBentnum Empareja en bloque. MBentnum retorna 1 si hay una transaccin en el bloque entnum la cual esta en el mismo grupo (assembly set) que la transaccin activa, en otro caso retorna 0. MPentnum Tiempo de transito, parmetro. MXentnum (m,n) Matrix savevalue. El valor en la fila m, columna n de la matriz entnum es retornado. M1- Tiempo de trnsito. Nentnum Cuenta entradas a un bloque. El nmero total de transacciones que han ingresado en el bloque entnum es retornado. Pparameter o *parameter Valor del parmetro. Pparameter o *parameter retorna el valor del parmetro parameter de la transaccin activa.

El direccionamiento indirecto usa la notacin SNA*parmetro.


! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! PR Prioridad de la transaccin. El valor de la prioridad de la transaccin activa . Qentnum Contenido actual de una cola (QUEUE). El actual valor de la queue entnum. QAentnum Contenido promedio de la queue. La cantidad de tiempo promedio en la queue entnum. QCentnum Total de entradas en la queue. La suma de todas las entradas en la queue entnum. QMentnum - Contenido mximo de una queue. La mxima cantidad en la queue entnum. QTentnum Tiempo de residencia promedio en la queue. QXentnum Tiempo promedio de residencia en queue excluyendo la entrada cero. QZentnum Cantidad de entradas cero en queue. El nmero de entradas en la queue entnum con tiempo de residencia cero. Rentnum Capacidad de storage disponible. La capacidad disponible en el storage para ser usado por transacciones. RNentnum Nmero aleatorio (Random). RNentnum retorna un entero aleatorio entre 0-999 desde el generador de nmeros aleatorios entnum. Sentnum Storage en uso. Sentnum retorna la cantidad de contenido del storage actualmente en uso por transacciones al storage entnum. SAentnum Uso promedio de storage. SCentnum Cuenta el uso de storage. Nmero total de unidades en el storage que han sido adquiridos desde el storage entnum. SEentnum Storage vaco. SEentnum retorna 1 si el storage entnum esta completamente disponible, en otro caso retorna 0. SFentnum Storage completo. SFentnum retorna 1 si el storage entnum esta completamente usado, en otro caso 0. SRentnum Utilizacin de storage. SRentnum esta expresado en partes por mil y por lo tanto retorna un entero 0-1000. SMentnum Mximo uso en storage. STentnum Tiempo retenido por una unidad un storage. SVentnum Storage en estado disponible. SVentnum retorna 1 si el storage entnum est en el estado disponible, en otro caso retorna 0. TBentnum Promedio de entradas en la tabla entnum. TCentnum Cantidad de entradas en la tabla entnum. TDentnum desviacin estandar de entradas en la tabla entnum. TG1 Cuenta de terminacin restante. TG1 retorna la cuenta que es decrementada por el bloque TERMINATE con un operando positivo A. Este valor es inicializado por la sentencia START e indica la conclusin de la simulacin cuando esta es 0. Ventnum Resultado de la evaluacin aritmtica de una entidad variable de punto flotante entnum. Wentnum Cuenta de bloque actual. El nmero actual de transacciones en el bloque entnum.

24

Xentnum Nmero de transaccin activa. El nmero de transaccin de la transaccin activa es retornado.

25

Direccionamiento indirecto
Todas las entidades tienen un nmero positivo de entidad. Cuando uno se refiere a una entidad por el nombre, el valor del nombre es igualado con el nmero de entidad de la entidad. El direccionamiento indirecto significa que el nmero de entidad est en un parmetro de transaccin. Para usar direccionamiento indirecto, se debe poner un asterisco [*], en el operando. Por ejemplo, el SNA Q*2 usa el valor del parmetro 2 como el nmero de entidad queue. Este SNA retorna el contenido actual de esa entidad queue. Se debe mover un nmero de entidad (o nombre valor) dentro de un parmetro de una transaccin antes de que es SNA sea evaluado. El direccionamiento indirecto usa la notacin SNA*parmetro. Otro ejemplo, para hacer un SEIZE a la facility cuyo nmero es el valor da la funcin cuyo nmero esta en el parmetro llamado TALLERSELECTOR, se debe tipear: SEIZE FN*TALLERSELECTOR

26

PARTE II

ENTIDADES

27

Entidades VisualSIS
VisualSIS est construido por varias abstracciones elementales llamadas entidades. Para que se pueda crear modelos de simulacin complejos, se debe adquirir un entendimiento de estas entidades y de las reglas por las cuales ellas pueden ser manipuladas. Las entidades VisualSIS son objetos abstractos que existen en una simulacin. Si se quiere una nocin mas concreta, se puede pensar en una entidad como un conjunto de nmeros en la memoria de la computadora. La coleccin de todas las entidades es llamado el modelo corriente. Los tipos ms prominentes de entidades son las transacciones y los bloques, la simulacin, por una larga extensin, consiste de muchas transacciones moviendose desde un bloque hacia el siguiente. En todas, hay una docena o mas tipos de entidades, y una simulacin puede contener muchas instancias de algn tipo de entidad. Las entidades estn numeradas. Cuando se usa un nombre para referirse a una entidad, el valor entero asociado con el nombre es usado para encontrar la entidad. Ahora bien, normalmente no se asigna estos valores enteros a nombres, aunque la sentencia EQU permite hacer esto. Muchas entidades son creadas automticamente cuando se necesitan. Por ejemplo, una referencia a una facility usando el nombre BARBERO deber causar la creacin de una facility si esta no existe antes. Algunas entidades deben ser especficamente declaradas antes que ase puedan usar. Generalmente estas tienen atributos y el tamao que se da a conocer a VisualSIS. El nombre en el campo Etiqueta es usado para referirse a la entidad. Las siguientes entidades deben ser declaradas antes de ser usadas: ! ! ! ! ! ! ! ! ! Storage se deben declarar con la sentencia STORAGE. Variables aritmticas deben ser declaradas con la sentencia VARIABLE. Variables de punto flotante deben ser declaradas con la sentencia FVARIABLE. Variables booleanas deben ser declaradas con la sentencia BVARIABLE. Las Matrices deben ser declaradas con la sentencia MATRIX. Las Tablas deben ser declaradas en la sentencia TABLE. Las Qtable deben ser declaradas con la sentencia QTABLE. Las funciones deben ser declaradas con la sentencia FUNCTION. Los parmetros de las transacciones deben ser declarados con los bloques ASSIGN, MARK o TRANSFER.

Algunas tipos de entidades producen una o ms relaciones especiales a transacciones. Las entidades storage y facility pueden ser parcialmente o totalmente propietarios de transacciones. Otras transacciones pueden entonces estar en reposo en el modelo mientras que espera por un propietario. Para asegurarse que el propietario es eventualmente liberado por el propietario original, se debe ingresar a un bloque RETURN o RELEASE. Algunos bloques tales como PREEMPT y FUNAVAIL tienen la opcin de desviar el camino de la transaccin propietaria.

28

Entidad Transaccin
Las transacciones se mueven desde un bloque hacia otro bloque en una simulacin de manera que representan el sistema del mundo real que se esta modelando. Una vez que la transaccin comienza a moverse en el modelo, sta continua hasta que ingresa en un bloque en que se bloquea. La transaccin que esta intentando moverse a travs del modelo en algn instante es llamada la transaccin activa. Si una transaccin fracasa al encontrar condiciones favorables cuando intenta ingresar en un bloque, es puesta en reposo. Entonces otra transaccin es elegida para comenzar a moverse a travs del modelo. Las transacciones estn numeradas secuencialmente durante una sesin comenzando con 1. Una sentencia CLEAR empieza la numeracin de transacciones en 1 nuevamente. La conducta de una transaccin es determinada por varios atributos o estado de variables. Los atributos importantes de una transaccin son: !

Parmetros Los parmetros de las transacciones son un conjunto de enteros asociados con una transaccin. Cada transaccin puede tener cualquier nmero de parmetros. Cada parmetro tiene un nmero propio por el cual es referenciado y un valor. Estos dos valores son enteros con valor y precisin ilimitado. El valor de algn parmetro de la transaccin activa puede ser retornado por el SNA Pparmetro donde parmetro es el nombre o nmero del parmetro. Si un operando de bloque especifica un nombre o nmero de parmetro P$parmetro o Pparmetro no deberia ser usado, solamente se debe usar el nombre o nmero de parmetro. Los parmetros son usados en VisualSIS con direccionamiento indirecto. Cuando el nmero la entidad deseada es guardado en un valor de parmetro de la transaccin activa, el nombre o nmero de la entidad especificada deseada puede ser reemplazado con una referencia indirecta por el parmetro de la transaccin. Los bloques ASSIGN, MARK, y TRANSFER crean un parmetro de transaccin si ste no existe. Prioridad La prioridad de una transaccin determina la preferencia recibida cuando sta y otra transaccin estn esperando por el mismo recurso. La prioridad ms importante es la de QUEUE (cola) en el modelo son la Cadena de Eventos Corrientes , la cadena de espera por facility, y la cadena de espera por storage. La Cadena de Eventos Futuros no es una cadena de prioridad. El efecto de la prioridad es que una transaccin deber ser elegida segn se aumenta o disminuye la prioridad de la transaccin cuando una nueva transaccin activa, o una facility o storage es elegida. Las transacciones sin una prioridad son usualmente programadas primero en llegar primero en servir. Marca (MARK) de tiempo El tiempo absoluto de reloj que la transaccin desde la primera vez que entra a la simulacin, o ingresa a un bloque MARK sin operando A. Assembly set El conjunto al que pertenecen las transacciones que son descendientes de la misma transaccin padre. EL bloque SPLIT puede ser usado para crear transacciones descendientes. Indicador de Delay (retraso) Setea la negativa para entrar a un bloque, se resetea entrando a un bloque TRANSFER SIM. Bloque actual El nmero de bloque actual en el que est la transaccin. Bloque siguiente El nmero del bloque donde la transaccin deber intentar ingresar seguidamente.

! ! ! ! !

29

Cadenas El estado de una transaccin est determinado segn la cadena en que reside. Una transaccin esta exactamente en uno de estos varios estados: " ACTIVE La transaccin es la de mayor prioridad en la Cadena de Eventos Corrientes.

" SUSPENDIDA La transaccin esta esperando en la Cadena de Eventos Futuros o en la Cadena de Eventos Corrientes para llegar a ser la transaccin activa. " PASIVA La transaccin ha llegado a reposar en el modelo corriente en un cadena de usuario, cadena de retraso (delay), o cadena pendiente. " TERMINADA La transaccin ha sido destruida y no existe en el modelo corriente. Ademas, hay otro estado que no se excluye mutuamente con los otros: " APROPIADA La transaccin ha sido apropiada por una facility y est en una o ms cadenas de interrupcin.

SNAs Relacionados
Los SNAs relacionados con las transacciones son: MBentnum, MPentnum, M1, Pparameter, PR, XN1.

30

Entidad Bloque
La entidad bloque es el elemento bsico estructural del modelo corriente. Es til pensar en un modelo como un diagrama de bloques. Cada transaccin en el modelo est contenida exactamente en un bloque, pero muchos bloques pueden contener muchas transacciones. La secuencia de bloques encontrada por varias transacciones determina la naturaleza y mucho del resultado de alguna simulacin. Cada transaccin entra en un bloque luego al siguiente, hasta que es terminada (TERMINATE) o la simulacin finaliza. Ocasionalmente las transacciones deben esperar en un bloque hasta que las condiciones sean favorables para entrar al siguiente bloque. Cada tipo de bloque esta asociado con una accin que transforma otra entidad en la simulacin. En general un bloque primero determina si la transaccin activa puede entrar. Si es as, varios bloques, transacciones, y un sistema de estadstica amplio son actualizados. Entonces el bloque realiza una accin especifica y la transaccin elige al bloque siguiente. Usualmente el "bloque secuencial siguiente" (NSB) es programado. Se insertan bloques dentro del modelo corriente conforme a su ubicacin en el texto. Referencias a otros bloques en el modelo corriente son generalmente hechas usando un nombre simblico de direccin. Los bloques, tales como otras entidades, estn numerados. Pero diferente a otras entidades ellos estn numerados comenzando por 1, cada vez que la simulacin es activada. Esto significa que el valor numrico asociado con una direccin de bloque puede cambiar de una simulacin a la siguiente. Por esta razn es prudente usar solamente nombres en vez nmeros de entidad cuando se referencia a un bloque.

SNAs Relacionados
Los SNAs relacionados con los bloques son: Nentnum y Wentnum.

31

Entidad Facility
Una facility es una entidad que tiene varios atributos. Una facility puede estar ocupada por una simple transaccin. Esta puede estar libre, en tal caso esta ociosa. Diferente a una entidad Storage, una facility no puede ser liberada por una transaccin que nunca la posey. La transaccin adquiere la pertenencia de una facility con xito ingresando a los bloques SEIZE o PREEMPT. Un bloque PREEMPT tiene el poder para destituir al propietario existente de la facility. Una facility tiene varias lineas de espera por transacciones que estn esperando por algn evento a ocurrir. Cada facility tiene una cadena de retraso (delay) de transacciones esperando, una cadena de pendientes de apropiaciones en modo interrupcin, y una cadena de interrupcin de transacciones previamente apropiadas. Las transacciones esperando en una cadena de retraso (delay), una cadena de pendientes, o una cadena de interrumpidas estn "en contienda" por la facility. Cada transaccin que apropia una facility debe eventualmente librar la pertenencia ingresando a un bloque RELEASE o RETURN. Puesto que una transaccin competidora deber generalmente volverse la propietaria de la facility, la disputa por una facility lleva la obligacin de eventualmente liberar la facility. Las transacciones que fracasan en el intento de entrar a un bloque SEIZE descansarn en orden de prioridad en la cadena de demora de la facility. Cuando una facility es liberada por una transaccin , la siguiente propietaria es elegida desde las ocupantes de las cadenas de la facility. Las pendientes de apropiaciones (PREEMPTED) en modo interrupcin son elegidas primero, seguidas por las transacciones previamente apropiadas, seguidas por las transacciones demoradas en orden de prioridad.

Estados de la Entidad
Una facility que est apropiada por una transaccin est en el estado "ocupada". Si una facility no es apropiada por una transaccin, est en el estado "inactiva". Una facility puede estar disponible o no disponible. Cuando est disponible, las transacciones adquieren y obtienen la pertenencia de la facility normalmente. Cuando la facility est no disponible, la pertenencia no es dada hasta transacciones arribando nuevamente. Los bloques FAVAIL son usados para colocar una facility en el estado disponible, y los bloques FUNAVAIL son usados para colocarlas en el estado no disponible.

Bloques Relacionados
Hay varios bloques que pueden ser usados con facilitys: ! ! ! ! ! ! SEIZE intenta tener posesin de una facility. RELEASE abandona la posesin de una facility. PREEMPT intenta tener la posesin de una facility, posiblemente destituyendo al propietario existente. RETURN abandona la posesin de una facility. FAVAIL coloca una facility en el estado disponible. FUNAVAIL coloca a una facility en el estado no disponible.

SNAs Relacionados
Los SNAs asociados con las facilitys son: Fentnum, FCentnum, FIentnum, FRentnum, FTentnum y FVentnum.

32

Entidad Funcin
Las entidades funcin son usadas para retornar un valor derivado de algn argumento, semejantes a un nmero aleatorio. Algn SNA puede ser usado como argumento. Una funcin es definida por una sentencia de control FUNCTION, seguida por una o ms sentencias definitorias de funcin. El operando A de la sentencia FUNCTION especifica el argumento, y el operando B especifica el tipo de funcin y el nmero de pares de datos a aparecer en la sentencias seguidas de funcin. Son los nmeros, nombres, y/o SNAs en las sentencias seguidas de funcin que completan la definicin de la entidad funcin. Existen 5 diferentes tipos de entidad funcin: ! ! ! ! ! Tipo C Funcin estimada "Continua". Tras una interpolacin lineal, la funcin trunca el resultado y retorna un entero. Un argumento aleatorio es un caso especial. Tipo D Funcin estimada "Discreta". Cada masa de probabilidad o valor de argumento es asignado a un valor entero. Un argumento aleatorio es un caso especial. Tipo E Discreta, Funcin "estimar atributo". Cada masa de probabilidad o valor de argumento es asignado a un SNA para ser evaluado. Un argumento aleatorio es un caso especial. Tipo L Funcin estimada Listar o enumerar. El valor del argumento es usado para determina la posicin en la lista del valor a ser retornado. Tipo M - Funcin estimada Listar o enumerar. El valor del argumento es usado para determina la posicin en la lista del SNA. Este SNA es evaluado y retornado como el resultado de la funcin.

Las funciones son a menudo usadas como una eficiente manera de aproximarse a una distribucin probabilistica. Una funcin usada en el operando B de un bloque ADVANCE o GENERATE es llamada "funcin modificadora". La interpolacin lineal cuando es evaluada una entidad funcin aleatoria involucra un entero aleatorio entre 0-999999 tomado desde el generador de nmeros aleatorios especificado. Este entero aleatorio es multiplicado por el factor interpolar, truncado a un entero, y adicionado a la base de el intervalo.

SNAs Relacionados
El SNA asociados con las funciones es: FNentnum.

33

Entidad Llave lgica - Logicswitch


Una entidad llave lgica (logicswitch) es una simple entidad con solamente dos estados: "set" o "reset". Existen bloques que alteran una llave lgica y SNAs que retornan el estado de stas.

Bloques Relacionados
! El bloque LOGIC setea, resetea, o invierte el estado de una llave lgica.

SNAs Relacionados
El SNA asociado con una llave lgica es: LSentnum.

34

Entidad Matriz
La entidad matriz es un arreglo de enteros. No hay limite para la magnitud de precisin de los elementos de una entidad matriz. Una entidad matriz es definida con una sentencia MATRIX.

Bloques Relacionados
! MSAVEVALUE modifica o asigna un valor a un elemento de una matriz.

Sentencias de Control Relacionados


La sentencia INITIAL asigna un valor a un elemento de una matriz, sin la necesidad de una transaccin activa.

SNAs Relacionados
El SNA asociado con una matriz es: MXentnum.

35

Entidad Cola - Queue


Una entidad cola no debe ser confundida con un bloque QUEUE, los cuales son instancias de una entidad bloque. Las entidades cola son usadas principalmente para la recoleccin de estadsticas, tales como una acumulacin del contador actual, total de entradas, total de entradas encontradas con contador actual en cero, el conteo mximo, y el contador de tiempo. Los bloques QUEUE y DEPART son usados para actualizar las estadsticas relacionadas con una entidad cola. El procedimiento usual es hacer un "sandwich" entre los bloques SEIZE, PREEMPT, o ENTER entre medio de los bloques QUEUE y DEPART.

Estados en la Entidad
El ms importante atributo de una entidad cola es su contenido. El contenido de una cola es cambiado cuando un bloque QUEUE y DEPART son ingresados. Varias estadsticas relacionadas con el contenido son mantenidas automticamente. Estas son accedidas por medio de los SNAs descritos.

Bloques Relacionados
Existen varios bloques que pueden ser usados con la entidad cola: ! ! QUEUE incrementa el contenido de la entidad cola. DEPART reduce el contenido de la entidad cola.

SNAs Relacionados
Los SNAs asociados con las colas son: Qentnum, QAentnum, QCentnum, QMentnum, QTentnum, QXentnum, QZentnum.

36

Entidad Storage
Una entidad storage puede ser usada como un transacciones en el modelo. "estanque de smbolos" para controlar el flujo de

Cuando una transaccin ingresa a un storage, esta ocupa una o ms unidades de storage de la entidad. Una transaccin es negada a ingresar dentro de un bloque ENTER si su demanda de unidades de storage no puede ser cumplida. Tales transacciones descansan en una cadena de demora de la entidad storage. Despus esta debe esperar hasta que otra transaccin libere unidades de storage suficientes cuando ingresa en un bloque LEAVE. Cuando una transaccin ingresa en un bloque LEAVE y libera una o ms unidades de storage, otras transacciones verifican si su demanda de storage puede ser satisfecha. Una disciplina primera en encajar con salto es usada para programar las transacciones que estn esperando. Esto significa que cada transaccin en la cadena de demora es testeada para encajar en la entidad storage, comenzando con la de mayor prioridad. Si una encaja, la transaccin es removida desde la cadena de demora, permitiendole ingresar al bloque ENTER, y colocarse en la CEC detrs de su compaero en prioridad. Luego la siguiente transaccin en una cadena de demora de storage es testeada. Los bloques ENTER y LEAVE son usados para agregar estadstica asociada con la entidad storage y varios SNAs estn disponibles. Una entidad storage debe ser definida por una sentencia STORAGE.

Estados de la Entidad
Una entidad storage est vaca cuando todas sus unidades estn disponibles y completa cuando no hay unidades que estn disponibles.

Bloques Relacionados
Existen varios bloques que pueden ser usados con storage: ! ! ! ENTER intenta incrementar el contenido de unidades en la entidad storage LEAVE decrementa el contenido de unidades en la entidad storage. SUNAVAIL coloca un storage en el estado no disponible.

SNAs Relacionados
Los SNAs asociados con un storage son: Rentnum, Sentnum, SAentnum, SCentnum, SEentnum, SFentnum, SRentnum, SMentnum, STentnum, SVentnum.

37

Entidad Savevalue
Una entidad savevalue est asociada con un entero de magnitud y precisin ilimitada. El valor debe ser asignado o modificado por bloques y puede ser retornado por un SNA clase X.

Bloques Relacionados
! SAVEVALUE asigna o modifica el valor de un savevalue.

Sentencias de Control Relacionadas


! INITIAL asigna un valor a una entidad savevalue, sin la necesidad de una transaccin activa.

SNA Relacionado
El SNA asociado con los savevalue es Xentnum.

38

Entidad Tabla
Una entidad tabla es un conjunto de enteros usados para acumular datos para un histograma. Cada entero representa una clase de frecuencia en un histograma y tiene una magnitud y precisin ilimitada. Una entidad tabla es definida por la sentencia TABLE.

Bloque Relacionado
! TABULATE actualiza el histograma de datos acumulados en una entidad tabla.

SNAs Relacionados
Los SNAs asociados con una tabla son: TBentnum, TCentnum, TDentnum.

39

Entidad Userchain
Una entidad userchain es una transaccin cola especial que puede ser manipulada por los bloques LINK y UNLINK. Las userchain son tiles para modelar complejas programaciones (scheduleing).

Bloques Relacionados
! ! LINK condicionalmente coloca una transaccin en una cadena de usuario. UNLINK remueve transacciones desde una cadena de usuario.

SNAs Relacionados
Los SNAs asociados con userchain son: CAentnum, CCentnum, CHentnum, CMentnum, CTentnum.

40

Entidad Variable
Una entidad variable es una compleja expresin quie puede ser calculada en demanda. Todas las entidades variable pueden ser definidas desde expresiones que incluyen constantes, SNAs, funciones de librera aritmtica y operadores lgicas. Sin embargo, la evaluacin de la expresin es completada por el tipo de variable. Una variable es definida por una sentencia de control VARIABLE, FVARIABLE, o BVARIABLE. ! VARIABLE crea entidades variables aritmticas que cuando son evaluadas por una llamada de SNA, realiza todas las operaciones con nmeros de punto flotante de doble precisin, truncando a un valor entero todos los resultados intermedios intermedio antes de proceder a la siguiente expresin. El resultado final es truncado a un entero. FVARIABLE crea una entidad variable de punto flotante. Slo trunca el resultado final. BVARIABLE crea una entidad variable booleana que retorna un 1 si el resultado es distinto de 0, en otro caso retorna 0.

! !

SNAs Relacionados
Los SNAs asociados con una variable son: BVentnum, Ventnum.

41

Entidad Grupo Numrico


Un grupo numrico es un conjunto de enteros. No hay limite en el tamao del conjunto o el valor de sus miembros. Los grupos numricos son tiles para grabar eventos o para describir el estado de un proceso cuando se est simulando.

Bloques Relacionados
Los bloques asociados con los grupos numricos son: ! ! ! JOIN coloca un valor dentro de un grupo numrico. REMOVE lleva un valor fuera de un grupo numrico. EXAMINE testea los valores en un grupo numrico.

SNAs Relacionados
El SNA asociado con un grupo numrico es GNentnum.

42

Entidad Grupo de Transacciones


Una grupo de transacciones es un conjunto de transacciones. No hay un limite en el nmero de transacciones en el grupo. Los grupos de transacciones son tiles para clasificar y acceder transacciones.

Bloques Relacionados
! ! ! ! ! JOIN coloca la transaccin ingresante dentro de un grupo de Transacciones. REMOVE lleva algn grupo de miembros fuera de un grupo de transacciones. EXAMINE testea los miembros de un grupo de transacciones. SCAN testea y/o modifica miembros de un grupo de transacciones. ALTER testea y/o modifica miembros de un grupo de transacciones.

SNAs Relacionados
El SNA asociado con grupo de transacciones es GTentnum.

43

PARTE III

BLOQUES DE CONTROL

44

Declaraciones de bloques de control


Las sentencias en un programa VisualSIS son o sentencias de bloques, que permiten construir bloques dentro del modelo, o sentencias de control que permiten crear entidades no-bloques que controlan el camino de la ejecucin de la simulacin. Las sentencias de control del lenguaje son ! ! ! ! ! ! ! ! ! ! ! ! BVARIABLE - define una entidad variable booleana. CLEAR - reestablece estadsticas y borra transacciones. EQU - asigna un entero a un nombre. FUNCTION - define una entidad funcin. FVARIABLE - define una entidad variable de punto flotante. INITIAL - inicializa o modifica una llave lgica, savevalue, o matriz. MATRIX - define una entidad matriz. QTABLE - define una entidad qtable. RESET - reinicializa la acumulacin de estadstica en los bloques. STORAGE - define una entidad storage. TABLE - define una entidad tabla. VARIABLE - define una entidad variable aritmtica.

45

BVARIABLE
Una sentencia BVARIABLE define una entidad bvariable. Sintaxis NOMBRE Etiqueta/Operadores NOMBRE XDescripcin Las entidades BVARIABLE permiten tomar decisiones en un nico bloque basado en el estado y valor de muchas entidades del lenguaje. Son conbinaciones booleanas de los valores de varios Atributos Numricos y otras variables. Dan como resultado 1 (uno), si las condiciones especificadas son cumplidas, o 0 (cero) si no lo son. Operadores Son permitidos tres tipos de operadores: operadores lgicos, condicionales y booleanos. Los operadores lgicos estn asociados con las entidades del lenguaje (facilities, storages, logicswitchs) y son usados para determinar el estado de estas entidades. Los operadores condicionales hacen comparaciones algebraicas entre operandos. Estos operadores deben ser indicados entre comillas simples. Los operadores booleanos permiten realizar operaciones AND y OR. Ejemplos LINEA BVARIABLE (BV$CLKANDBV$FASE) Nombre de referencia para esta entidad. Requerido. Expresin. Requerido. BVARIABLE X

Cuando es evaluada, el resultado 1 ("verdad") si las variables booleanas CLK y FASE son verdaderas cuando son evaluadas. De otra manera, la bvariable LINEA retorna 0 ("falso"). ESINT BVARIABLE FNI2

Esta bvariable determina si la Facility 2 cumple la condicin de "no estar interrumpida". Si es as, devuelve 1, sino 0. MASGDE BVARIABLE V2'G'5

En este ejemplo, la bvariable MASGDE devuelve 1 si la Variable 2 es mayor que 5 y cero en otro caso. Accin Cuando una sentencia BVARIABLE es reconocida, VisualSIS crea o redefine una entidad bvariable. La entidad bvariable creada es evaluada cuando un SNA de la clase BV, referenciando a esta entidad en particular, es encontrada por el procesador de VisualSIS. La expresin contenida en la sentencia BVARIABLE es evaluada en aritmtica de doble precisin, con

46

todos los SNAs regresando valores enteros. El resultado final es convertido a el entero 0, si es 0, o a 1 si el resultado es distinto de cero. Restricciones Especiales LOG() retorna una condicin de excepcin aritmtica si el argumento es negativo. SQR() retorna una condicin de excepcin aritmtica si el argumento es negativo. Algunos SNAs, tales como M1, PR y esos que requieren un parmetro, no pueden ser evaluados a menos que haya una transaccin activa. SNAs Relacionados BVentnum Resultado de evaluar la variable booleana entnum.

47

CLEAR
Una sentencia CLEAR retorna al modelo corriente al estado sin uso. Sintaxis CLEAR Etiqueta/Operadores No posee. Accin La sentencia de control CLEAR resetea todos los acumuladores estadsticos, elimina todas las transacciones del modelo, y luego prepara a cada bloque GENERATE con su primer transaccin. El estado de todas las facilitys y storages es reseteado mostrando una condicin de desocupado. El contenido de todos los bloques es puesto en cero. Cuando una sentencia CLEAR es realizada: Todas las transacciones son eliminadas del modelo corriente. Los contadores actuales son seteados a cero. El reloj del sistema es seteado en cero. Las facilitys se vuelven ociosas y disponibles. Las tablas son seteadas en cero. Los savevalues son seteados en cero. Las llaves lgicas son reseteadas. Los elementos de matriz son seteados en cero. Los storages son seteados a totalmente disponible. Los tiempos de facility, storages, colas, y cadenas de usuarios son seteados a 0. Las cantidades totales son seteados a 0. Los valores mnimos y mximos son seteados a los contenidos actual en colas, cadenas de usuarios y storages. Los generadores de nmeros aleatorios no son reseteados. El contador de transacciones generadas en un bloque GENERATE es seteado a 0. Los miembros de todos los grupos numricos son removidos. Restricciones Especiales Ninguna. SNAs Relacionados Ninguno.

48

EQU
Una sentencia EQU evala una expresin y asigna el resultado truncado a el valor de un nombre Sintaxis NOMBRE Etiqueta/Operadores NOMBRE XEjemplos FECHA EQU 1995 Referencia al nombre que recibe el valor. Requerido. Expresin. Requerido. EQU X

Esta sentencia define al nombre FECHA y le asigna el valor 1995. Referencias futuras a el nombre FECHA son equivalentes a 1995. PRECIO EQU 9.50

En este ejemplo, PRECIO tendr el valor 9, que es el resultado de la evaluacin de la expresin. Accin Cuando se ingresa una sentencia EQU, VisualSIS crea una redefinicin del nombre y evala la expresin de la sentencia. El nombre creado es asociado con el valor igualado al resultado truncado de la evaluacin de la expresin. Cuando en el modelo se referencia al nombre declarado, ste es reemplazado por su valor. El campo de expresin de la sentencia EQU es evaluada en aritmtica de doble precisin, con todos los SNAs regresando un valor entero. El resultado final es convertido a un entero truncndolo y asignndolo al valor del nombre. Las expresiones son evaluadas de acuerdo con las reglas elementales del lgebra. Se puede utilizar operadores lgicos o aritmticos. Si un SNA es utilizado en la fila de una expresin, ellos son evaluadas con respecto a la transaccin activa. Si no hay una transaccin activa porque la simulacin no ha sido comenzada, y una es necesitada para la evaluacin., algn mensaje de error ser escrito en pantalla. Un nombre al que no se le ha asignado explcitamente un valor no puede ser usado como un trmino en una expresin. Para hacer esto se debe asignar un valor con una sentencia EQU antes de que la expresin sea evaluada. Restricciones Especiales EQU. LOG() retorna una condicin de excepcin aritmtica si el argumento es negativo. SQR() retorna una condicin de excepcin aritmtica si el argumento es negativo. Algunos SNAs, tales como M1, PR y esos que requieren un parmetro, no pueden ser evaluados a menos que haya una transaccin activa. SNAs Relacionados Ninguno. Los valores de las etiquetas de bloques no pueden ser cambiados con una sentencia

49

FUNCTION
Una sentencia FUNCTION, y sus sentencias seguidas, define una funcin de SNAs y distribuciones probabilisticas. Sintaxis NOMBRE FUNCTION A,B

Etiqueta/Operadores NOMBRE Referencia al nombre de la entidad. Requerido. A Argumento de la funcin. Requerido. El operando debe ser un nombre, entero positivo, SNA, o SNA*parmetro. B Tipo de la funcin (una letra) seguida inmediatamente por el nmero de pares de datos en la funcin seguida por sentencias. Requerido. Accin Una sentencia FUNCTION junto con una o ms sentencias de funciones, define una entidad funcin. Referencias posteriores a un SNA de clase FN deber evaluar la funcin y retornar el resultado. Existen varios tipos de funciones que deben ser consideradas individualmente. El tipo est especificado en el operando B de la sentencia FUNCTION. Despus de ingresar uno o ms pares de datos separados por barras, denotados como X1,Y1/ X2,Y2 / y as sucesivamente. Cada par de datos tiene un valor X y un valor Y (o SNA) separados por comas. Las sentencias de funciones crean tablas en el modelo corriente las cuales permiten que una funcin de una variable sea evaluada. Cuando VisualSIS encuentra una referencia a un SNA FNentnum, ste evala la entidad funcin y regresa el resultado. Las tablas y la manera en que ellas son referenciadas depende del tipo de funcin. La clases SNA FN usadas en el operando B de los bloques GENERATE y ADVANCE son llamadas funciones modificadoras. Tienen reglas especiales de evaluacin. Cuando una transaccin ingresa en un bloque GENERATE o ADVANCE con una funcin modificadora el resultado de doble precisin de la funcin es calculado. Este es multiplicado por una forma de doble precisin de el evaluado operando A. El resultado es truncado y usado como el incremento en el bloque GENERATE o ADVANCE. Existen 5 tipos diferentes de entidades funciones: Funciones de Tipo C

Funcin de estimacin "continua". Obtiene un valor X, tras una interpolacin lineal, la funcin trunca el resultado y regresa un entero como un valor Y. Un argumento aleatorio es un caso especial. En una funcin de tipo C, sin un argumento aleatorio, los pares de datos definen una funcin lineal del argumento. El primer par de datos define el punto de la izquierda y el ltimo par de datos define el punto ms hacia la derecha. Los valores de X e Y son cargados como nmeros de punto flotante de simple precisin. La evaluacin de la funcin comienza con la evaluacin del argumento. El resultado es siempre un entero, y es usado para identificar el segmento de linea de la funcin. El argumento es luego usado en una interpolacin lineal de doble precisin para arribar al resultado de doble presicin de la funcin. Si es

50

usado en una funcin modificadora, el resultado de doble precisin es tomado. En otro caso, este es truncado a un entero y regresado como el resultado de la evaluacin de la funcin. Si el argumento cae fuera del punto final de la definicin de la funcin, el valor que est ms prximo al punto final es retornado. Cuando el operando A de la sentencia FUNCTION es una clase SNA RN, la funcin tiene un argumento aleatorio. Una funcin de tipo C con un argumento aleatorio es usada para definir una distribucin probabilstica continua. Este es un caso especial. La funcin es especificada como una funcin de distribucin acumulativa (CDF) con 0 como el valor del punto final izquierdo y 1 el valor del punto final derecho. Como antes, la CDF esta especificada como una funcin lineal con un generador de nmeros aleatorios usado como el argumento. Cuando esta funcin es evaluada, un nmero aleatorio entre 0 y .999999 es tomado del generador de nmeros aleatorios y es usado en una interpolacin lineal para arribar al valor de doble precisin de la funcin. Si no es usada como funcin modificadora, el resultado es truncado a un numero entero. Ejemplo SALIDA FUNCTION 1.1,10.1/20.5,98.7/33.3,889.2 V$ENTRADA,C3

Este ejemplo define a una funcin lineal con dos segmentos de linea. En este ejemplo, todos los nmeros son cargados en la forma de punto flotante de simple precisin. Cuando la entidad funcin es evaluada por un SNA FN$SALIDA, primero el argumento de la funcin V$ENTRADA es evaluado. Si el resultado del argumento esta fuera del rango definido, 1.1 a 33.3, el punto extremo ms cercano es retornado. Por ejemplo, si V$ENTRADA retorna un valor menor o igual a 1, FN$SALIDA retorna 10 (10.1 como una funcin modificadora).

Funciones de Tipo D

Funcin de estimacin discreta. A cada valor de argumento de probabilidad le es asignado un valor entero. Un argumento aleatorio es una caso especial. En una funcin de tipo D, sin un argumento aleatorio, los pares de datos definen un conjunto de valores de argumentos los cuales son asociados con valores de funciones especificas. Los valores X en la funcin no deben ser decrecientes. Internamente son almacenados como enteros. Cuando la funcin es evaluada, los valores X de la funcin son buscados desde el valor ms bajo hasta el ms alto. Cuando un valor X mayor o igual que el valor de argumento es encontrado, el valor entero correspondiente Y es retornado. Si no existe tal valor X, el valor Y o valor de nombre asociado con el valor grande X es retornado. Ejemplo DIS1 FUNCTION 1,6/2,7/6,9/7,10/9,12 X$A2,D5

Una funcin de tipo D con un argumento aleatorio es usado para definir una distribucin probabilistica discreta. La funcin es especificada como una funcin de distribucin acumulativa (CDF) con 0 como el valor del punto final izquierdo y 1 el valor del punto final derecho. Cuando la funcin es evaluada, un nmero aleatorio entre 0 y .999999 es tomado del generador de nmeros aleatorios. El valor ms chico X en la funcin que es mayor o igual que el nmero aleatorio es seleccionado. El valor asociado Y es retornado como un valor entero de la funcin. Ejemplo RAN1 FUNCTION 0,0/.2,7/.4,6/.8,9/1.0,10 RN1,D5

51

Funciones de Tipo E

Funcin de atributos evaluados en forma discreta. Cada valor de argumento o masa probabilistica es asignado a un SNA a ser evaluado. Un argumento aleatorio es un caso especial. Una funcin de tipo E es evaluada de la misma manera que una de tipo D, excepto que una de tipo E requiere un paso mas. Despus que el valor X es elegido, el SNA asociado (valor Y) es evaluado y retornado como el resultado de la funcin. Ejemplo EDISC FUNCTION X$QRA,E5 1,S$STOR1/3,S$STOR2/5,S$STOR3/9,S$STOR5/10,S$STOR6

Funciones de Tipo L

Funcin de estimacin de tipo lista. El valor de argumento es usado para determinar la posicin de la lista del valor a ser retornado. La funcin define una lista de enteros donde el resultado es elegido. Cuando la funcin es evaluada, el argumento es evaluado y usado como el nmero ordinal (valorX) de la lista de miembros. El valor Y con la posicin dentro de la lista numerada es retornado como el resultado. Si el argumento es muy grande o menor que 1, un error de stop ocurre. Los valores de X deben comenzar en 1 y ser incrementados en 1 en cada par de datos sucesivos. Ejemplo LISTTYPE FUNCTION Q$BARB, L5 1, PART1/2,PART2/3,PART3/4,PART4/5,PART5

Funciones de Tipo M

Funcin estimacin de lista de argumentos. El valor de argumento es usado para determinar la posicin de la lista del SNA a ser evaluado y regresado como el resultado. Una funcin de tipo M es evaluada de la misma forma que de una funcin de tipo L, excepto que requiere un paso mas. Luego de que la posicin de la lista es elegida, el SNA asociado es evaluado y retornado como el valor Y. Ejemplo MLIST FUNCTION X$NAME1,M5 1,Q$NAM1/2,Q$NAMX/3,Q$NAM4/Q$NAM6/5,F$TAN1

Reglas para las Funciones Para crear funciones se debe tener en cuenta varias reglas. Estas son: Los valores de X de las declaraciones seguidas a la funcin no deben decrecer. Las declaraciones seguidas a la funcin no pueden contener mas de 50 pares de datos. Si mas de 50 pares de datos son deseados, la funcin deberia estar dividida en mltiples funciones que sean accedidas por una funcin cuyo propsito es solamente acceder a estas funciones. Una funcin que tiene un argumento aleatorio debe describir una distribucin probabilistica acumulativa vlida en las declaraciones seguidas a la funcin. Todos los campos en una sentencia de funcin son requeridos.

52

Todos los valores X e Y en las declaraciones seguidas a la funcin son requeridos. El nmero de pares de datos declarados en el operando B de la sentencia FUNCTION deben corresponder a pares separados por [/], en las declaraciones seguidas a la funcin. X1, el primer valor de probabilidad especificando una funcin continua aleatoria debe ser 0. Los valores CDF deben ser no negativos, no decrecientes , y no deben exceder a 1. Las declaraciones seguidas a la funcin no tienen campos de comentario. En las declaraciones seguidas a la funcin el valor X es seguido de [, ], [, ] es seguido por un valor Y, un valor Y es seguido por [/] o [CR], y [/] es seguido de un valor X. Los valores numricos estn cargados como enteros, excepto las funciones del tipo C donde ellos estn cargados como un numero de punto flotante de simple precisin. Las CDFs deben ser no decrecientes enter 0 y 1, inclusive. Algunas probabilidades en funciones del tipo C son obtenidas por el intervalo mas a la derecha, en otro caso la prdida de probabilidades es un error. Las funciones del tipo C, D, y L no pueden tener SNAs para valores Y. Las funciones M, y E deben tener SNAs para valores Y. Las funciones L y M no pueden tener argumentos aleatorios. Las declaraciones seguidas a las funciones del tipo L y M deben tener valores secuenciales de X comenzando en 1.

SNAs Relacionados FNentnum. Resultado de evaluar la funcin entnum.

53

FVARIABLE
Una sentencia FVARIABLE define una entidad variable aritmtica de doble precisin. Esto proporciona clculos aritmticos complejos dentro de la simulacin. Sintaxis NOMBRE Etiqueta/Operadores NOMBRE XNombre de referencia para esta entidad. Requerido. Expresin. Requerido. FVARIABLE X

Ejemplo VAR1 FVARIABLE 5#LOG(Q$WAITINGLINE)

Esta sentencia define una entidad variable de punto flotante que ser evaluada cuando V$VAR1 es encontrada. Las variables definidas con ambas sentencias VARIABLE y FVARIABLE son accedidas por SNA de clase V. Cuando el SNA V$VAR1 es evaluado, la expresin que define la entidad variable llamada VAR1 debe ser evaluada. Esta comienza con la evaluacin del SNA Q$WAITINGLINE. El logaritmo del resultado de doble precisin es calculado y multiplicado por 5. El resultado es truncado y retornado como el valor de el SNA. Accin Cuando una sentencia FVARIABLE es encontrada, VisualSIS crea o redefine una entidad variable de punto flotante. La entidad variable creada es evaluada cuando un SNA de clase V, referenciando a esta entidad particular, es encontrada por el procesador de VisualSIS. La expresin contenida en una sentencia FVARIABLE es evaluada en aritmtica de doble precisin. El resultado final es convertido a un entero. La entidad variable aritmtica de punto flotante es diferente a una entidad aritmtica definida por una sentencia VARIABLE. Una sentencia VARIABLE define una entidad variable aritmtica la cual trunca cada resultado intermedio antes de proceder al prximo clculo. Una sentencia FVARIABLE realiza el truncamiento slo al resultado final, no a valores intermedios. Restricciones Especiales LOG() retorna una condicin de excepcin aritmtica si el argumento es negativo. SQR() retorna una condicin de excepcin aritmtica si el argumento es negativo. Algunos SNAs, tales como M1, PR y esos que requieren un parmetro, no pueden ser evaluados a menos que haya una transaccin activa. SNAs Relacionados Ventnum. Resultado de evaluar la variable entnum.

54

INITIAL
Una sentencia INITIAL inicializa una llave lgica, savevalue, o un elemento de una entidad matriz. Sintaxis INITIAL Etiqueta/Operadores A Llave lgica, savevalue, o elemento de una matriz especificada como SNA. El operando A debe tener la forma de un SNA de clase LS, X, o MX. Requerido. El operando debe ser LSenteropos, LS$nombre, Xenteropos, X$nombre, MXenteropos (), o MX$nombre(). Las coordenadas deben ser enteropos o nombre. B Valor a ser asignado. El default es 1. Opcional. El operando debe ser nulo, entero o nombre. Accin La sentencia INITIAL causa que un valor, especificado por el operando B, sea asignado a una entidad llave lgica, savevalue, o matriz especificado por un SNA de clase LS, MX, o X en el operando A. Si el operando B no es usado, un valor de 1 es asignado a la entidad, o elemento. Si el operando A especifica una llave lgica, solamente un valor 0 1 es asignado. Si el operando B es explcitamente especificado como 0, el valor de 0 es asignado. En otro caso, el valor 1 es asignado. Ejemplo INITIAL MX$INVENTARIO(PART_39, NIVELSTOCK) , 200 A,B

Esta sentencia asigna el valor 200 al elemento de la entidad matriz llamada INVENTARIO en la fila nmero PART_39, y nmero de columna de NIVELSTOCK. Los nombres PART_39 y NIVELSTOCK deben tener previamente asignados el entero apropiado en una sentencia EQU. Restricciones Especiales El operando A debe tener la forma de un SNA de clase LS, X, o MX. No se puede usar parmetros de transacciones en ninguna parte del operando A.

SNAs Relacionados LSentnum Llave lgica. El valor de la llave lgica entnum es retornado. MXentnum (m,n) Matriz savevalue. El valor de fila m, columna n de la matriz entnum es retornado. Xentnum Savevalue. El valor del savevalue entnum es retornado. Bloques Relacionados LOGIC Asigna un valor a una llave lgica. MSAVEVALUE asigna o incrementa un elemento a la entidad matriz. SAVEVALUE asigna o incrementa una entidad savevalue.

55

MATRIX
Una sentencia MATRIX define una entidad matriz. Sintaxis NOMBRE Etiqueta/Operadores NOMBRE A B C Ejemplo INVENTARIO MATRIX ,1000,5 Referencia el nombre de esta entidad. Requerido. Campo sin uso. Nmeros de filas de la matriz. Requerido. El operando debe enteropos. Nmero de columnas de la matriz. Requerido. El operando debe ser enteropos. MATRIX A,B,C

Esta sentencia define una entidad matriz llamada INVENTARIO con 1000 filas y 5 columnas. Accin Una sentencia MATRIX crea una matriz en el modelo corriente. Una entidad matriz est limitada a no ms de 8191 elementos. Si se necesitan ms elementos se deben definir entradas adicionales en la matrices. Restricciones Especiales Est limitada a 8191 entradas.

SNAs Relacionados MXentnum (m,n) Elemento de la entidad matriz. El valor de fila m, columna n de la matriz entnum es retornado. Bloques Relacionados MSAVEVALUE asigna o incrementa un elemento a la entidad matriz.

56

QTABLE
Una sentencia QTABLE inicializa una tabla de distribucin de frecuencias de tiempo en colas. Sintaxis NOMBRE Etiqueta/Operadores NOMBRE A nombre. B Lmite superior de la primera clase de frecuencia. El mximo argumento que causa que el primer grupo de frecuencias sea actualizado. Requerido. El operando debe ser 0 enteropos. C Tamao de las clases de frecuencias. Es la diferencia entre el lmite superior y el lmite inferior de cada clase de frecuencias. Requerido. El operando debe ser enteropos. D Cantidad de clases de frecuencias. No puede exceder a 8191. Requerido. El operando debe ser enteropos. Accin Usando una sentencia de definicin QTABLE las estadsticas sern guardadas automticamente para las transacciones que entran a un bloque QUEUE y luego a un bloque DEPART referenciando a la misma entidad cola referida por el operando A de la sentencia de definicin QTABLE. Cuando una transaccin entra a un bloque QUEUE que hace referencia a una entidad cola que tiene una o ms qtables, un tiempo de marca especial es creado y guardado con la transaccin. Para coleccionar un dato, una transaccin debe entrar en un bloque DEPART que referencie a esta misma cola. Cuando tal bloque DEPART es ingresado, un argumento de la tabla es calculado sustrayendo el viejo tiempo de marca guardado desde el el tiempo de sistema actual. Si el argumento de la tabla calculado es menor o igual que el operando B de la sentencia QTABLE, la primera clase de frecuencia de la tabla es elegida. Si el argumento de la tabla no se ajusta dentro de la primera clase de frecuencia, la clase es elegida dividiendo el valor del argumento por el operando C de la sentencia QTABLE. El lmite inferior de una clase de frecuencia es includo en la clase previa. Si la tabla no es lo bastante grande para acomodar este valor, la ltima clase de frecuencia de la tabla es elegida. Luego el entero en la clase de frecuencia seleccionada y el contador acumulado para todas las clases es incrementado por el operando B de la sentencia DEPART. Finalmente, los acumuladores para la media y desviacin estndar de la qtable son actualizados. Ejemplo WAITTIMES QTABLE WAITINGLINE,100,100,10 Nombre de referencia para esta entidad. Requerido. Nombre de la entidad cola. Requerido. El operando debe ser enteropos, o QTABLE A,B,C,D

En este ejemplo, la distribucin de los intervalos QUEUE-DEPART son ingresados dentro de la tabla llamada WAITTIMES. La sentencia QTABLE crea una tabla con un total de 10 clases de frecuencias. Todos los intervalos de tiempo por debajo de 100 causan la actualizacin de la primera clase de frecuencia de la tabla. Normalmente esto significa que el entero para la primer clase de frecuencias sea incrementado en 1. Sin embargo, un factor de peso est disponible en el operando B del bloque DEPART. Este tiene el efecto de adicionar el factor de peso al entero de la clase de frecuencia. El factor de peso es aplicado a la media y desviacin estndar tambin, teniendo el mismo efecto de mltiples entradas dentro del bloque DEPART.

57

Si el intervalo de tiempo de la transaccin es mayor que 900, esta se deber poner en la dcima, y ltima, clase de frecuencia. Si el intervalo de tiempo no cae ni en la primer clase ni en la ltima clase de frecuencias, ste es usado para elegir desde los grupos de frecuencias de igual espacio desde la segunda hasta la novena. Por ejemplo, si el intervalo de tiempo es 290, la tercera clase de frecuencias ser actualizada. Restricciones Especiales Ninguna. SNAs Relacionados Qentnum Contenido actual de la cola. El contenido actual de la cola entnum. QAentnum Contenido promedio de la cola. La cantidad de tiempo ponderado promedio de la cola entnum. QCentnum Cantidad de entradas total. La suma de todas las entradas a la cola entnum. QMentnum Contenido mximo de la cola. El contenido mximo de la cola entnum. QTentnum Tiempo de residencia en cola promedio. La cantidad de tiempo ponderado promedio de la cola entnum. QXentnum Tiempo de residencia en cola promedio excluyendo entradas cero. La cantidad de tiempo ponderado promedio de la cola entnum no contando entradas con tiempo de residencia cero. QZentnum Cantidad de entradas cero. El nmero de entradas a la cola entnum con un tiempo de residencia cero. Bloques Relacionados peso opcional. QUEUE registra estadsticas para el comienzo de un tiempo de espera. DEPART - registra estadsticas para el final de un tiempo de espera usando un factor de

58

RESET
Una sentencia RESET marca el comienzo de un perodo de medida. Sintaxis RESET Accin Una sentencia RESET inicializa los acumuladores estadsticos sin remover las transacciones de la simulacin. Esto es til para rplica de simulacin de experimentos. RESET inicializa el tiempo de comienzo del perodo de medida al reloj de sistema actual, y luego inicializa los acumuladores estadsticos para facilitys, colas, storages, tables y qtables. Una sentencia RESET no remueve transacciones del modelo corriente, mientras que una sentencia CLEAR si lo hace. RESET no tiene efecto sobre generadores de nmeros aleatorios, el reloj del sistema, o la numeracin de transacciones. Los productos de espacio-tiempo de facilitys, storages, queues y cadena de usuarios son seteados a cero. Las cantidades totales son seteados iguales a las cantidades actuales. Los valores mximos y mnimos son seteados iguales al contenido actual en queues, cadenas de usuario, y storages. Los generadores de nmeros aleatorios no son reseteados. Las cantidades totales de los bloques son setados a cero. Las cantidades y valores de tables y qtables son seteados a cero. En lo que respecta a savevalues, logicswitchs y matrices, VisualSIS permite la ejecucin de cuatro tipos de RESET distintos: 1. Los valores de savevalues y matrices son seteados a cero y las logicswitchs a estado "reset". 2. Quedan con el ltimo valor que tenan despus de finalizada la simulacin previa. 3. Son inicializados con el valor que se les di en el bloque INITIAL, y los que no fueron inicializados son seteados en cero / "reset". 4. Son inicializados con el valor que se les di en el bloque INITIAL, y los que no fueron inicializados quedan con el ltimo valor. Restricciones Especiales Ninguna. SNAs Relacionados Ninguno.

59

STORAGE
Una sentencia STORAGE define una entidad storage en el modelo corriente. Sintaxis NOMBRE Etiqueta/Operadores NOMBRE A Ejemplo SALON STORAGE 20 Referencia al nombre de esta entidad. Requerido. Capacidad tatal del storage. Requerido. El operando debe ser enteropos. STORAGE A

Esta sentencia define una entidad storage llamada SALON con una capacidad total de 20 unidades. Accin Una sentencia STORAGE define una entidad storage en el modelo corriente. Cuando una transaccin intenta ingresar en un bloque ENTER, su demanda de unidades de storage es comparada con la disponibilidad del storage. Si la demanda puede ser otorgada, la transaccin ingresa al bloque ENTER y la capacidad del storage disponible es reducida. Si la demanda de la transaccin no puede ser satisfecha, la transaccin queda bloqueada en el modelo corriente en la Delay cahin de esa entidad storage. Restricciones Especiales Ninguna. SNAs Relacionados Sentnum Storage en uso. Devuelve la cantidad de unidades de storage actualmente en uso por las transacciones que entraron al storage entnum. SAentnum Storage en uso promedio. Devuelve el tiempo ponderado promedio de unidades de storage en uso en el storage entnum. SCentnum Cantidad de uso del storage. Devuelve la cantidad de unidades de storage a ser usadas en el storage entnum. SEentnum Storage vacio. Devuelve 1 si el storage entnum est vacio, 0 en otro caso. SFentnum Storage lleno. Devuelve 1 si el storage entnum est completamente en uso, 0 en otro caso. SRentnum Utilizacin del storage. Devuelve la fraccin del uso total representado por el storage en uso promedio del storage entnum. Srentnum es expresado en partes por mil y por lo tanto retorna un entero de 0-1000. SMentnum Uso del storage mximo. Devuelve la cantidad mxima de unidades de storage en uso del storage entnum. STentnum Tiempo de uso promedio por unidad en el storage entnum. SVentnum Storage en estado disponible. Devuelve 1 si el storage entnum est en estado disponible, 0 en otro caso.

60

Bloques Relacionados ENTER toma o espera por capacidad de storage disponible. LEAVE libera capacidad de storage.

61

TABLE
Una sentencia TABLE inicializa una tabla de distribucin de frecuencias. Sintaxis NOMBRE Etiqueta/Operadores NOMBRE Referencia al nombre de esta entidad. Requerido. A Argumento de la tabla. El item de dato cuya distribucin de frecuencia ser tabulada. Requerido. B Lmite superior de la primera clase de frecuencias. El argumento mximo que causa que la primer clase de frecuencias sea actualizada. Requerido. El operando debe ser un nombre o entero. C Tamao de las clases de frecuencias. La diferencia entre el lmite superior y el lmite inferior de cada clase de frecuencias. Requerido. El operando debe ser un enteropos. D Cantidad de clases de frecuencias. No puede exceder los 8191. Requerido. El operando debe ser enteropos. Accin Una sentencia TABLE es usada para definir una entidad table para coleccionar una distribucin de frecuencias, sus frecuencias relativas acumulativas, su media, y su desviacin estndar. Para coleccionar un item de dato, una transaccin debe ingresar a un bloque TABULATE que referencie a esta entidad TABLE. Cuando un bloque TABULATE es ingresado, el argumento de la tabla (operando A en la sentencia TABLE) es evaluado. Si ste es menor o igual que el operando B de la sentencia TABLE, la primer clase de frecuencias es actualizada. Si el argumento de la tabla no encaja dentro de la primer clase de frecuencias, la clase es elegida dividiendo el valor del argumento por el operando C de la sentencia TABLE. El lmite inferior de una clase de frecuencias est incluido dentro de la clase previa. Si la tabla no es lo suficientemente grande como para acomodar este valor, la ltima clase de frecuencias es elegida. Luego el entero en la clase de frecuencia elegida y el contador acumulado es incrementado por el operando B de la sentencia TABULATE. El incremento por defecto es de 1. Finalmente, los acumuladores para la media y la desviacin estndar del argumento de la tabla son actualizados. Ejemplo SALESTABLE TABLE P$PRICE, 995, 1000, 10 En este simple ejemplo, la distribucin del parmetro PRICE de transacciones es ingresado dentro de la tabla llamada SALESTABLE. La sentencia TABLE crea una tabla con un total de 10 clases de frecuencias. Todas los valores de PRICE menores a 995 actualizan la primera clase de frecuencias. Normalmente esto significa que el entero para la primer clase de frecuencias es incrementado en 1. Sin embargo, un factor de peso est disponible en el operando B del bloque TABULATE. Este tiene el efecto de adicionar el factor de peso al entero para la clase de frecuencia. El factor de peso es aplicado a la media y a la desviacin estndar tambin, teniendo el efecto de mltiples entradas dentro del bloque TABULATE. TABLE A,B,C,D

62

Si el valor no encaja dentro de la primer clase de frecuencias y el valor del parmetro de la transaccin es mayor que 8995, la dcima, y ltima, clase de frecuencias deber ser actualizada. Si el valor del parmetro PRICE es mayor que 900, este deber ser colocado en la dcimo, y ltimo, clase de frecuencias. Si el valor del parmetro PRICE no encaja en ni en la primer clase ni en la ltima, ste es usado para elegir desde la segunda a la novena clase. Por ejemplo, si el valor de PRICE es de 2949, la tercera clase de frecuencias es elegida para ser actualizada. Restricciones Especiales Las entidades table estn limitadas a no ms de 8191 entradas.

SNAs Relacionados TBentnum Promedio no ponderado de entradas en la tabla entnum. TCentnum Cantidad de entradas no ponderadas a la tabla entnum. TDentnum Desviacin estndar de entradas no ponderadas en la tabla entnum.

Bloques Relacionados TABULATE registra estadsticas para un item de dato en una entidad table.

63

VARIABLE
Una sentencia VARIABLE define una entidad variable aritmtica. Esta permite hacer clculos complejos dentro de una simulacin. Los resultados intermedios son truncados. Sintaxis NOMBRE Etiqueta/Operadores NOMBRE X Ejemplo VAR1 VARIABLE 5#LOG(Q$WAITINGLINE) Referencia al nombre de esta entidad. Requerido. Expresin. Requerido. VARIABLE X

Esta sentencia define a una entidad variable que ser evaluada cuando V$VAR1 es encontrado. Cuando este SNA es evaluado, la expresin definiendo la entidad variable llamada VAR1 debe ser evaluada. Esta comienza con la evaluacin del SNA Q$WAITINGLINE. El logaritmo del resultado de doble precisin es primero truncado y luego multiplicado por 5. Accin Cuando una sentencia VARIABLE es ingresada, VisualSIS crea una entidad variable aritmtica. La entidad variable es evaluada cuando un SNA de clase V, refierindose a sta entidad particular, es encontrada por el procesador de VisualSIS. La expresin contenida en la sentencia VARIABLE es evaluada con aritmtica de doble precisin, con todos los SNAs retornando valores enteros. El resultado final y los resultados intermedios son tambin truncados. Una entidad variable definida por una declaracin VARIABLE es distinta de una entidad variable aritmtica de "punto flotante". Una declaracin VARIABLE define una variable aritmtica que trunca cada resultado intermedio antes de proceder con el siguiente clculo. Una declaracin FVARIABLE define una entidad variable aritmtica de "punto flotante" la cual trunca solamente el resultado final y no los resultados intermedios. Restricciones Especiales LOG() retorna una condicin de excepcin aritmtica si el argumento es negativo. SQR() retorna una condicin de excepcin aritmtica si el argumento es negativo. Algunos SNAs, tales como M1, PR y esos que requieren un parmetro, no pueden ser evaluados a menos que haya una transaccin activa.

SNAs Relacionados Ventnum Devuelve el resultado de evaluar la entidad variable aritmtica entnum.

64

PARTE IV

BLOQUES EJECUTABLES

65

Declaraciones de bloques ejecutables


Las sentencias de bloques causan que un bloque sea creado, el cual realiza una accin cuando una transaccin ingresa a ste. Las sentencias de bloques son insertadas dentro del programa salvable y el bloque asociado es insertado dentro de su correspondiente posicin en el modelo corriente. Cuando un bloque es borrado desde el programa salvable, la entidad bloque correspondiente es removida del modelo corriente. Operandos Las sentencias tienen usualmente uno o ms operandos que deben ser especificados por el programador. Muchos operandos tienen varias formas diferentes que son vlidas. Sentencias de Bloques del GPSS Las sentencias de bloque del lenguaje son ! ADVANCE - coloca transacciones en la cadena de eventos futuros. ! ALTER - testea y modifica transacciones en un grupo. ! ASSEMBLE - espera por y destruye transacciones relacionadas. ! ASSIGN - modifica parmetros de transacciones. ! BUFFER - coloca transacciones en el final da la cadena de eventos corrientes, sin prioridad. ! COUNT - coloca el contador de entidades dentro de un parmetro de una transaccin. ! DEPART - elimina transacciones de una entidad cola. ! ENTER - ocupa o espera por unidades de storage en una entidad storage. ! EXAMINE - testea un grupo relacionado. ! FAVAIL - cambia el estado de una entidad facility a "disponible". ! FUNAVAIL - cambia el estado de una entidad facility a "no disponible". ! GATE - testea una entidad y modifica el flujo de transacciones. ! GATHER - espera por transacciones relacionadas. ! GENERATE - crea transacciones y las coloca en la cadena de eventos futuros. ! INDEX - modifica el parmetro de una transaccin. ! JOIN - coloca un miembro dentro de un grupo numrico o de transacciones. ! LEAVE - libera unidades de storage de una entidad storage. ! LINK - mueve transacciones a una entidad cadena. ! LOGIC - modifica una entidad llave lgica. ! LOOP - decrementa un parmetro, salta a un bloque diferente si el resultado es distinto de cero. ! MARK - coloca un valor de la hora del sistema dentro del parmetro de una transaccin. ! MATCH - espera por transacciones relacionadas. ! MSAVEVALUE - asigna un valor a un elemento de una entidad matrix. ! PREEMPT - destituye la propietariedad de una facility. ! PRIORITY - modifica la prioridad de una transaccin. ! QUEUE - adiciona contenido a una entidad queue. ! RELEASE - libera una facility. ! REMOVE - saca un miembro de un grupo numrico o grupo de transacciones. ! RETURN - libera una facility. ! SAVAIL - cambia el estado de una entidad storage a "disponible". ! SAVEVALUE - asigna un valor a una entidad savevalue. ! SCAN - testea un grupo de transacciones, coloca un valor en un parmetro de una transaccin activa. ! SEIZE - asume la propietariedad de una facility o espera por ella.

66

! ! ! ! ! ! ! !

SELECT - coloca un nmero en un parmetro de una entidad seleccionada. SPLIT - crea transacciones relacionadas. SUNAVAIL - cambia el estado de una entidad storage a " no disponible". TABULATE - actualiza una entidad table. TERMINATE - destruye transacciones, decrementa el contador de terminacin. TEST - testea condiciones aritmticas y modifica el flujo de transacciones. TRANSFER - mueve hacia un bloque especificado. UNLINK - remueve transacciones de una entidad cadena de usuario.

67

ADVANCE
Un bloque ADVANCE retarda el progreso de una transaccin por una cantidad especificada de tiempo de simulacin. Sintaxis ADVANCE Operadores A El incremento de tiempo medio. Requerido. El operando debe ser un nombre, entero, SNA, o SNA*parmetro. B La desviacin del incremento de tiempo o, si es una funcin, la funcin modificadora. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo ADVANCE 100, 50 A,B

Este ejemplo crea un bloque que escoge un nmero aleatorio entre 50 y 150 inclusive (100 ms/menos 50), y demora el progreso de la transaccin esa cantidad de tiempo de simulacin. Accin Un bloque ADVANCE calcula un incremento de tiempo y coloca la transaccin de entrada en la FEC por esa cantidad de tiempo de simulacin. El incremento de tiempo puede ser calculado de varias maneras. Si nicamente el operando A es especificado, ste es evaluado y usado como el incremento de tiempo. Si los operandos A y B son presentados, y B no tiene especificado una funcin, ambos A y B son evaluados y un nmero aleatorio entre A-B y A + B, inclusivamente, es usado como el incremento de tiempo. El generador de nmeros aleatorios nmero 1 es usado como la fuente de los nmeros aleatorios. Si B es un SNA de clase FN, llamada funcin modificadora, el resultado de doble precisin de evaluar B es multiplicado por el resultado de la evaluacin del operando A. El producto es truncado a un entero y usado como el incremento de tiempo. Si el incremento de tiempo es cero (ADVANCE 0), la transaccin es ubicada en la CEC en frente de sus pares de igual prioridad. Restricciones Especiales stop. Modo de rechazo Normalmente, las transacciones no son rechazadas a ingresar a un bloque ADVANCE. Sin embargo, como a las transacciones interrumpidas de alguna facility no le es permitido existir en la FEC, dicha transaccin no puede entrar en el bloque ADVANCE con incremento de tiempo positivo (distinto de cero). Cuando una transaccin es rechazada a entrar, su indicador de demora es seteado y permanece as hasta que la transaccin ingresa en modo "simultaneo" a un bloque TRANSFER. Si un nmero negativo es calculado como el incremento de tiempo, ocurre un error de

68

ALTER
Un bloque ALTER modifica la prioridad o un parmetro de miembros seleccionados de un grupo de transacciones. Sintaxis ALTER O Operadores O Operador condicional. Relaciona los operandos E y F para que la alteracin ocurra. Opcional. El operando debe ser nulo, E, G, GE, L, LE, MAX, MIN o NE. A Grupo de transacciones. Grupo cuyos miembros debern ser testeados para alterarlos. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Lmite. El nmero mximo de transacciones a ser alteradas. Por defecto son todas (ALL). Opcional. El operando debe ser ALL, nulo, nombre, enteropos, SNA, o SNA*parmetro. C Atributo alterado. PR o nmero de parmetro. El parmetro de transaccin miembro a ser alterado, o PR para alterar la prioridad de dicha transaccin. Requerido. El operando debe ser PR o nombre, enteropos, SNA, o SNA*parmetro. D Valor de reemplazo. El valor que debe ser reemplazado en el atributo C. Requerido. El operando debe ser nombre, entero, SNA, o SNA*parmetro. E Valor de testeo. PR o nmero de parmetro. El parmetro de la transaccin miembro que determina si cada miembro del grupo debe ser alterado, o PR para usar la prioridad de la transaccin para la determinacin. Este es evaluado con respecto al miembro del grupo de transacciones. Opcional. El operando debe ser PR o nulo, nombre, enteropos, SNA, o SNA*parmetro. F Valor de referencia. El valor contra el cual el operando E es comparado. Este es evaluado con respecto a la transaccin activa. Opcional. El operando debe ser nulo, nombre, entero, SNA, o SNA*parmetro. G Nmero de bloque alternativo. El destino alternativo para la transaccin activa. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo ALTER INVENTORY, ALL, PRICE, 4995 A,B,C,D,E,F,G

En este ejemplo, todas las transacciones en el grupo de transacciones llamado INVENTORY tiene su parmetro llamado PRICE seteado igual a 4995. Accin Un bloque ALTER selecciona transacciones de un grupo y altera uno de los atributos de dichas transacciones. Cuando un miembro del grupo es alterado, su atributo de transaccin especificado por el operando C le es dado al valor especificado por el operando D. Las transacciones alteradas no son desplazadas de su contexto. Sin embargo, la transaccin que ingresa al bloque ALTER puede ser redirigida conforme al operando G. Si no se usa un operador condicional, y no se usa el operando E o F, todas las transacciones por encima del lmite (operando B) son alteradas. En este caso, ninguna prioridad o parmetro de prueba determina si se hace o no la alteracin al atributo del miembro. Si los operandos E, F o el operador condicional son usados, cada miembro del grupo debe pasar un test antes de ser alterado. El operando E especifica que atributo de las transacciones miembros sern testeadas. Este puede ser comparado al mnimo o mximo de todos los atributos de los miembros del grupo usando MIN o MAX como operador condicional. Todas las transacciones que son testeadas y

69

tienen el atributo mximo o mnimo son alteradas. En este caso no se debe usar el operando F. Se puede comparar el atributo del miembro del grupo con el operando F, con o sin operador condicional. En este caso, el operador condicional no debe ser MIN o MAX. El operando E siempre se refiere al miembro del grupo a ser testeado. Sin embargo, si algn otro operando es un SNA relacionado a una transaccin , ste es evaluado con respecto a la transaccin de entrante al bloque. Se puede usar un operador condicional para especificar la relacin entre el atributo de una transaccin (operando E) y el valor de referencia (operando F) los cuales iniciarn la alteracin de la transaccin. Por defecto el operador condicional es E (igual). Si no se usa un operador condicional, pero se usa el operando E y F, los valores deben ser iguales para la transaccin miembro a ser alterada. El operando B asla al grupo examinado cuando ste es igual al nmero de transacciones que han sido alteradas. El valor por defecto es ALL. Si no hay atributos a testear, es decir, no existe operando E, las transacciones son alteradas hasta que la cantidad de alteraciones sea igual a B o hasta que el total del grupo a sido alterado. El operando G indica un bloque de destino alternativo a ser tomado por la transaccin de entrada cuando ocurre una condicin especial. El operando G es usado como el prximo bloque bajo las siguientes condiciones: alcanzada. Ninguna transaccin es alterada. La cantidad de transacciones alteradas especificadas por el operando B no ha sido

Si el operando G no es usado, la transaccin de entrada siempre va al prximo bloque secuencial. Operadores Condicionales Los operadores condicionales pueden ser E, G, GE, L, LE, MAX, MIN, o NE. Si no se usa un operador condicional, E (igualdad) es asumido. Cuando la condicin es verdadera, la transaccin que esta siendo testeada es alterada. Las condiciones son definidas como sigue: E El atributo de la transaccin miembro especificado por el operando E debe ser igual al valor de referencia especificado en el operando F para que la transaccin miembro sea alterada. G - El atributo de la transaccin miembro especificado por el operando E debe ser mayor al valor de referencia especificado en el operando F para que la transaccin miembro sea alterada. GE - El atributo de la transaccin miembro especificado por el operando E debe ser mayor o igual al valor de referencia especificado en el operando F para que la transaccin miembro sea alterada. L - El atributo de la transaccin miembro especificado por el operando E debe ser menor al valor de referencia especificado en el operando F para que la transaccin miembro sea alterada. LE - El atributo de la transaccin miembro especificado por el operando E debe ser menor o igual al valor de referencia especificado en el operando F para que la transaccin miembro sea alterada. MAX - El atributo de la transaccin miembro especificado por el operando E debe ser igual que el atributo ms grande de todas las transacciones en el grupo para que la transaccin miembro sea alterada. MIN - El atributo de la transaccin miembro especificado por el operando E debe ser igual que el atributo ms chico de todas las transacciones en el grupo para que la transaccin miembro sea alterada. NE - El atributo de la transaccin miembro especificado por el operando E debe ser distinto al valor de referencia especificado en el operando F para que la transaccin miembro sea alterada. Restricciones Especiales

70

Si el operando E es usado, entonces se debe usar el operando F o se debe usar los operadores condicionales MAX o MIN. Si el operando F es usado, se debe usar el operando E, y no MAX o MIN. Si MAX o MIN son usados, el operador E debe ser usado y el operando F no debe ser usado. Modo de rechazo Una transaccin nunca es rechazada a entrar en un bloque ALTER. Ejemplo Detallado ALTER NE BIN7, 10, PRICE, 4995, P$PARTNUM, 127, OUT

En este ejemplo, cuando una transaccin entra al bloque ALTER, el grupo de transacciones llamado BIN7 es examinado para las transacciones que no tienen un valor de 127 en su parmetro llamado PARTNUM. Las primeras diez transacciones que cumplan dicho testeo tendrn el valor de su parmetro llamado PRICE seteado a 4995. Si no se han encontrado las diez transacciones que pasen el testeo, la transaccin de entrada intenta ingresar en el bloque llamado OUT. En otro caso, sta procede al prximo bloque secuencial. Bloques Relacionados Las transacciones y enteros son adicionados a grupos por un bloque JOIN. Las transacciones en grupos pueden ser referenciadas por los bloques ALTER, EXAMINE, REMOVE, y SCAN. Los nmeros en grupos numricos pueden ser referenciados por los bloques EXAMINE y REMOVE. SNAs Relacionados GTentnum Cantidad en el grupo de transacciones. Devuelve la cantidad de miembros del grupo entnum.

71

ASSEMBLE
Un bloque ASSEMBLE es usado para sincronizacin. Las transacciones relacionadas son destruidas. Sintaxis ASSEMBLE Operadores A Cantidad de transacciones. Requerido. El operando debe ser nombre, enteropos, SNA, SNA*parmetro. Ejemplo ASSEMBLE 2 A

Esta es la manera ms simple de usar un bloque ASSEMBLE. La primera transaccin de un conjunto de reunin (assembly set) es puesta a esperar cuando ingresa en el bloque ASSEMBLE. Cuando otra transaccin del mismo conjunto de reunin ingresa al bloque, sta es destruida y la transaccin que esperaba es permitida para que contine. Accin Cuando una transaccin ingresa en un bloque ASSEMBLE, se busca en la match chain del bloque una transaccin que est esperando del mismo conjunto de reunin. Si no hay otro miembro del mismo conjunto de reunin presente, el operando A es evaluado, decrementado en uno y en un lugar de la transaccin. Si este nmero es cero, la transaccin inmediatamente intenta ingresar al prximo bloque secuencial. En otro caso la transaccin es ubicada en una cola llamada match chain para esperar el arribo de otro miembro de este conjunto de reunin. Cuando una transaccin ingresa en un bloque ASSEMBLE, si una transaccin esperando es encontrada, la transaccin de entrada es destruida y el contador de transacciones es reducido en uno. Cuando este contador llega a cero, la transaccin esperando es removida de la match chain. Si esta transaccin no ha sido interrumpida de alguna facility, sta intenta entrar al prximo bloque secuencial. Cuando esto ocurre, sta es programada detrs de las transacciones activas de la misma prioridad. Las transacciones interrumpidas que completan un conjunto de reunin de algn bloque ASSEMBLE no son permitidas a liberar el bloque hasta que todas las interrupciones han sido despejadas. Las transacciones interrumpidas que han sido removidas de la match chain no participan luego en las bsquedas en los conjuntos de reunin, incluso an cuando ellas permanezcan en el bloque ASSEMBLE. Los bloques ASSEMBLE difieren de los GATHER en que las transacciones no son destruidas por el bloque GATHER. Restricciones Especiales Las transacciones que estn actualmente interrumpidas de alguna facility no son permitidas a dejar el bloque ASSEMBLE. Modo de rechazo Una transaccin nunca es rechazada a entrar en un bloque ASSEMBLE.

72

ASSIGN
Un bloque ASSIGN es usado para colocar o modificar un entero en un parmetro de una transaccin. Sintaxis ASSIGN Operadores A Nmero de parmetro de la transaccin activa. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro, seguido por +, -, o nulo. B Valor. Requerido. El operando debe ser un nombre, entero, SNA, o SNA*parmetro. C Nmero de funcin. Opcional. El operando debe ser nulo, un nombre, enteropos, SNA, o SNA*parmetro. Ejemplos ASSIGN 2000, 150000 A,B,C

Esta es la forma ms simple de usar el bloque ASSIGN. El entero 150000 es asignado al parmetro nmero 2000 de la transaccin que entra al bloque. Si tal parmetro no existe, ste es creado. ASSIGN 2000+, -3

En este ejemplo, el + seguido al operando A indica que al valor del parmetro 2000 le ser sumado el valor del operando B. Este bloque adiciona un 3 al valor contenido en el parmetro nmero 2000 de la transaccin. Si no existe tal parmetro, es creado e inicializado a cero antes de la adicin. En este caso, el valor del parmetro de la transaccin se vuelve 3. ASSIGN 2000-, -3

En este ejemplo, el seguido al operando A indica que el valor del operando B ser sustrado del valor original del parmetro 2000 de la transaccin. Este bloque resta un 3 al valor contenido en el parmetro nmero 2000 de la transaccin. Si no existe tal parmetro, es creado e inicializado a cero antes de la resta. En este caso, el valor del parmetro de transaccin se vuelve 3. Accin Cuando una transaccin ingresa en un bloque ASSIGN, el valor del parmetro de la transaccin identificado en el operando A es seteado de acuerdo a los operandos B y C. Un parmetro de transaccin es creado si es necesario. Se puede asignar, sumar , o restar un valor en el parmetro de una transaccin. Si no hay operando C, el operando B es evaluado y es usado como el nuevo valor a asignar, incrementar o decrementar. Sumar y restar son especificados por un sufijo + inmediatamente seguido al operando A. Si no existe tal sufijo, el operando B es evaluado y el resultado es asignado al valor del parmetro de la transaccin. Opcionalmente, el operando C puede ser usado para determinar el nmero de una funcin, aqu llamada "funcin modificadora". Si es especificado, la funcin es evaluada, multiplicada por el valor del operando B evaluado, truncada, y luego sumada, restada, o asignada a el parmetro de la transaccin dependiendo del sufijo opcional del operando A. Restricciones Especiales

73

El operando A debe ser positivo, pero puede estar seguido por los sufijos + -. Modo de rechazo Una transaccin nunca es rechazada a entrar en un bloque ASSIGN. SNAs Relacionados parmetro. Pparmetro o *parmetro Valor del parmetro. Devuelve el valor del parmetro

74

BUFFER
Un bloque BUFFER ubica a la transaccin activa en la CEC detrs de sus pares de igual prioridad. Sintaxis BUFFER Operadores Ninguno. Ejemplo BUFFER Este ejemplo crea un bloque que d a otras transacciones que no son la activa la posibilidad de ser programadas. Accin Cuando una transaccin ingresa a un bloque BUFFER, sta es ubicada en la CEC detrs de las transacciones de igual prioridad. La transaccin planificada intenta mover la transaccin activa hasta donde sta pueda en el modelo corriente. En efecto, la transaccin planificada remueve a la transaccin activa de la CEC, llama a la rutina para el prximo bloque secuencial, y a menos que algo extraordinario ocurra, reubica la transaccin activa en la CEC en frente de sus pares de igual prioridad. Este reemplazo es modificado por los bloques PRIORITY o BUFFER. Despus de que una transaccin entra a un bloque BUFFER, sta es colocada detrs de sus pares de igual prioridad en la CEC. Los bloques BUFFER son usados para permitir a las transacciones reactivarse nuevamente y poder ubicarse en frente de la CEC para ser la transaccin activa. Modo de rechazo Una transaccin nunca es rechazada a entrar en un bloque BUFFER.

75

COUNT
Un bloque COUNT ubica una entidad contador dentro de un parmetro de la transaccin activa. Sintaxis COUNT Operadores O Operador condicional u operador lgico. Requerido. El operando debe ser FNV, FV, I, LS, LR, NI, NU, SE, SF, SNE, SNF, SNV, SV, U, E, G, GE, L, LE, MIN, MAX, o NE. A Nmero del parmetro a recibir el contador. Requerido. El operando debe ser un nombre, enteropos, SNA, SNA*parmetro. B Nmero o nombre de la entidad dele extremo menor del rango. El nmero de entidad de la primera entidad a ser testeada. El tipo de entidad es implcitamente especificado por el operador lgico o el operando E. Requerido. El operando debe ser un nombre, enteropos, SNA, SNA*parmetro. C Nmero o nombre de entidad del extremo mayor del rango. El nmero de entidad de la ltima entidad a ser testeada. Requerido. El operando debe ser un nombre, enteropos, SNA, SNA*parmetro. D Valor de referencia para el operando E. Requerido nicamente en modo condicional. Opcional. El operando debe ser nulo, nombre, entero, SNA, o SNA*parmetro. E Nombre de clase SNA. Especificador de atributo de entidad para testeo en modo condicional. Requerido nicamente en modo condicional. El tipo de SNA implica el tipo de entidad. No se especifica el nmero de entidad en el operando E. Esto es hecho automticamente cuando el rango de nmero de entidad es alcanzado. Se puede usar cualquier entidad clase SNA. Opcional. El operando debe ser nulo o entidadSNAclase. Ejemplos COUNT WAREHOUSE13 En este ejemplo, el nmero de storages llenos cuyos nmeros de entidad caen entre WAREHOUSE1 y WAREHOUSE13 ser almacenado en el parmetro de la transaccin llamado FULLCOUNT. COUNT LASTQUEUE, 0 En este ejemplo, el bloque COUNT opera en modo condicional. El operando E especifica un SNA de clase Q, que referencia a una entidad cola. Cada entidad cola con nmero de entidad entre FIRSTQUEUE y LASTQUEUE es testeada. Cualquier entidad cola cuyo contenido actual sea cero es contada. EMPTYCOUNT es el nombre del parmetro de la transaccin activa que va a recibir la cantidad de entidades cola "vacas" en el rango especificado. Accin Cuando el bloque COUNT es ingresado, la entidad especificada por el operando B es testeada. Si la entidad no existe y no requiere una declaracin de control para su definicin, una nueva entidad es creada. Despus de esto, cada entidad en el rango indicado entre los operandos B y C es testeada. Un SNA es construido automticamente por cada entidad. La clase de SNA usada para construir el SNA es tomado del operando E o es especificado por el operador lgico. Un bloque COUNT opera en cualquier modo, lgico o condicional, dependiendo de si un operador lgico E EMPTYCOUNT, FIRSTQUEUE, SF FULLCOUNT, WAREHOUSE1, O A,B,C,D,E

76

o condicional es usado. Cuando un operador lgico es usado, los operandos A, B y C son usados. La condicin especificada por el operador lgico es testeada para las entidades cuyo nmero cae entre B y C. La cuenta de entidades en esta condicin es colocada en el parmetro de la transaccin de entrada cuyo nmero es dado por el operando A. El tipo de entidad esta implcito por el operador lgico. Cuando un operador condicional es usado, los operandos A, B, C, D, y E son usados. Los operandos A, B, C son usados para especificar el parmetro destino, y el rango de nmeros de entidades. Pero ahora el operador condicional especifica la relacin entre los operandos D y E que se debe llevar a cabo para que la entidad sea contada. En modo condicional, las clase SNA est combinada con las entidades especificadas en orden a construir un SNA. El SNA completo es construdo desde la clase y el nmero de la entidad a ser testeada. Cada SNA es evaluado por cada entidad y comparado con el valor de referencia del operando D. Si la condicin es pasada, la entidad es contada. Operadores Condicionales Tanto un operador condicional o un operador lgico es requerido. Los operadores condicionales pueden ser E, G, GE, L, LE, MAX, MIN, o NE. Las condiciones son definidas como sigue: E El valor del SNA automtico debe ser igual al valor de referencia especificado en el operando D para que la entidad sea contada. G El valor del SNA automtico debe ser mayor al valor de referencia especificado en el operando D para que la entidad sea contada. GE El valor del SNA automtico debe ser mayor o igual al valor de referencia especificado en el operando D para que la entidad sea contada. L El valor del SNA automtico debe ser menor al valor de referencia especificado en el operando D para que la entidad sea contada. LE El valor del SNA automtico debe ser menor o igual al valor de referencia especificado en el operando D para que la entidad sea contada. MAX El valor del SNA automtico debe ser igual al mayor de todos los SNAs, para que la entidad sea contada. MIN El valor del SNA automtico debe ser igual al menor de todos los SNAs, para que la entidad sea contada. NE El valor del SNA automtico debe ser distinto al valor de referencia especificado en el operando D para que la entidad sea contada.

Operadores Lgicos Tanto un operador condicional o un operador lgico es requerido. Los operadores lgicos pueden ser FNV, FV, I, LS, NI, NU, SE, SF, SNE, SNF, SNV, SV, o U. Cuando el operador lgico es verdadero, la entidad a ser testeada es contada. Las condiciones son definidas como sigue: contada. contada. NU La facility no tiene que estar en uso para que sea contada. LS La llave lgica tiene que estar seteada (en el estado "on") para que sea contada. LR La llave lgica tiene que estar seteada (en el estado "off") para que sea contada. NI La facility no tiene que estar actualmente interrumpida (preempted) para ser FNV La facility tiene que estar no disponible para que sea contada. FV La facility tiene que estar disponible para que sea contada. I La facility tiene que esta actualmente interrumpida (preempted) para que sea

77

SE El storage tiene que estar vaco para que sea contado. SF - El storage tiene que estar lleno para que sea contado. SNE - El storage no tiene que estar vaco para que sea contado. SNF - El storage no tiene que estar lleno para que sea contado. SNV - El storage no tiene que estar disponible para que sea contado. SV - El storage tiene que estar disponible para que sea contado. U La facility tiene que estar en uso para que sea contada.

Restricciones Especiales D y E son requeridos si O es un operador condicional. Cuando es evaluado, C debe ser mayor o igual que B.

Modo de rechazo Una transaccin nunca es rechazada a entrar en un bloque COUNT.

78

DEPART
Un bloque DEPART registra estadsticas que indican una reduccin en el contenido de una entidad queue. Sintaxis DEPART Operadores A Nombre o nmero de la entidad cola. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Cantidad de unidades a decrementar en el contenido de la cola. El valor por defecto es 1. Opcional. El operando debe ser nulo, un nombre, enteropos, SNA, o SNA*parmetro. Ejemplo DEPART WAITINGLINE A,B

En este ejemplo el contenido de la entidad cola llamada WAITINGLINE es reducida en uno y los acumuladores estadsticos asociados son actualizados. Accin Cuando una transaccin ingresa a un bloque DEPART, el operando A es evaluado y usado para encontrar la entidad cola con ese nmero. La entidad cola es creada si es necesario. Si una entidad cola es creada, la intencin de decrementar el contenido de la cola causar un error de stop. El operando B especifica el valor a ser usado para decrementar el contenido de la entidad cola. Si el operando B es especificado, ste es evaluado y usado como el resultado. Si el operando B no es especificado, el valor usado es 1. Finalmente, las estadsticas acumuladas de la entidad cola son actualizadas. Si una o ms entidades qtable han sido definidas para esa entidad cola, ellas son actualizadas. Restricciones Especiales A y B deben ser positivos, si son especificados. Si el contenido de la entidad cola est por ser negativo, un error de stop ocurrir.

Modo de rechazo Una transaccin nunca es rechazada a entrar en un bloque DEPART. SNAs Relacionados Qentnum Contenido actual de la cola. El contenido actual de la cola entnum. QAentnum Contenido promedio de la cola. La cantidad de tiempo ponderado promedio de la cola entnum. QCentnum Cantidad de entradas total. La suma de todas las entradas a la cola entnum. QMentnum Contenido mximo de la cola. El contenido mximo de la cola entnum. QTentnum Tiempo de residencia en cola promedio. La cantidad de tiempo ponderado promedio de la cola entnum.

79

QXentnum Tiempo de residencia en cola promedio excluyendo entradas cero. La cantidad de tiempo ponderado promedio de la cola entnum no contando entradas con tiempo de residencia cero. QZentnum Cantidad de entradas cero. El nmero de entradas a la cola entnum con un tiempo de residencia cero.

80

ENTER
Cuando una transaccin intenta ingresar en un bloque ENTER, sta o toma o espera por un nmero especificado de unidades de storage. Sintaxis ENTER Operadores A Nombre o nmero de una entidad storage. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Cantidad de unidades a ser decrementadas a la capacidad disponible del storage. Valor por defecto es 1. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo ENTER SALON, 2 A,B

En este ejemplo la transaccin activa demanda 2 unidades de storage de las unidades de storage disponibles en la entidad storage llamada SALON. Si ellas no estn disponibles, la transaccin descansa en la Delay chain de la entidad storage. Accin Cuando una transaccin ingresa en un bloque ENTER, el operando A es evaluado y usado para encontrar la entidad storage con ese nmero. Si la entidad storage no existe, ocurre un error de stop. En otro caso, el operando B es usado para determinar la demanda de storage. Si B es especificado, el operando B es evaluado y usado como el resultado. Si B no es especificado, el valor 1 es usado. Si la entidad storage est en estado disponible, y si hay suficientes unidades de storage disponibles para satisfacer la demanda, la transaccin es permitida a ingresar al bloque ENTER y la demanda es satisfecha reduciendo las unidades de storage disponibles de acuerdo a la cantidad demandada. En otro caso, la transaccin es ubicada en la Delay chain de la entidad storage en orden de prioridad. Cuando las unidades de storage son liberadas por un bloque LEAVE, una disciplina de "first-fit-withskip" (primero en ajustarse) es usada para seleccionar la/las prxima/s transaccion/es a ser permitidas entrar enel bloque ENTER. Cuando una transaccin ingresa en un bloque ENTER o LEAVE, las estadsticas acumuladas son actualizadas. Restricciones Especiales A debe ser positivo. B debe ser no negativo. Una demanda por ms storage que el existente causar un error de stop.

Modo de rechazo La transaccin activa es rechazada a entrar en el bloque ENTER si su demanda de storage no puede ser satisfecha. La transaccin activa es rechazada a entrar al bloque ENTER si la entidad storage est

81

en estado no disponible. SNAs Relacionados Rentnum Capacidad de storage disponible. Devuelve la cantidad de unidades de storage disponibles para usar por las transacciones que entran al storage entnum. Sentnum Storage en uso. Devuelve la cantidad de unidades de storage actualmente en uso por las transacciones que entraron al storage entnum. SAentnum Storage en uso promedio. Devuelve el tiempo ponderado promedio de unidades de storage en uso en el storage entnum. SCentnum Cantidad de uso del storage. Devuelve la cantidad de unidades de storage a ser usadas en el storage entnum. SEentnum Storage vacio. Devuelve 1 si el storage entnum est vacio, 0 en otro caso. SFentnum Storage lleno. Devuelve 1 si el storage entnum est completamente en uso, 0 en otro caso. SRentnum Utilizacin del storage. Devuelve la fraccin del uso total representado por el storage en uso promedio del storage entnum. Srentnum es expresado en partes por mil y por lo tanto retorna un entero de 0-1000. SMentnum Uso del storage mximo. Devuelve la cantidad mxima de unidades de storage en uso del storage entnum. STentnum Tiempo de uso promedio por unidad en el storage entnum. SVentnum Storage en estado disponible. Devuelve 1 si el storage entnum est en estado disponible, 0 en otro caso.

82

EXAMINE
Un bloque EXAMINE puede ser usado para testear a miembros de un grupo numrico o de transacciones. Sintaxis EXAMINE Operadores A Nmero de grupo. Grupo cuyos miembros sern examinados. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Solamente en modo numrico. El valor a ser testeado en miembros de un grupo numrico. Opcional. El operando debe ser nulo, nombre, entero, SNA, o SNA*parmetro. C Nmero de bloque. Destino alternativo para la transaccin activa si no es encontrado ningn miembro. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. Ejemplos EXAMINE NOT_CORRECT_COLOR VALID_COLORS, P$COLOR, A,B,C

En este ejemplo, si el grupo numrico llamado VALID_COLORS no incluye el valor contenido en el parmetro da la transaccin llamado COLOR, la transaccin activa procede a ejecutar el bloque NOT_CORRECT_COLOR. Si el valor es un miembro del grupo numrico, la transaccin activa procede al prximo bloque secuencial (NSB). EXAMINE VALID_XACTS, , NOT_VALID_XACT

En este ejemplo, si la transaccin activa no es un miembro del grupo de transacciones llamado VALID_XACTS, la transaccin activa procede a la direccin del bloque NOT_VALID_XACT. Si la transaccin es un miembro del grupo, sta procede al prximo bloque secuencial (NSB). Accin Un bloque EXAMINE opera o en modo numrico o en modo transaccin. Si el operando B es usado, el bloque EXAMINE opera en modo numrico. En este caso el valor del operando B es testeado para saber si es miembro del grupo. Si el operando B no es usado, el bloque EXAMINE opera en modo transaccin. Es la transaccin activa la que es testeada para saber si es miembro del grupo de transacciones. Cuando una transaccin ingresa en un bloque EXAMINE, el operando A es evaluado y la entidad grupo apropiado es encontrado. Si no hay tal grupo, uno es creado. Si el operando B es usado, ste es evaluado y el resultado es testeado con respecto a los nmeros miembros en el grupo numrico. Si el operando B no es usado, la transaccin activa es testeada con respecto a los nmeros miembros en el grupo de transacciones especificado por el operando A. Si el testeo del grupo falla, el operando C es evaluado y usado como el nmero de bloque destino para la transaccin activa. Si el nmero de miembro testeado es satisfecho, la transaccin activa procede al prximo bloque secuencial (NSB). Restricciones Especiales A y C deben ser positivos.

83

C debe ser una direccin de bloque en el modelo corriente.

Modo de rechazo Una transaccin nunca es rechazada a entrar en un bloque EXAMINE. SNAs Relacionados GNentnum Cantidad de un grupo numrico. Devuelve la cantidad de miembros del grupo numrico entnum. GTentnum Cantidad de un grupo de transacciones. Devuelve la cantidad de miembros del grupo de transacciones entnum. Bloques Relacionados Las transacciones y enteros son agregados a los grupos usando el bloque JOIN. Las transacciones en grupos pueden ser referenciadas por los bloques ALTER, EXAMINE, REMOVE, y SCAN. Los nmeros en grupos numricos pueden ser referenciados por los bloques EXAMINE y REMOVE.

84

FAVAIL
Un bloque FAVAIL garantiza que una facility est en el estado disponible. Sintaxis FAVAIL Operadores A Nmero de facility. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. Ejemplo FAVAIL TALLER A

Este bloque, cuando es ingresado por una transaccin, asegura que la facility llamada TALLER est en el estado disponible. Accin Un bloque FAVAIL asegura que una facility est en estado disponible. Si la facility fue previamente inactiva, el bloque FAVAIL intenta dar la propiedad a una transaccin en espera. Si la facility estaba ya disponible, el bloque FAVAIL no tiene efecto. FAVAIL cancela el efecto del bloque FUNAVAIL en la facility, pero no afecta las transacciones desplazadas. Modo de rechazo Una transaccin nunca es rechazada a entrar en un bloque FAVAIL. SNAs Relacionados Fentnum Facility ocupada. Si la facility entnum est actualmente ocupada, devuelve 1, sino devuelve 0. FCentnum Cantidad de captura de la facility. Devuelve el nmero de veces que la facility entnum ha sido apropiada por una transaccin. FIentnum Facility interrumpida. Si la facility entnum est actualmente interrumpida, devuelve 1, sino devuelve 0. FRentnum Utilizacin de la facility. Devuelve la fraccin de tiempo que la facility entnum estuvo ocupada. FRentnum es expresado en partes por mil y por lo tanto devuelve un entero entre 0-1000. FTentnum Tiempo de uso promedio de la facility. Devuelve el tiempo promeido que la facility entnum estuvo apropiada por una transaccin que la captur. FVentnum Facility en estado disponible. Si la facility entnum est en estado disponible, devuelve 1, sino devuelve 0.

85

FUNAVAIL
Un bloque FUNAVAIL es usado para hacer a una facility no disponible de apropiaciones por transacciones. Sintaxis FUNAVAIL Operadores A Nombre o nmero de facility. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Modo REmove o COntinue para la transaccin propietaria. Opcional. El operando debe ser RE, CO, o nulo. C Nmero de bloque. Nuevo bloque para la transaccin propietaria de la facility. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. D Nmero de parmetro. Parmetro a recibir el tiempo residual si la transaccin propietaria es removida de la FEC. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. E Modo REmove o COntinue para transacciones interrumpidas. Opcional. El operando debe ser RE, CO, o nulo. F Nmero de bloque. Nuevo bloque para las transacciones interrumpidas de la facility. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. G Modo REmove o COntinue para transacciones pendientes o demoradas en la facility (en la pending chain o en la delay chain). Opcional. El operando debe ser RE, CO, o nulo. H Nmero de bloque. Nuevo bloque para las transacciones pendientes o demoradas en la facility. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, SNA*parmetro. Ejemplo FUNAVAIL TALLER A,B,C,D,E,F,G,H

Esta es la manera ms simple de usar el bloque FUNAVAIL. La facility llamada TALLER es "congelada" durante el perodo de no disponibilidad. Varios tipos de otras transacciones que la transaccin activa son afectadas. Si una transaccin propietaria est en un bloque ADVANCE, esta deber ser replanificada en la FEC automticamente cuando la facility est nuevamente disponible. El tiempo remanente en el bloque ADVANCE ("tiempo residual") es calculado y salvado automticamente cuando la transaccin es removida de la FEC. El tiempo residual se convierte en el incremento de tiempo cuando la transaccin es replanificada en la FEC. Otras transacciones retrasadas o pendientes en TALLER no sern capaces de moverse durante el perodo de no disponibilidad. Accin La complejidad del bloque FUNAVAIL es debida a las tres clases de transacciones que deben ser distribuidas: 1. Las transacciones propietarias (operandos B-D). 2. Las transacciones interrumpidas en la Interrupt chain (operandos E-F). 3. Las transacciones retrasadas en la Delay chain y Pending chain (operandos G-H). Un bloque FUNAVAIL permite poner a una facility "fuera de accin" y controlar el destino de las transacciones esperando, usando, o interrumpidas en la facility. Las transacciones que arriban durante el perodo de no disponibilidad sern retrasadas y no tendrn la propietariedad de la facility. Un bloque FUNAVAIL no tiene efecto si la facility est actualmente no disponible.

86

Cuando la opcin REmove es usada, las transacciones son removidas de la contienda por la facility. Si la opcin REmove es usada para transacciones pendientes y retrasadas, es decir, G es RE, entonces H debe ser usado para redireccionar las transacciones. Cuando la opcin COntinue es usada, las transacciones en las cadenas de la facility pueden continuar a poseer la facility, incluso durante el perodo de no disponibilidad. En este caso, las estadsticas de utilizacin de facility son ajustadas a incluir el tiempo. Cuando un bloque alternativo es usado, las transacciones son desplazadas desde su contexto actual y redirigidas al nuevo bloque. Las transacciones retrasadas y pendientes, que son controladas por los operandos G y H, no pueden ser redirigidas sin adems usar la opcin REmove. La transaccin propietaria, controlada por los operandos B a D, y las transacciones interrumpidas, controladas por los operandos E y F, pueden permanecer en contienda por la facility y an ser desplazadas a un nuevo destino. Esto es hecho especificando un destino alternativo sin usar la opcin RE correspondiente. Cuando una transaccin es desplazada usando los operandos C, F, o H, se le d un nuevo bloque de destino y es descolada desde: FEC (con tiempo residual salvado automticamente) PENDING (esperando a interrumpir) CHAINS DELAY (esperando por apoderarse) CHAINS USER CHAINS RETRY CHAINS

y no descolada desde: CEC INTERRUPT (interrumpidas) CHAINS de otras facilities. GROUP CHAINS.

Cuando una transaccin es desplazada desde el contexto actual a cualquier parte en el modelo, usando un destino alternativo, esta es removida de cualquier condicin de bloqueo pero las interrupciones no son liberadas. Tal transaccin desplazada es programada para entrar al bloque especificado por el operando C de la sentencia FUNAVAIL. Cuando una transaccin propietaria hace un RELEASE o RETURN de una facility, la prxima propietaria es elegida de la cabeza de la Pending chain, la Interrupt chain, o la Delay chain, en ese orden. La Transaccin Propietaria Los operandos B-D son usados para controlar la transaccin propietaria. Si B es CO, la transaccin propietaria no es removida de su propiedad. Esta puede, sin embargo, tener un nuevo destino con el operando C. Si B es RE, la transaccin propietaria es removida de la contienda por la facility. Esto significa que la transaccin puede continuar circulando en el modelo sin restricciones debido a interrupciones de esta facility (puede tener interrupciones de otras facilities). Esto tambin significa que la transaccin propietaria no debe intentar realizar un RETURN o RELEASE de la facility. El operando C debe ser usado para redireccionar el curso de tal transaccin. Si B es nulo, la transaccin propietaria es interrumpida y colocada en la Interrupt chain de la facility. Si esta es tomada desde la FEC y el operando C no es usado, esta ser automticamente restablecida a la FEC usando el tiempo residual salvado automticamente cuando la facility est nuevamente disponible.

87

El operando C puede ser usado indiferente del operando B. Esto permite desplazar la transaccin propietaria, y obtener as un nuevo bloque de destino. Si se elige retornar la transaccin a la FEC, haciendo uso del operando C, se debe explcitamente enrutar la transaccin a un bloque ADVANCE. El operando D permite salvar el tiempo residual en un parmetro de la transaccin propietaria. El valor del tiempo residual es despus disponible para explicitar una replanificacion cuando se use el valor del parmetro como operando A de un bloque ADVANCE. Transacciones Interrumpidas Los operandos E y F son proporcionados para controlar el destino de transacciones actualmente interrumpidas de esta facility. Si E es CO, las transacciones interrumpidas no son removidas de la contienda por la facility, y pueden apropiarse de la facility durante un perodo de no disponibilidad. A las transacciones interrumpidas se les puede dar un nuevo destino con el operando F. Si E es RE, las transacciones interrumpidas son removidas de la contienda por la facility. Esto significa que las transacciones pueden continuar circulando en el modelo sin restricciones debido a una interrumpcin de esta facility (pueden tener interrupciones de otras facilities). Esto tambin significa que las transacciones interrumpidas no deben intentar realizar un RETURN o RELEASE de la facility. Opcionalmente, el operando F est disponible para redireccionar el curso de tales transacciones. Si E es nulo, las transacciones interrumpidas son dejadas en la Interrupt chain de la facility, y no pueden ser propietarias de la facility durante el perodo de no disponibilidad. El operando F puede ser usado sin tener en cuenta al operando E. Esto causa que las transacciones interrumpidas sean desplazadas, y se les d un nuevo bloque destino. Las transacciones interrumpidas no pueden estar en la FEC por lo que las opciones de tiempo residual no son reelevantes. Si E es nulo, la interrupcin no es liberada para las transacciones desplazadas. Transacciones Pendientes en Modo Interrupcin. Los operandos G y H son proporcionados para controlar el destino de transacciones de la Pending chain (por ejemplo pendientes en un PREEMPT en modo interrupt) o de la Delay chain. Si G es CO, las transacciones retrasadas no son eliminadas de la contienda por la facility, y pueden poseer la facility durante cualquier perodo de no disponibilidad. Si G es RE, las transacciones retrasadas son removidas de la contienda por la facility y permitidas a circular en el modelo. Estas transacciones no deben intentar realizar un RETURN o RELEASE de la facility. El operando H debe ser usado para redireccionar el curso de tales transacciones. Si G es nulo, las transacciones retrasadas son dejadas en la Delay o Pending chain de la facility, y no pueden ser propietarias de la facility durante el perodo de no disponibilidad. El uso del operando H es invlido cuando el operando G es nulo. Restricciones Especiales Si B es RE, C debe ser usado. Si H es usado, G debe ser RE. Si G es RE, H debe ser usado.

Modo de rechazo Una transaccin nunca es rechazada a entrar en un bloque FUNAVAIL.

88

Ejemplo Detallado FUNAVAIL TLR1, RE, TLR2, 300, RE, MGR, CO

En este ejemplo, la facility TLR1 es hecha no disponible. Esto significa que las transacciones nuevas arribando debern ser demoradas. Las transacciones en o interrumpidas en TLR1 son distribuidas de acuerdo a los operandos B-H. Si la transaccin que es propietaria de la facility TLR1 est en la FEC, sta es descolada y el tiempo residual es salvado en su parmetro nmero 300. Las transaccin propietaria es desplazada y enviada hacia el bloque llamado TLR2. Las transacciones actualmente interrumpidas en TLR1 son eliminadas de la contienda y enviadas al bloque llamado MGR. Las transacciones actualmente retrasadas en la facility TLR1 son permitidas de apropiarse de la facility, incluso aunque sta este en el estado no disponible. SNAs Relacionados Fentnum Facility ocupada. Si la facility entnum est actualmente ocupada, devuelve 1, sino devuelve 0. FCentnum Cantidad de captura de la facility. Devuelve el nmero de veces que la facility entnum ha sido apropiada por una transaccin. FIentnum Facility interrumpida. Si la facility entnum est actualmente interrumpida, devuelve 1, sino devuelve 0. FRentnum Utilizacin de la facility. Devuelve la fraccin de tiempo que la facility entnum estuvo ocupada. FRentnum es expresado en partes por mil y por lo tanto devuelve un entero entre 0-1000. FTentnum Tiempo de uso promedio de la facility. Devuelve el tiempo promeido que la facility entnum estuvo apropiada por una transaccin que la captur. FVentnum Facility en estado disponible. Si la facility entnum est en estado disponible, devuelve 1, sino devuelve 0.

89

GATE
Un bloque GATE altera el flujo de transacciones basado en el estado de una entidad. Sintaxis GATE Operadores O Operador condicional. Condicin requerido de la entidad para ser testeada por testeo exitoso. Requerido. El operando debe ser FNV, FV, I, LS, LR, M, NI, NM, UN, SE, SF, SNE, SNF, SNV, SV, o U. A Nombre o nmero de entidad a ser testeada. El tipo de entidad es implcito por el operador condicional. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Nmero de bloque destino cuando el testeo no es exitoso. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Accin Un bloque GATE opera en ambos modos de rechazo o salida alternativa. Si el operando B no es usado, el bloque GATE opera en modo de rechazo. Cuando una transaccin intenta ingresar en modo de rechazo a un bloque GATE, y el testeo no es exitoso, la transaccin es bloquead hasta que el testeo es repetido y es exitoso. Si el test es exitoso, la transaccin activa ingresa al bloque GATE y luego procede al proximo bloque secuencial. Si el operando B es usado, el bloque GATE opera en modo de salida alternativa. Cuando una transaccin intenta entrar en tal bloque GATE, y el test no es exitoso, la transaccin ingresa al bloque GATE, es planificada hacia el bloque de destino alternativo especificado por el operando B, y es colocada en la CEC adelante de su par en prioridad. Si el testeo es exitoso, la transaccin activo ingresa al bloque GATE y luego procede al proximo bloque en secuencia. Ejemplo GATE SNF MOTORPOOL O A,B

En este ejemplo de un bloque GATE en modo de rechazo, la transaccin activa ingresa al bloque GATE si la entidad storage llamada MOTORPOOL no esta llena (si la capacidad de storage es menor a una unidad). Si el storage esta lleno, la transaccin activa es bloqueada hasta que 1 o mas unidades de storage estn disponibles. GATE SNE MOTORPOOL, CUPBOARD_IS_BARE

En este ejemplo de un bloque GATE en modo de salida alternativa, la transaccin activa siempre ingresa al bloque GATE. Si la entidad storage llamada MOTORPOOL esta no vaca (si por lo menos 1 unidad de storage esta en uso) la transaccin procede al NSB. Si el storage esta vaco (testeo no exitoso), la transaccin activa es planificada a ingresar al bloque de la direccin llamada CUPBOARD_IS_BARE. Operadores Condicionales Los operadores condicionales son requeridos. Los operadores lgicos pueden ser FNV, FV, I, LS, LR, M, NI, MN, NU, SE, SF, SNE, SNF, SNV, SV, o U. Cuando la condicin es verdadera, la transaccin ingresa al bloque GATE y procede al NSB. Las condiciones son definidas como sigue:

90

FNV La facility especificada implcitamente por el operando A debe ser no disponible para un testeo exitoso. FV La facility especificada implcitamente por el operando A debe ser disponible para un testeo exitoso. I La facility especificada implcitamente por el operando A debe ser interrumpida actualmente para un testeo exitoso. LS La entidad llave lgica especificada implcitamente por el operando A debe estar en el estado "set" para un testeo exitoso. LR La entidad llave lgica especificada implcitamente por el operando A debe estar en el estado "reset" para un testeo exitoso. M El bloque Match especificado implcitamente por el operando A debe tener una transaccin relacionada (la transaccin activa) esperando por una condicin match. NI La facility especificada implcitamente por el operando A debe estar no interrumpida para un testeo exitoso. NM - El bloque Match especificado implcitamente por el operando A debe no tener una transaccin relacionada (la transaccin activa) esperando por una condicin match. NU La facility especificada implcitamente por el operando A no debe estar en uso para un testeo exitoso. SE La entidad storage especificada implcitamente por el operando A debe estar vaca para un testeo exitoso. Todas las unidades de storage deben estar disponibles. SF - La entidad storage especificada implcitamente por el operando A debe estar lleno para un testeo exitoso. No debe estar disponible ninguna unidad de storage. SNE - La entidad storage especificada implcitamente por el operando A no debe estar vaca para un testeo exitoso. Por lo menos una unidad de storage debe estar disponible. SNF - La entidad storage especificada implcitamente por el operando A no debe estar lleno para un testeo exitoso. Debe haber por lo menos una unidad de storage disponible. SNV - La entidad storage especificada implcitamente por el operando A debe estar en estado "no disponible" para un testeo exitoso. SV - La entidad storage especificada implcitamente por el operando A debe estar en estado "disponible" para un testeo exitoso. U La facility especificada implcitamente por el operando A debe estar en uso para un testeo exitoso. Restricciones Especiales Si B es especificado debe ser la direccin de un bloque en el modelo corriente. Los bloques GATE son extremadamente poderosos, pero ellos pueden causar un tiempo de computacin a ser usado para testeos sin xito. Se puede necesitar colocar en el modelo para reducir la frecuencia de testeos sin xitos. Esto puede ser hecho colocando transacciones con ninguna chance de un testeo exitoso en la Cadena de Usuario usando los bloque LINK y UNLINK. Modo de rechazo Un bloque GATE operando en modo rechaza deber rechazar la entrada a una transaccin cuando el testeo falle. La transaccin rechazada deber ser bloqueada hasta que el testeo sea exitoso. Cuando una transaccin es negada a ingresar, su indicador de demora es seteado y permanece as hasta la entrada de la transaccin al bloque TRANSFER en modo "simultaneo".

91

GATHER
Un bloque GATHER sincroniza transacciones. Sintaxis GATHER Operadores A Contador de transacciones. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. Ejemplo GATHER 2 A

Esta es una simple manera de usar el bloque GATHER. La primer transaccin de un conjunto de reunin (assembly set) es espera cuando esta ingresa al bloque GATHER. Cuando otra transaccin del mismo conjunto de reunin ingresa al bloque, ambas transacciones relacionadas son liberadas y puestas en la CEC. Accin Cuando una transaccin ingresa a un bloque GATHER, la Cadena Match del bloque es buscada por una transaccin de espera del mismo conjunto de reunin. Si no hay otro miembro del mismo conjunto de reunin presente, el operando A es evaluado, decrementado en uno y salvado en una direccin de carga en la transaccin activa. Si este nmero es cero, la transaccin inmediatamente intenta ingresar al NSB. En otro caso la transaccin es colocada en una cola llamada Cadena Match para esperar el arribo de otros miembros de su conjunto de reunin. Si la transaccin activa arriba para encontrar otros miembros de su conjunto de reunin ya en la Cadena match, la transaccin activa es tambin colocada en la cadena y la cuenta de transacciones salvada en la primera transaccin encadenada es reducida en uno. Cuando esta cuenta llega a cero, todas las transacciones relacionadas son liberadas de la Cadena Match. Todas las transacciones que no son apropiadas de alguna facility son colocadas en la CEC detrs de su par en prioridad. Las transacciones apropiadas que tienen completado un conjunto en un bloque GATHER no son permitidas a dejar el bloque hasta que todas las apropiaciones han sido eliminadas. Las transacciones apropiadas que han sido removidas de la Cadena Match no participan en agrupaciones de assembly set posteriores incluso aunque ellos permanezcan en el bloque GATHER. Los bloques GATHER difieren de los bloques ASSEMBLE en que las transacciones despus las primeras no son destruidas como en el bloque GATHER. Restricciones Especiales GATHER. A debe ser positivo. Las transacciones que son actualmente apropiadas no son permitidas a dejar los bloques

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque GATHER.

92

GENERATE
Un bloque GENERATE crea transacciones para entradas futuras dentro de la simulacin. Sintaxis GENERATE Operadores A Tiempo de intergeneracion menor. Opcional. El operando debe ser nulo, nombre, enteropos, o directSNA. No se puede usar parmetros de transacciones. B Tiempo medio de intergeneracion o una funcin modificadora. Opcional. El operando debe ser nulo, nombre, enteropos, o directSNA. No se puede usar parmetros de transacciones. C Tiempo de demora desde el comienzo. Tiempo incrementado por la primera transaccin. Opcional. El operando debe ser nulo, nombre, enteropos, o directSNA. No se puede usar parmetros de transacciones. D Limite de creacin. El valor por defecto es sin limite. Opcional. El operando debe ser nulo, nombre, enteropos, o directSNA. No se puede usar parmetros de transacciones. E Nivel de Prioridad. El valor por defecto es cero. Opcional. El operando debe ser nulo, nombre, entero, o directSNA. No se puede usar parmetros de transacciones. Ejemplo GENERATE 1 A,B,C,D,E

Esta es una simple manera de usar un bloque GENERATE. Este bloque permite ingresar una transaccin con prioridad cero a la simulacin por unidad de tiempo. Accin Cuando una simulacin es comenzada, cualquier bloque GENERATE que no ha sido "primed" es llamado para planificar su primer transaccin. Tales transacciones son planificadas para ingresar al bloque GENERATE y colocadas en la FEC si ellas tienen un incremento de tiempo positivo. El operando C puede ser usado para especificar un incremento de tiempo positivo para la primer transaccin. En otro caso, el primer tiempo de incremento es calculado desde los operandos A y B. No se puede usar parmetros en los operandos de los bloques GENERATE. Las transacciones generadas recientemente no tienen parmetros, y su entrada dentro de un bloque GENERATE deberia causar un error de stop. Cuando una transaccin ingresa en un bloque GENERATE, una nueva transaccin es creada y un tiempo de interarribo es calculado por este. Si es positivo, la recientemente transaccin creada es colocada en la FEC. Si es cero, esta es colocada en la CEC. Antes de que la nueva transaccin sea creada, el operando D es evaluado para ver si todas las transacciones deseadas han sido creadas. Si el limite de creacin no ha sido excedido, continua procediendo. El bloque GENERATE luego crea la nueva transaccin asignando a esta el proximo nmero de transaccin., la prioridad desde el operando E, y la marca de tiempo de la transaccin es asignada al valor en el relativo reloj del sistema. La nueva transaccin representa un nuevo conjunto de reunin (assembly set) con un miembro. El tiempo de interarribo de la nueva transaccin es calculado por los operandos A, B y C. Si nicamente el operando A es especificado, este es evaluado y usado como el tiempo de incremento. Si los operandos A y B son presentados, y B no tiene especificado una funcin, ambos A y B son evaluados y un nmero

93

aleatorio entra A-B y A+B, inclusivamente, es usado como el tiempo de incremento. El generador de nmeros aleatorios nmero 1 es usado como la fuente de los nmeros aleatorios. Cuando el operando B es un SNA de clase FN, esto es un caso especial llamado una "funcin modificadora". En este caso, el tiempo de incremento calculado es iniciado multiplicando el resultado de doble precisin de la funcin por el operando evaluado A. El resultado global es truncado y usado como el tiempo de incremento. Si el operando C es especificado, este es evaluado y usado como el tiempo de incremento para la primera transaccin. Si el tiempo de incremento es estrictamente positivo (no cero), la transaccin es colocada en la FEC, si esta es cero la transaccin es puesta en la CEC detrs de su par en prioridad, si esta es negativa un error de stop ocurrir. Restricciones Especiales Los valores de tiempo no deben ser negativos. Los operandos A y D deben ser usados.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque GENERATE.

94

INDEX
Un bloque INDEX actualiza un parmetro de la transaccin activa. Sintaxis INDEX Operadores A Nmero de parmetro. Parmetro con el valor fuente. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Valor numrico. Nmero a ser sumado al contenido del parmetro. El resultado es metido dentro del parmetro 1. Requerido. El operando debe ser un nombre, entero, SNA, o SNA*parmetro. Ejemplo INDEX 2,1 A,B

En este ejemplo, cuando una transaccin ingresa en el bloque INDEX su parmetro nmero 1 le es dado la suma de 1 y el valor del parmetro 2 de la transaccin activa. Accin El bloque INDEX suma un entero al contenido del parmetro de una transaccin y pone el resultado dentro del parmetro 1. Si el parmetro fuente no existe, un error de stop ocurre. En otro caso, si el parmetro 1 no existe en la transaccin activa, este es creado. Restricciones Especiales A debe ser positivo.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque INDEX. SNAs Relacionados Pentnum o *entnum.

95

JOIN
Un bloque JOIN agrega a la transaccin activa a un grupo de transacciones, o agrega un nmero a un grupo numrico. Sintaxis JOIN Operadores A Nmero de Grupo. Grupo al cual un miembro debe ser agregado. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. B Valor numrico. Nmero a ser agregado al grupo numrico. Opcional. El operando debe ser nulo, nombre, entero, SNA, o SNA*parmetro. Ejemplo JOIN SOLDITEMS A,B

Esta es una manera simple de usar el bloque JOIN. La transaccin de entrada al bloque JOIN se vuelve un miembro del grupo de transacciones SOLDITEMS. Accin Los bloques JOIN operan en modo numrico cuando un nmero es especificado por el operando B, y en otro caso en modo transaccin. En modo numrico, los operandos A y B son evaluados y el nmero especificado por B es incluido en el grupo numrico especificado por A. Si este nmero esta ya es un miembro de un grupo numrico, la operacin no es realizada. En modo transaccin, la transaccin de entrada es incluida en el grupo de transacciones especificado por el operando A. Si la transaccin ya es miembro de un grupo, la operacin no es realizada. Los nuevos miembros son colocados en una cadena de grupos en orden a su arribo. Los grupos numricos son diferentes a los grupos de transacciones incluso si tienen el mismo nmero de grupo. Las transacciones no son de ninguna manera restringidas debido a su ocupacin en una cadena de grupo. Luego el grupo es JOINED, la transaccin de entrada procede al NSB. La nica manera que la transaccin de entrada pueda ser removida del grupo es por ser terminada por un bloque TERMINATE o ASSEMBLE, o por ser elegida para ser removida por un bloque REMOVE. Restricciones Especiales A debe ser positivo.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque JOIN. SNAs Relacionados GNentnum.

96

GTentnum.

Bloques Relacionados Las transacciones en grupos de transacciones pueden ser referenciados por los bloques ALTER, EXAMINE, REMOVE, y SCAN. Los nmeros en grupos numricos pueden ser referenciados por los bloques EXAMINE y REMOVE.

97

LEAVE
Un bloque LEAVE hace a las unidades de storage disponibles para otras transacciones. Sintaxis LEAVE Operadores A Nombre o nmero de la entidad storage. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Cantidad de unidades de storage. El valor por defecto es 1. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo LEAVE REPAIRMEN, 10 A,B

En este ejemplo, cuando una transaccin ingresa a un bloque LEAVE, las unidades de storage disponibles de la entidad storage llamada REPAIRMEN es incrementada en 10. Accin Cuando una transaccin ingresa a un bloque LEAVE el operando A es evaluado y la correspondiente entidad de storage es encontrada. Si tal entidad no existe, ocurre un error de stop. Las entidades storage deben ser definidas con una sentencia STORAGE. La cantidad de unidades de storage a ser liberadas es encontrada por la evaluacin del operando B. Si B no es usado, entonces este es asumido como 1. Despus la disponibilidad de storage de una entidad storages incrementada por el valor del operando B. Si el resultado excede la capacidad original del storage , ocurre un error de stop. Si no ocurre un error, la transaccin es planificada hacia el NSB y es colocada en la CEC delante de su par en prioridad. Cuando un storage se vuelve disponible, la Cadena de Demora de la entidad storage es examinada en prioridad decreciente para transacciones cuya demanda puede ahora ser satisfecha. Una disciplina "primero en encajar" es usada. Las transacciones con xito son permitidas a ingresar en el bloque ENTER que era negada a ellas y luego son colocadas en la CEC detrs de su par en prioridad. Restricciones Especiales STORAGE. A debe referenciar a una entidad storage previamente definida por una sentencia B debe ser no negativo. Un intento por liberar mas storage que el que fue definido causara un error de stop.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque LEAVE. SNAs Relacionados

98

Rentnum. Sentnum. SAentnum. SCentnum. SEentnum. SFentnum. SRentnum. SMentnum. STentnum. SVentnum.

99

LINK
Un bloque LINK controla la colocacin de la transaccin activa en una Cadena de Usuario. Sintaxis LINK Operadores A Nmero de la Cadena de Usuario. La Cadena de Usuario que debe recibir a la transaccin entrante. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. B Cadena de clasificacin. La colocacin de nuevas transacciones en la cadena de usuario. Requerido. El operando debe ser LIFO, FIFO, nombre, entero, SNA, o SNA*parmetro. C Direccin del proximo bloque. La direccin del bloque para transacciones que encuentran el indicador link de la cadena de usuario en el estado off (reset). Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo LINK ONHOLD, FIFO A,B,C

En este ejemplo, la transaccin activa es colocada al final de la Cadena de Usuario llamada ONHOLD. Esta es removida de todas las cadenas excepto de la Cadena de Grupo y la Cadena de Interrupcin. En otras palabras, las apropiaciones no son limpiadas. Las transacciones permanecen en la cadena de usuario hasta que alguna otra transaccin ingrese en un bloque UNLINK y especficamente remueva a esta. En el presente ejemplo, la transaccin es colocada al final de la cadena de usuario llamada ONHOLD. Accin La simple operacin de un bloque LINK ocurre cuando el operando C es no usado. En este caso, la transaccin de entrada es siempre colocada en la cadena de usuario especificada por el operando A. Esta es removida de todas las cadenas excepto que las apropiadas no son limpiadas. La colocacin de la transaccin en la cadena de usuario es controlada por el operando B. Si FIFO es usado por el operando B, nuevas transacciones arribando son colocadas en la cola de la cadena de usuario. Si LIFO es usado por el operando B, las nuevas transacciones que arriban son colocadas en la cabeza de la cadena de usuario. Cualquier otro tem usado en el operando B es evaluado por la transaccin activa y de nuevo por cada transaccin mayor. Cuando una transaccin cuyo valor es menor que ese de la transaccin activa es encontrada, la transaccin activa es colocada en la cadena de usuario inmediatamente en el frente. Si el valor de la transaccin activa nunca excede el valor de un ocupante de la cadena de usuario, la transaccin activa es colocada al final de la cadena. Si no se usa FIFO o LIFO en el operando B, se debe normalmente usar una transaccin orientada a un SNA tales las clases como PR, M1 o P. Sin embargo, el dereccionamiento indirecto puede ser muy til. Si PR es usado, las transacciones son colocadas en orden de prioridad. Y finalmente, si un nmero de prioridad es especificado, la transaccin es incertada dentro de la cadena inmediatamente detrs de estas transacciones cuyo valor de parmetro es menor que ese de la transaccin de entrada. La simulacin es mas complicada cuando el operando C es usado. Un interruptor llamado un "indicador link" es parte de cada entidad userchain. El indicador link es til para usar en cadenas de usuario para controlar la cola de transacciones en un recurso. Este es on (set) cuando el hipottico recurso esta "ocupado" y off (reset) cuando esta "disponible". Cuando el indicador link de una entidad userchain esta en off, si el operando C es usado, el bloque LINK no deber colocar la

100

transaccin en la cadena de usuario. El indicador link es til para permitir a la primera de varias transacciones evitar la cadena de usuario y para permitir a las transacciones siguientes ser colocadas en la cadena de usuario. Si el operando C es usado, la transaccin de entrada deber no ser colocada en la cadena de usuario si el indicador link esta en off. En cambio, la transaccin deber proceder al bloque especificado por C, y luego el indicador link deber ser set. Las siguientes transacciones entrantes al bloque LINK deberan ir hacia la cadena de usuario. El indicador link es manipulado por ambos bloques LINK y UNLINK. Este es apagados (reset) cuando un bloque UNLINK es encuentra la cadena de usuario vaca. Es til pensar a un indicador link como representando la " condicin ocupada" de un hipottico recurso. Cuando el indicador link es set, el recurso esta "ocupado". Cuando una transaccin encuentra al recurso inactivo esta no deberia esperar (en la cadena de usuario). La transaccin deberia proceder al bloque especificado por el operando C en el bloque LINK sets al indicador link de la userchain. Considerando a dos transacciones arribando a un bloque LINK, una despus de otra. Si, por ejemplo, la primer transaccin no ingresa a un bloque UNLINK antes de que la segunda transaccin arribe, la segunda transaccin deberia encontrar el indicador link en (set), y deberia ser colocada en la cadena de usuario. En este ejemplo, cuando la primera transaccin ingresa a un bloque UNLINK, la segunda transaccin es removida de la cadena de usuario. A esta altura, el indicador link permanece en (set). Luego, cuando la segunda transaccin ingresa al bloque UNLINK, y las transacciones no esperando son encontradas en la cadena de usuario, el indicador link es finalmente apagado (reset). Las cadenas de usuario permiten manipular el mecanismo de cola de transacciones con mucho mas detalle que una facility. Es posible implementar complicados algoritmos de planificaciones usando los bloques LINK y UNLINK. Las cadenas de usuario pueden ser usadas para reducir la cantidad de tiempo de computo gastado en test sin xito asociados con los bloques GATE, TEST, TRANSFER BOTH, y TRANSFER ALL. Se puede crear rpidas simulaciones colocando transacciones bloqueadas en cadenas de usuario cuando no hay posibilidad de testeos de relaciones exitosos. Luego, se debe introducir cada transaccin de atrs dentro de su bloque de testeo cuando un evento ocurre que puede desbloquear a la transaccin. Restricciones Especiales A, B y C, si son especificados, deben ser positivos. C, si es especificado, debe ser una direccin de bloque en el modelo corriente.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque LINK. SNAs Relacionados CAentnum. CCentnum. CHentnum. CMentnum. CTentnum.

101

LOGIC
Un bloque LOGIC cambia el estado de una entidad llave lgica. Sintaxis LOGIC O Operadores O Operador llave lgica. Requerido. El operando debe ser S, R, o I. A Nmero de llave lgica. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. Ejemplo LOGIC S POWERSWITCH A

En este ejemplo, la llave lgica llamada POWERSWITCH es colocada en verdadero o estado "set". Accin Un bloque LOGIC es usado para set, reset, o invertir el estado de una entidad llave lgica. Una entidad llave lgica tiene dos estados set y reset. Si el operador lgico es S o R, la llave lgica especificada por el operando A es puesta en el estado set o reset, respectivamente. Si el operador lgico es I, el estado de la llave lgica especificada por el operando A es invertido. Esto significa que si esta en el estado set, esta deber ser cambiado a reset, y viceversa. Operadores Lgicos Un operador llave lgica es requerido. Este puede ser S, R, o I. El operador llave lgica tiene el siguiente efecto: S La llave lgica es puesta en el estado "set". R La llave lgica es puesta en el estado "reset". I La llave lgica es invertida.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque LOGIC. SNAs Relacionados LSentnum.

102

LOOP
Un bloque LOOP modifica un parmetro y controla el destino de la transaccin activa basado en el resultado. Sintaxis LOOP Operadores A Parmetro a contener la cuenta. Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Nmero de bloque. Proximo bloque a ir si la cuenta no es cero despus de decrementarla. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo LOOP CUSTOMERCOUNT, STRAT_OVER A,B

Le permite asumir en este ejemplo que el bloque START_OVER precede al bloque LOOP en el modelo corriente. En este ejemplo, cuando una transaccin ingresa al bloque LOOP su parmetro llamado CUSTOMERCOUNT es decrementado por 1. Si el resultado no es cero, la transaccin procede hacia la direccin de bloque START_OVER. Este causa a la transaccin continuar hacia el bloque LOOP hasta que el valor del parmetro llamado CUSTOMERCOUNT es 0. La transaccin entonces procede a el NSB. Accin Cuando una transaccin ingresa a un bloque LOOP, el operando A es evaluado y usado para encontrar el parmetro de transaccin con ese nmero. Si tal parmetro no existe, ocurre un error de stop. En otro caso el valor del parmetro es decrementado por 1. Si el nuevo valor del parmetro no es cero y el operando B es especificado, la transaccin es planificada hacia la direccin especificada en el operando B. En otro caso, la transaccin procede al NSB. Restricciones Especiales A debe ser positivo.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque LOOP. SNAs Relacionados Pparmetro o *parmetro.

103

MARK
Un bloque MARK coloca una marca de tiempo absoluta de reloj dentro de la transaccin activa o dentro de su parmetro. Sintaxis MARK A Operadores A Nmero de parmetro. Parmetro a recibir el valor del reloj del sistema. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplos MARK BEGINNING En este ejemplo, cuando una transaccin ingresa al bloque MARK, su parmetro llamado BEGINNING le es dada un valor igual al valor absoluto del reloj del sistema, AC1. MARK En este ejemplo, cuando una transaccin ingresa al bloque MARK, su "marca de tiempo" es seteada igual al valor absoluto del reloj del sistema. Accin Cuando una transaccin ingresa a un bloque MARK y el operando A no es especificado, Su "marca de tiempo" es seteada igual al valor absoluto del reloj del sistema. Si el operando A es especificado, el parmetro de la transaccin activa con ese nmero es encontrado y se le da un valor igual al valor absoluto del reloj del sistema. Si el parmetro no existe, este es creado. La transaccin activa luego procede al NSB. La marca seteada por el bloque MARK puede ser recuperada por las clases de SNA M1 y MP. M1 retorna el "tiempo de transito", que es el valor absoluto del reloj del sistema menos la marca de tiempo de la transaccin. La clase SNA MP retorna un valor igual al valor absoluto del reloj del sistema menos el valor de un parmetro de transaccin. Restricciones Especiales A, si es especificado, debe ser positivo.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque MARK. SNAs Relacionados MPentnum. M1.

104

MATCH
Un bloque MATCH causa a transacciones esperar por otras transacciones. Sintaxis MATCH Operadores A Nombre o nmero de bloque. Conjugar un bloque MATCH para ser testeado por transacciones iguales (mismo conjunto de reunin). Requerido. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. Ejemplo A_IS_DONE B_IS_DONE MATCH MATCH B_IS_DONE A_IS_DONE A

Este ejemplo muestra dos bloques MATCH conjugados. Ellos deberan normalmente ser colocados separadamente en el modelo corriente, y uno deberia eventualmente recibir a una transaccin SPLIT (mismo conjunto de reunin). Si cada bloque MATCH esta colocado despus de un conjunto de bloques representando algunos procesos, la pareja de transacciones relacionadas deberia preceder de bloques MATCH anteriores nicamente cuando ambas transacciones tienen completados sus respectivos procesos. Accin Cuando una transaccin ingresa a un bloque MATCH, el operando A es evaluado y el bloque conjugado MATCH es encontrado. Si no existe tal bloque, ocurre un error de stop. Si el bloque conjugado MATCH contiene una transaccin (en su cadena match) del mismo conjunto de reunin que la transaccin activa, la transaccin relacionada es removida de la cadena de match. Si esta no se apropia de alguna facility, es colocada en la CEC detrs de su par en prioridad. Similarmente, si la transaccin activa no esta actualmente apropiada de alguna facility esta es colocada en la CEC, pero delante de su par. Si cada transaccin matching esta actualmente apropiada de una facility, a esta no le es permitido dejar el bloque MATCH hasta que todas las apropiaciones han sido limpiadas en su nombre. Si, cuando la transaccin activa ingresa al bloque MATCH, no encuentra una transaccin matching, esta descansa en la cadena match del bloque MATCH. Restricciones Especiales MATCH. A debe ser la direccin de un bloque MATCH en el modelo corriente. Las transacciones que actualmente estn apropiadas no son permitidas a dejar el bloque

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque MARK.

105

SNAs Relacionados Mbentnum.

106

MSAVEVALUE
Un bloque MSAVEVALUE actualiza un elemento de una entidad matriz. Sintaxis MSAVEVALUE A,B,C,D

107

PREEMPT
Un bloque PREEMPT destituye a una transaccin de la propietariedad de una facility. Sintaxis PREEMPT Operadores A Nombre o nmero de facility. El operando debe ser un nombre, enteropos, SNA, o SNA*parmetro. B Modo prioridad. PR, para modo prioridad, o modo interrupcin, si es omitida. Opcional. El operando debe ser PR, o nulo. C Nombre o nmero de bloque. Nuevo destino para la transaccin actualmente propietaria e la facility. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. D Nmero de parmetro. Parmetro de la transaccin apropiada a recibir el tiempo residual si la transaccin apropiada es removida de la FEC. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. E Modo REmove. Transacciones apropiadas removidas de la contencin de la facility. Opcional. El operando debe ser RE, o nulo. Si es RE, se debe especificar un destino en el operando C. Ejemplo PREEMPT TELLER1 A,B,C,D,E

Esta es una simple manera de usar el bloque PREEMPT. Cuando una transaccin ingresa en un bloque PREEMPT, a esta le es dada la propiedad de la facility a menos que esta (la facility) este actualmente apropiada. Si una transaccin debe ser destituida de la propietariedad de la facility, esta no es permitida recidir en la FEC y sus movimientos en el modelo corriente es restringido. Accin Un bloque PREEMPT se comporta como un bloque SEIZE cuando la facility esta desocupada. En otro caso, el bloque PREEMPT opera en ambos modos "de prioridad" o "de interrupcin". Esto es determinado por el operando B. Si esta en modo prioridad, nicamente la transaccin con mayor prioridad puede destituir a la transaccin que posee la facility. Si una posible apropiacin no tiene la suficiente prioridad, esta es colocada en la Cadena de Demora de la facility en orden de prioridad. Si esta en modo interrupcin, si la facility ya esta apropiada la transaccin activa es colocada en la Cadena Pendientes. Las transacciones en la Cadena de Pendientes son preferidas para darles la propiedad de la facility antes que transacciones apropiadas o a transacciones en la Cadena de Demora. Los operandos C y E estn involucrados con que hacer con el propietario actual de la facility que deber ser apropiada. Las transacciones apropiadas que estn indefinido tiempo en un bloque ADVANCE pueden ser reemplazadas en la FEC automticamente omitiendo el operando C y E. Alternativamente, si se escoge reemplazar a la transaccin de la FEC uno mismo, se debe utilizar el operando D y eventualmente enviar la transaccin apropiadas el bloque ADVANCE. Una transaccin apropia puede ser removida de la contencin de su facility (removiendo de todas las cadenas de la facility) usando la opcin RE en el operando E. La opcin RE remueve las restricciones colocadas en las transacciones apropiadas debido a la apropiacin de esta facility, y cualquier intento

108

subsecuente a RETURN o RELEASE la facility da una condicin de error de stop. Una transaccin apropiada no existe en la FEC. Cualquier nueva transaccin apropiada en el bloque ADVANCE que esta en la FEC es removida de la FEC y la duracin de tiempo residual es salvado. Si el operando D es usado, el tiempo residual es tambin salvado en un parmetro de transaccin. Si tal parmetro no existe, este es creado. El tiempo residual es usado para replanificar la transaccin en la FEC cuando esta recupere la propiedad de todas las facilitys por las que compite. Alternativamente, una transaccin apropiada debe ser dada a un bloque nuevo para intentar ingresar usando el operando C. Una transaccin apropiada permanece en disputa por una facility incluso si esta es desplazada por el operando C, a menos que RE sea usado en el operando E. Si una transaccin apropiada, que esta todava en disputa por la facility, intenta ingresar a un bloque TERMINATE ocurre un error de stop. Tales transacciones deben ingresar a un bloque RELEASE o RETURN antes de ellas sean permitidas a TERMINAR. Cuando una transaccin es desplazada usando el operando C, esta es dada a un nuevo bloque de destino y es encolada por: FEC (el tiempo residual es salvado automticamente) CADENA PENDING (modo de interrupcin apropiacin) CADENA DE DEMORA (mayor prioridad) CADENA DE USUARIO CADENA DE REINTENTO

y no son encoladas por: CEC CADENAS DE INTERRUPCION (apropiadas) CADENAS DE GRUPOS

Cuando el operando C no es usado, una transaccin apropiada que ha dejado la FEC deber automticamente regresar a esta. Las transacciones apropiadas que no han sido desplazadas usando el operando C esperan eventualmente a ingresar a un bloque RETURN o RELEASE en orden a obtener la propiedad de la facility. Si tal transaccin arriba a un RETURN o RELEASE antes de recuperar la propiedad de la facility, la transaccin es removida de la disputa por la facility. No ocurre error de stop. Una transaccin puede ser apropiada de cualquier cantidad de facilitys y continua circulando en el modelo. Sin embargo, esto es subjetivo por dos restricciones: Esta es negada a ingresar a los bloques ADVANCE con argumentos de tiempos positivos. Esta no debe intentar liberar un bloque ASSEMBLE, GATHER, o MATCH hasta que todas las apropiaciones sean limpiadas. Una facility puede ser apropiada cualquier cantidad de veces. Sin embargo, una vez que la transaccin ha sido apropiada esta no puede intentar tomar la facility desde que esta a sido apropiada. Una transaccin puede apropiarse de cualquier cantidad de facilitys. Restricciones Especiales Si E es RE, C debe ser usado. Una transaccin no puede apropiarse a si misma.

Modo de rechazo

109

Una transaccin es negada a ingresar a un bloque PREEMPT si, en modo interrupcin, la facility esta actualmente apropiada. Tales transacciones son colocadas al final de la Cadena de Pendientes de la facility. Una transaccin es negada a ingresar a un bloque PREEMPT si, en modo prioridad, la facility esta actualmente ocupada por una transaccin de mayor o igual prioridad que la transaccin activa. La transaccin activa es colocada en orden de prioridad en la Cadena de Demora de la facility. Una transaccin es negada a ingresar a un bloque PREEMPT si la facility esta en el estado no disponible. Tales transacciones son colocadas en la Cadena de Demora de la facility, en orden de prioridad, FIFO sin prioridad. Ejemplo Detallado PREEMPT TELLER1, , TELLER2, 101, RE

En este ejemplo, el bloque PREEMPT opera en modo interrupcin porque el operando B es omitido. Esto significa que una transaccin puede ingresar al bloque y apropiarse de la facility si la facility no esta actualmente en apropiada por una transaccin apropiadora. La prioridad de las transacciones SON IGNORADAS. Cuando una transaccin es apropiada, algn tiempo de permanencia en un bloque ADVANCE es grabado en el parmetro 101 de la transaccin apropiada. La transaccin apropiada es removida de la disputa por la facility y enviada al bloque con label TELLER2. Un error deber resultar si tal transaccin despus intenta RELEASE o RETURN la facility llamada TELLER1, sin propiedad de nuevo. PREEMPT TELLER1, PR, TELLER2.

En este ejemplo, el bloque PREEMPT opera en modo prioridad. Esto significa que una transaccin puede entrar al bloque y apropiar la facility si la facility no esta ya apropiada por una transaccin de igual o mayor prioridad. Cualquier transaccin apropiada no es removida de la disputa por una facility. Esto significa que tal transaccin no puede estar largo tiempo en la FEC o dejar los bloques ASSEMBLE, GATHER, o MATCH. Bajo estas restricciones, las transacciones apropiadas pueden continuar circulando en el modelo corriente, y en este caso son enviadas al bloque de direccin TELLER2. Tales transacciones permanecen en disputa por la facility llamada TELLER1, y normalmente deberan recuperar la propiedad de esta. Una transaccin apropiada puede RETURN o RELEASE una facility incluso si esta no tiene propiedad de esta. Esta remueve la transaccin de la disputa por la facility removiendo a esta de la Cadena de Interrupcin da la facility. SNAs Relacionados Fentnum. FCentnum. FIentnum. FRentnum. FTennum. FVentnum.

110

PRIORITY
Un bloque PRIORITY setea la prioridad de la transaccin activa. Sintaxis PRIORITY Operadores A Nuevo valor de prioridad. Requerido. El operando debe ser nombre, entero, SNA, o SNA*parmetro. B Opcin buffer. Coloca a la transaccin activa detrs de su par en prioridad en la CEC. Opcional. El operando debe ser BU o nulo. Ejemplo PRIORITY 10 A,B

Este ejemplo es un bloque, que causa a cualquier transaccin entrante a tener una prioridad de 10. Accin Cuando una transaccin ingresa en un bloque PRIORITY, el operando A es evaluado y asignado a la prioridad de la transaccin activa. La transaccin es planificada hacia el NSB y colocada en la CEC de acuerdo a su nueva prioridad. Si la opcin Bu es usada en el operando B, la transaccin es colocada detrs de su par en prioridad en la CEC. En otro caso, esta es colocada al frente de su par en prioridad. Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque PRIORITY. SNAs Relacionados PR.

111

QUEUE
Un bloque QUEUE actualiza las estadsticas de la entidad queue para reflejar un incremento en el contenido. Sintaxis QUEUE A,B Operadores A Nombre o nmero de la entidad queue. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. B Cantidad de unidades a ser incrementadas en el contenido de la entidad queue. El valor por defecto es 1. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo QUEUE WAITINGLINE En este ejemplo el contenido de la entidad queue llamada WAITINGLINE es incrementado por uno y son actualizados los acumuladores de estadstica asociados. Accin Cuando una transaccin ingresa al bloque QUEUE, el operando A es evaluado y usado para encontrar a la entidad queue con ese nmero. La entidad queue es creada si es necesario. El operando B especifica el valor a ser usado par incrementar el contenido de la entidad queue. Si el operando B fue especificado, este es evaluado y usado como el incremento. Si B no es especificado, el valor usado es 1. Finalmente, la acumulacin de estadstica en nombre de la entidad queue es actualizada. Restricciones Especiales B, si es especificado, debe ser positivo.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque QUEUE. SNAs Relacionados Qentnum. QAentnum. QCentnum. QMentnum. QTentnum. QXentnum. QZentnum.

112

RELEASE
Un bloque RELEASE libera la propiedad de una facility, o remueve a una transaccin apropiada por la disputa de una facility. Sintaxis RELEASE Operadores A Nmero de facility. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. Ejemplo RELEASE TELLER1 A

En este ejemplo, cuando una transaccin posee una facility llamada TELLER1 ingresa al bloque RELEASE, esta deja la propiedad de la facility. Accin Cuando una transaccin ingresa al bloque RELEASE, esta remueve a si mismo de la contencin de la facility. Esto puede suceder de dos maneras: Primero, la transaccin con la propiedad de la facility. En este caso, deja la propiedad y procede al NSB. Segundo, la transaccin que ha sido apropiada de la propiedad de la facility. En este caso la transaccin es removida de la Cadena de Interrupcin de la facility. La propiedad no es afectada. Si la transaccin es limpiada de una apropiacin, esta puede moverse normalmente en el modelo corriente. La transaccin de entrada es removida de la propiedad o de la contencin de la facility e intenta ingresar al proximo bloque. Si la propiedad de la facility esta por ser decidida, el proximo propietario es tomado de la Cadena de Pendientes, la Cadena de Interrupcin, y finalmente la Cadena de Demora. Si esta en modo interrupcin al primer pendiente se le otorga la propiedad de la facility. En otro caso, la propiedad es retornada a la transaccin mas recientemente apropiad. Si la Cadena de Pendientes (esperando en modo de interrupcin PRREMPTs) y la Cadena de Interrupcin (transacciones apropiadas) estn vacas, la transaccin de mayor prioridad en la Cadena de Demora le es dada la propiedad. Cuando un nuevo propietario es elegido de la Cadena de Demora o la Cadena de Pendientes, esta ingresa al bloque SEIZE o PREEMPT inmediatamente, y luego es planificada colocndola en la CEC detrs de su par de prioridad. Restricciones Especiales Una transaccin de entrada debe poseer, o concurrentemente ser apropiada de la facility. En otro caso ocurre un error de stop. Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque RELEASE.

113

SNAs Relacionados Fentnum. FCentnum FIentnum. FRentnum. FTentnum. FVentnum.

114

REMOVE
Un bloque REMOVE remueve miembros de un grupo. Sintaxis REMOVE Operadores O Operador condicional. Relacin de D a E para quitar a ocurrir. Opcional. El operando debe ser nulo, E, G, GE, L, LE, MAX, MIN, O NE. A Nmero de grupo. Grupo de donde un miembro o miembros deberan ser removidas. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. B Limite a remover. La cantidad mxima de transacciones a ser removidas. Opcional. El operando debe ser ALL, nulo, nombre, enteropos, SNA, o SNA*parmetro. C Valor numrico. El valor numrico a ser removido del un grupo numrico. Opcional. El operando debe ser nulo, nombre, entero, SNA, o SNA*parmetro. D Valor a testear. PR o nmero de parmetro. El atributo del miembro que determina si cada miembro del grupo de transacciones deber ser removido, o PR para usar la prioridad de la transaccin para la determinacin. Esta es evaluado con respecto a el miembro del grupo de transacciones. Opcional. El operando debe ser PR o nulo, nombre, enteropos, SNA, o SNA*parmetro. E Valor de referencia. El valor contra el cual el operando D es comparado. El valor de referencia es evaluado con respecto a la transaccin activa. Opcional. El operando debe ser nulo, nombre, entero, SNA, o SNA*parmetro. F Nmero de bloque. El destino alternativo para la transaccin activa. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo REMOVE INVENTORY O A, B, C, D, E, F,

Este es una manera simple de usar el bloque REMOVE. La transaccin de entrada al bloque REMOVE es testeada por nmeros de miembros en el grupo de transacciones llamado INVENTORY. Si la transaccin es un miembro esta es removida del grupo. Accin Un bloque REMOVE excluye valores numricos desde nmeros de miembros en un grupo numrico, o transacciones miembros de un grupo de transacciones. Las transacciones no son desplazadas de su contexto. Sin embargo, hay una excepcin. La transaccin ingresante al bloque REMOVE debe ser redirigida de acuerdo al operando F. Un bloque REMOVE opera en modo numrico si el operando C es usado. En modo numrico, los operandos A y C son evaluados y el nmero especificado por C es testeado con respecto a nmeros de miembros en el grupo numrico especificado por A. Si este nmero es un miembro del grupo numrico, este es removido del grupo. Si el valor numrico no es un miembro del grupo numrico y el operando F es usado, la transaccin de entrada procede al bloque especificado por F. En otro caso, la transaccin de entrada procede al NSB. Unicamente A, C, y F pueden ser usados en modo numrico. Un bloque REMOVE opera en modo transaccin si el operando C no es usado. En modo transaccin, hay varias opciones disponibles para seleccionar a la/las transacciones a ser removidas del grupo. Si no se especifican los operandos B, D, o E, entonces solamente la transaccin de entrada al bloque REMOVE son removidas. Este modo de operacin es llamada remover a si mismo. En otro caso, un grupo examinado es realizado.

115

En un grupo examinado, se puede testear cada transaccin a ser removida usando el operador condicional y/o operandos D y E. Tambin, se puede limitar la cantidad de transacciones a ser removidas por el operando B. El operando D siempre se refiere a el grupo de miembros a testear. Anuncia que cualquier SNA puede ser usado en un operando D. Cualquier SNA que requiere una transaccin para su evaluacin usa el grupo de miembros actual a ser testeado. El resultado regresado por cualquier SNA, otro que PR, es usado como un nmero de parmetro, cuyo valor es retornado como el valor final. En un grupo examinado se puede usar un operador condicional para especificar la relacin entre el atributo de la transaccin (operando D) y el valor de referencia (operando E) que debe iniciar la remocin de las transacciones. El valor de defecto para el operador condicional es E por igual. Si se no usa el operador condicional, pero se usa el operando D y el operando E, los valores deben ser igual a la transaccin a ser removida del grupo. Si MIN o MAX es usado como operador condicional, todas las transacciones con atributo mayor o menor (operando D) son removidas, hasta el limite especificado por el operando B. El operando F es usado en ambos modos, numrico y transaccin. Este indica un destino alternativo a ser tomado por la transaccin de entrada cuando una condicin de excepcin ocurre. El operando F es usado por el bloque destino bajo las siguientes condiciones: En modo numrico, si el valor numrico (operando C) no fue un miembro del grupo. En modo remover a si mismo, si la transaccin ingresante al bloque REMOVE no fue un miembro del grupo de transacciones. En modo examinar grupo, si no es removida la transaccin. En modo examinar grupo, si la cantidad removida especificada por el operando B no puede ser alcanzada. Si el operando F no es usado, la transaccin de entrada siempre va hacia el NSB. Operadores Condicionales Los operadores condicionales pueden ser E, G, GE, L, LE, MAX, MIN, o NE. Si no es usado un operador condicional, E (igual) es asumido. Cuando la condicin es verdadera, la transaccin es testeada y removida del grupo. Las condiciones son definidas como sigue: E El atributo de la transaccin especificado por el operando D debe ser igual al valor de referencia especificado por el operando E de la transaccin a ser removida del grupo. G El atributo de la transaccin especificado por el operando D debe ser mayor al valor de referencia especificado por el operando E de la transaccin a ser removida del grupo. GE El atributo de la transaccin especificado por el operando D debe ser mayor o igual al valor de referencia especificado por el operando E de la transaccin a ser removida del grupo. L El atributo de la transaccin especificado por el operando D debe ser menor al valor de referencia especificado por el operando E de la transaccin a ser removida del grupo. LE El atributo de la transaccin especificado por el operando D debe ser menor o igual al valor de referencia especificado por el operando E de la transaccin a ser removida del grupo. MAX El atributo de la transaccin especificado por el operando D debe ser igual al mayor de los atributos de todas las transacciones en el grupo de la transaccin a ser removida del grupo. MIN El atributo de la transaccin especificado por el operando D debe ser igual al menor de los atributos de todas las transacciones en el grupo de la transaccin a ser removida del grupo. NE El atributo de la transaccin especificado por el operando D debe ser distinto al valor de referencia especificado por el operando E de la transaccin a ser removida del grupo. Restricciones Especiales

116

Si un grupo numrico es referenciado, no se debe usar un operador condicional. Si un grupo numrico es referenciado, no se debe usar los operandos B, D, o E. Si el operando D es usado, se debe usar el operando E o sino se debe usar el operador condicional MIN o MAX. Si el operando E es usado, se debe usar el operando D. Si MIN o MAX es usado por el operador condicional, el operando D debe ser usado y el operando E no debe ser usado. Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque REMOVE. Ejemplo Detallado REMOVE G 3, 10, , 300, 11, JUMPBLOCK

En este ejemplo, el grupo de transacciones 3 es examinado por transacciones que tengan el valor en su parmetro 300 mayor a 11. Las primeras 10 transacciones que se encuentren en el test son removidas del grupo. Si no se encuentran 10 transacciones que pasen el test, la transaccin ingresante intenta ingresar al bloque llamado JUMPBLOCK. En otro caso, esta procede al NSB. SNAs Relacionados GNentnum. GTentnum.

Bloques Relacionados Las transacciones y enteros son adicionados a un grupo con el bloque JOIN. Las transacciones en grupos pueden ser referenciados por los bloques ALTER, EXAMINE, REMOVE, y SCAN. Los nmeros en grupos numricos pueden ser referenciados por los bloques EXAMINE y REMOVE.

117

RETURN
Un bloque RETURN libera la propiedad de una facility, o remueve a transacciones apropiadas de la contencin de una facility. Sintaxis RETURN Operadores A Nmero de facility. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. Ejemplo RETURN TELLER1 A

En este ejemplo, cuando una transaccin que posee una facility llamada TELLER1 ingresa al bloque RETURN, esta deja la propiedad de la facility. Accin Cuando una transaccin ingresa a un bloque RETURN esta se remueve a si mismo de la contencin de la facility. Esto puede hacerse de dos maneras: Primero, la transaccin que posee la facility. En este caso, esta deja la propiedad de la facility y procede al NSB. Segundo, la transaccin que ha sido apropiada de la propiedad de las facility. En este caso la transaccin es removida de la Cadena de Interrupcin de la facility. La propiedad no es afectada. Si la transaccin esta libre de la apropiacin, esta se puede mover libremente por el modelo corriente. La transaccin de entrada es removida de la propiedad o de la contencin de la facility e intenta ingresar al proximo bloque. Si la propiedad de la facility esta por ser decidida, el proximo propietario es tomado de la Cadena de Pendientes, la Cadena de Interrupcin, y finalmente la Cadena de Demora. Si esta en modo interrupcin al primer pendiente se le otorga la propiedad de la facility. En otro caso, la propiedad es retornada a la transaccin mas recientemente apropiad. Si la Cadena de Pendientes (esperando en modo de interrupcin PRREMPTs) y la Cadena de Interrupcin (transacciones apropiadas) estn vacas, la transaccin de mayor prioridad en la Cadena de Demora le es dada la propiedad. Si no hay transacciones esperando, la facility se vuelve ociosa. Cuando un nuevo propietario es elegido de la Cadena de Demora o la Cadena de Pendientes, esta ingresa al bloque SEIZE o PREEMPT inmediatamente, y luego es planificada colocndola en la CEC detrs de su par de prioridad. Restricciones Especiales Una transaccin de entrada debe poseer, o concurrentemente ser apropiada de la facility. En otro caso ocurre un error de stop. Modo de rechazo

118

A una transaccin nunca se le niega la entrada a un bloque RETURN. SNAs Relacionados Fentnum. FCentnum FIentnum. FRentnum. FTentnum. FVentnum.

119

SAVAIL
Un bloque SAVAIL asegura que una entidad storage este en el estado disponible. Sintaxis SAVAIL Operadores A Nmero de storage. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. Ejemplo SAVAIL MOTORRPOOL A

En este ejemplo, cuando una transaccin ingresa al bloque SAVAIL, la entidad storage es asegurada a estar en el estado disponible. Accin Un bloque SAVAIL asegura que una entidad storage sea disponible. Si algunas transacciones estn esperando en la Cadena de Demora del storage, a ellas se les da la chance de ingresar a la entidad storage de acuerdo a la disciplina primero en encajar. Esas transacciones cuya demanda de storage no pueden ser satisfechas esperan en la Cadena de Demora del storage. Si la entidad storage esta ya en el estado disponible, el bloque SAVAIL no tiene ningn efecto. Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque SAVAIL. SNAs Relacionados Rentnum. Sentnum. SAentnum. SCentnum. SEeentnum. SFentnum. SRentnum. SMentnum. STentnum. SVentnum.

120

SAVEVALUE
Un bloque SAVEVALUE cambia el valor de una entidad savevalue. Sintaxis SAVEVALUE Operadores A Nmero de la entidad savevalue. Puede ser seguida de + o para indicar la suma o la resta al valor existente. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro, seguido por +, -, o nulo. B El valor a ser cargado, sumado, o restado. Requerido. El operando debe ser nombre, entero, SNA, o SNA*parmetro. Ejemplo SAVEVALUE ACCOUNT, 10000 A,B

En este ejemplo, el valor guardado en la entidad llamada ACCOUNT toma el valor 10000. Accin Un bloque SAVEVALUE es usado para asignar, incrementar, o decrementar el valor de un valor guardado en la entidad. El operando A es evaluado y usado como el nmero de entidad a guardar el valor. El operando B es evaluado y usado para determinar el nuevo valor para el valor a guardar. Si el operando A esta seguido por +, entonces el operando B es sumado a el viejo valor. Si el operando A es seguido de -, el operando B es restado a el viejo valor. Si el operando A no esta seguida por un signo, el viejo valor guardado es reemplazado por B. Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque SAVEVALUE. SNAs Relacionados Xentnum.

121

SCAN
Un bloque SCAN comunica informacin de un miembro de un grupo de transacciones a la transaccin activa. Sintaxis SCAN O Operadores O Operador condicional. Relaciona a B con C con respecto al grupo de miembros a ser cambiados. Opcional. El operando debe ser nulo, E, G, GE, L, LE, MAX, MIN, O NE. A Nmero de grupo. Grupo cuyos miembros deberan ser examinados. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. B Valor a testear. PR o nmero de parmetro. El atributo del miembro que determina si cada miembro del grupo de transacciones deber ser seleccionado, o PR para usar la prioridad de la transaccin para la determinacin. Este es evaluado con respecto a el miembro del grupo de transacciones. Opcional. El operando debe ser PR o nulo, nombre, enteropos, SNA, o SNA*parmetro. C Valor de referencia. El valor contra el cual el operando B es comparado. El valor por defecto es 0. Opcional. El operando debe ser nulo, nombre, entero, SNA, o SNA*parmetro. D Valor recuperado. PR o nmero de parmetro. El atributo de un miembro que esta por ser asignado a un parmetro de la transaccin activa. Este es evaluado con respecto a miembros del grupo de transacciones. Requerido. El operando debe ser PR o nombre, enteropos, SNA, o SNA*parmetro. E Nmero de parmetro recepcionado. El nmero de parmetro de la transaccin activa que deber recibir el valor recuperado desde el operando D. Requerido. El operando debe ser nombre, entero, SNA, SNA*parmetro. F Nmero de bloque alternativo. El destino alternativo para la transaccin de entrada. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo SCAN MAX INVENTORY, PRICE, , PARTNUMBER, 100 A, B, C, D, E, F

En este ejemplo, todas las transacciones en el grupo de transacciones INVENTORY son examinadas en orden para encontrar el parmetro llamado PRICE con el mayor valor. La primer transaccin con el valor de parmetro PRICE mximo es luego seleccionada para la evaluacin del operando D. El valor del parmetro PARTNUMBER del miembro del grupo seleccionado es asignado al nmero de parmetro 100 de la transaccin activa. Si el grupo esta vaco, ocurre un error de stop. Accin Un bloque SCAN encuentra la primer transaccin en un grupo que pasa todos los test, y carga uno de estos atributos en un parmetro de la transaccin ingresante al bloque SCAN. Si tal parmetro no existe para la transaccin activa, uno es creado. Si una apropiada transaccin miembro del grupo no puede ser apropiada, no es cargado el valor. El miembro del grupo de transacciones puede ser elegido en base a un testeo de uno de sus atributos. Esto es hecho usando el operando B, C, y/o un operador condicional. Si tal testeo no es usado, la primera transaccin en el grupo, si hay alguna, es seleccionada. Cuando un miembro de un grupo de transacciones es encontrado satisfactoriamente con respecto a un testeo (opcional), su atributo, que es especificado por el operando D, es copiado dentro del parmetro de la transaccin ingresante, especificada por el operando E. En este caso, la transaccin ingresante al bloque SCAN siempre procede al NSB.

122

Si no es encontrada una transaccin que satisfaga los requerimientos, la transaccin ingresante al bloque SCAN puede opcionalmente ser direccionada a el bloque especificado por el operando F. En otro caso, esta procede al NSB. Si se usa el operando B, C, o un operador condicional, el primer miembro del grupo que pase el testeo es seleccionado. El operando B especifica que atributo del miembro transaccin esta por ser testeado. Este puede ser comparado al mnimo o mximo de todos los atributos de los miembros del grupo usando MIN o MAX como operador condicional. La primer transaccin en el grupo que tenga el mximo o mnimo atributo es seleccionado. Si se usa MIN o MAX no se debe usar el operando C. Se puede comparar al atributo del miembro del grupo al operando C, con o sin operador condicional. En este caso, el operador condicional no debe ser MIN o MAX. El valor por defecto del operando C es 0. Los operandos B y D siempre se refieren a el miembro de grupo a ser testeado. Notar que cualquier SNA puede ser usado en un operando D. Cualquier SNA que requiere una transaccin para su evaluacin usa el grupo de miembros actual a ser testeado. El resultado regresado por cualquier SNA, otro que PR, es usado como un nmero de parmetro, cuyo valor es retornado como el valor final. El valor por defecto del operador condicional es E por igual. Si no se usa un operador condicional, pero se usa los operandos B y C, los valores deben ser igual al atributo de la transaccin miembro a ser seleccionado. El operando F indica un destino de bloque alternativo a ser tomado por la transaccin de entrada cuando no es encontrada una transaccin que satisfaga las condiciones especificadas . Si el operando F no es usado, la transaccin de entrada siempre procede al NSB. Operadores Condicionales Los operadores condicionales pueden ser E, G, GE, L, LE, MAX, MIN, o NE. Si no es usado un operador condicional, E (igual) es asumido. Cuando la condicin es verdadera, la transaccin es testeada y seleccionada del grupo. Las condiciones son definidas como sigue: E El atributo de la transaccin especificado por el operando B debe ser igual al valor de referencia especificado por el operando C de la transaccin a ser seleccionada del grupo. G El atributo de la transaccin especificado por el operando B debe ser mayor al valor de referencia especificado por el operando C de la transaccin a ser seleccionada del grupo. GE El atributo de la transaccin especificado por el operando B debe ser mayor o igual al valor de referencia especificado por el operando C de la transaccin a ser seleccionada del grupo. L El atributo de la transaccin especificado por el operando B debe ser menor al valor de referencia especificado por el operando C de la transaccin a ser seleccionada del grupo. LE El atributo de la transaccin especificado por el operando B debe ser menor o igual al valor de referencia especificado por el operando C de la transaccin a ser seleccionada del grupo. MAX El atributo de la transaccin especificado por el operando B debe ser igual al mayor de los atributos de todas las transacciones en el grupo de la transaccin a ser seleccionada del grupo. MIN El atributo de la transaccin especificado por el operando B debe ser igual al menor de los atributos de todas las transacciones en el grupo de la transaccin a ser seleccionada del grupo. NE El atributo de la transaccin especificado por el operando B debe ser distinto al valor de referencia especificado por el operando E de la transaccin a ser seleccionada del grupo. Restricciones Especiales Si el operando C es usado, se debe usar el operando B.

123

Si MIN o MAX es usado por el operador condicional, el operando C no debe ser usado.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque SCAN. Ejemplo Detallado SCAN E LOT11, P$PARTNUM, 127, P$PRICE, PRICE, PHONE

En este ejemplo, cuando una transaccin ingresa a un bloque SCAN, la transaccin del grupo llamado LOT11 es examinado por la primer transaccin que tenga un valor de 127 en su parmetro llamado PARTNUM. Si tal transaccin es encontrada, el valor en su parmetro llamado PRICE es transferido a el correspondiente parmetro de la transaccin de entrada al bloque SCAN. La transaccin de entrada luego procede al NSB. Si tal miembro de grupo no es encontrado, la transaccin de entrada procede al bloque con label PHONE. Los operandos D y E no necesitan especificar el mismo parmetro de transaccin. SNAs Relacionados GTentnum.

Bloques Relacionados Las transacciones y enteros son adicionados a un grupo con el bloque JOIN. Las transacciones en grupos pueden ser referenciados por los bloques ALTER, EXAMINE, REMOVE, y SCAN. Los nmeros en grupos numricos pueden ser referenciados por los bloques EXAMINE y REMOVE.

124

SEIZE
Cuando la transaccin activa intenta ingresar a un bloque SEIZE , esta espera por adquirir la posesin de una facility. Sintaxis SEIZE Operadores A Nmero de la facility. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. Ejemplo SEIZE TELLER1 A

En este ejemplo, cuando una transaccin intenta ingresar al bloque SEIZE, el estado de la facility llamada TELLER1 es testeado. Si esta est ociosa, la posesin es dada a la transaccin activa, que es permitida a ingresar al bloque SEIZE y procede al NSB. Si la facility esta ocupada, la transaccin activa descansa en la Cadena de Demora de la facility. Accin Un bloque SEIZE habilita a una transaccin a adquirir la posesin de una facility. Si la facility esta ociosa, la transaccin inmediatamente adquiere la posesin de esta, ingresa al bloque SEIZE, e intenta ingresar al proximo bloque. Si la facility esta ya apropiada, la transaccin descansa, ultima sin su prioridad, en la Cadena da Demora de la facility y no entra al bloque SEIZE. Operandos El nombre o nmero de la facility.

Modo de rechazo Una transaccin es negada a ingresar a un bloque SEIZE si no puede inmediatamente recibir la posesin de la facility. La transaccin activa es negada a ingresar al bloque SEIZE si la facility esta en el estado no disponible. Cuando una transaccin es negada a entrar , su indicador de demora es seteado y permanece as hasta que la transaccin ingresa al bloque TRANSFER en modo simultaneo. SNAs Relacionados Fentnum. FCentnum FIentnum. FRentnum. FTentnum. FVentnum.

125

SELECT
Un bloque SELECT elige una entidad y coloca su nmero de entidad en un parmetro de la transaccin activa. Sintaxis SELECT Operadores O Operador condicional u operador lgico. Requerido. Opcional. El operando debe ser FNV, FV, I, LS, LR, NI, NU, SE, SF, SNE, SNF, SNV, SV, U , E, G, GE, L, LE, MAX, MIN, o NE. A Nmero de parmetro a recibir el nmero de la entidad elegida. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. B Nmero menor de la entidad. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. C Nmero mayor de la entidad. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. D Valor de referencia para el operando E que esta en modo condicional. Opcional. El operando debe ser nulo, nombre, integer, SNA, o SNA*parmetro. No es usado con MAX o MIN. E Nombre de clase SNA. Atributo de entidad especificado por el modo condicional de testeo. Requerido nicamente para el modo condicional. El tipo de SNA implica el tipo de entidad,. No se debe especificar el nmero de entidad en el operando E. Esto es hecho automticamente como el rango de nmeros de entidad buscados. Se debe usar una clase de SNA entidad. El operando debe ser nulo o entitySNAclass. F Nmero de bloque alternativo. El destino alternativo si no es seleccionada una entidad. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo SELECT SF FULL1, BIN1, BIN13 O A, B, C, D, E, F

En este ejemplo , el nmero de entidad del primer storage lleno cuyo nmero de entidad cae entre BIN1 y BIN13 deber ser cargado en el parmetro de transaccin llamado FULL1. Accin Cuando el bloque SELECT es ingresado, la entidad especificada por el operando B es testeado. Si la entidad no existe y no se requiere una sentencia de control para su definicin, una nueva entidad es creada. Despus de esto, cada entidad en el rango indicado por el operando B y C es testeado. Un SNA es construido automticamente por cada entidad. La clase de SNA usada para construir el SNA es tomado del operando E o especificado por el operador lgico. Un bloque SELECT opera en modo lgico como en modo condicional, dependiendo en si un operador lgico o condicional es usado. Cuando un operador lgico es usado , los operandos A, B, y C son usados. La condicin especificada por el operador lgico es testeado por la entidad cuyo nmero cae dentro de B y C. El nmero de entidad de la primer entidad encontrada en esa condicin es colocada en el parmetro de la transaccin de entrada cuyo nmero es obtenido del operando A. El tipo de entidad es implicado por el operador lgico que es usado. Si la entidad no es encontrada, 0 es colocado en el parmetro de la transaccin activa. Cuando un operador condicional es usado, los operandos A, B, C, E y usualmente D son usados. Los operandos A, B, C son usados para especificar el parmetro objetivo, y el rango de nmeros de entidad, como antes. Pero ahora el operador condicional especifica la relacin entre el operando D y E que debe

126

influenciar por la entidad a seleccionar. En modo condicional, la clase de SNA es combinada con la especificaciones de entidad en orden a construir un SNA. El tipo de entidad es implicado por cada clase de SNA. El SNA completo es construido desde esta clase y el nmero de la entidad comienza a ser testeada. Cada SNA es evaluado por cada entidad y comparado a el valor de referencia en el operando D. El operando D es evaluado con respecto a la transaccin de entrada y es el valor de referencia por comparacin del operando E, que especifica la clase de SNA (y por consiguiente el tipo de entidad) a ser evaluado. El operador condicional especifica la relacin, que el operando E, evaluado con cada entidad, debe tener con el operando D, evaluado en nombre de la transaccin de entrada, en orden a la entidad a ser seleccionada. Si MIN o MAX son usados como operadores condicionales, El operando D es ignorado. En ambos modos, el operando F puede ser usado para dirigir la transaccin de entrada a un nuevo bloque en el evento que no se puede seleccionar una entidad. Si F no es usado, la transaccin ingresante deber siempre proceder al NSB. Operadores Lgicos Tanto los operadores condicionales como lgicos son requeridos. Los operadores lgicos pueden ser FNV, FV, I, LS, NI, UN, SE, SF, SNE, SNF, SNV, SV, o U. Cuando el operador lgico es verdadero, la entidad comienza a ser testeada es seleccionada. Las condiciones son definidas como sigue: seleccionada. seleccionada. seleccionada. seleccionada. FNV La facility tiene que estar no disponible para que sea seleccionada. FV La facility tiene que estar disponible para que sea seleccionada. I La facility tiene que esta actualmente interrumpida (preempted) para que sea LS La llave lgica tiene que estar en set (en el estado "on") para que sea LR La llave lgica tiene que estar en reset (en el estado "off") para que sea NI La facility no tiene que estar actualmente interrumpida (preempted) para ser NU La facility no tiene que estar en uso para que sea seleccionada. SE El storage tiene que estar vaco para que sea seleccionado. SF - El storage tiene que estar lleno para que sea seleccionado. SNE - El storage no tiene que estar vaco para que sea seleccionado. SNF - El storage no tiene que estar lleno para que sea seleccionado. SNV - El storage no tiene que estar disponible para que sea seleccionado. SV - El storage tiene que estar disponible para que sea seleccionado. U La facility tiene que estar en uso para que sea seleccionado.

Operadores Condicionales Tanto los operadores condicionales como lgicos son requeridos. Los operadores condicionales pueden ser E, G, GE, L, LE, MAX, MIN, o NE. Cuando la condicin es verdadera, la entidad comenzada a ser testeada es seleccionada. Las condiciones son definidas como sigue: E El atributo de entidad especificado por el operando E debe ser igual al valor de referencia especificado en el operando D de la entidad a ser seleccionada. G El atributo de entidad especificado por el operando E debe ser mayor que el valor de referencia especificado en el operando D de la entidad a ser seleccionada. GE El atributo de entidad especificado por el operando E debe ser mayor o igual al valor de referencia especificado en el operando D de la entidad a ser seleccionada. L El atributo de entidad especificado por el operando E debe ser menor que el valor de referencia especificado en el operando D de la entidad a ser seleccionada.

127

LE El atributo de entidad especificado por el operando E debe ser menor o igual al valor de referencia especificado en el operando D de la entidad a ser seleccionada. MAX El atributo de entidad especificado por el operando E debe ser igual al mayor de todos los SNAs, de la entidad a ser seleccionada. MIN El atributo de entidad especificado por el operando E debe ser igual al menor de todos los SNAs, de la entidad a ser seleccionada. NE El atributo de entidad especificado por el operando E debe ser distinto que el valor de referencia especificado en el operando E de la entidad a ser seleccionada. Restricciones Especiales Tanto los operadores condicionales como lgicos son requeridos. Los nmeros de entidades evaluadas deben ser enteros positivos. D y E son requeridos si O es un operador condicional distinto que MIN o MAX. Cuando es evaluado, C debe ser mayor o igual que B.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque SELECT. Ejemplo Detallado SELECT E EMPTY1, QUEUE1, QUEUE9, 0, Q

En este ejemplo, el bloque SELECT opera en modo condicional. Cada entidad queue con nmero entre QUEUE1 y QUEUE9, inclusive, es testeada. La primer entidad queue cuyo contenido actual sea 0 es seleccionada. EMPTY1 es el nombre del parmetro de la transaccin de entrada a recibir el nmero de entidad de la primer queue vaca en el rango especificado.

128

SPLIT
Un bloque SPLIT crea transacciones del mismo conjunto de reunin (assembly set) que la transaccin activa. Sintaxis SPLIT Operadores A Contador. Cantidad de transacciones relacionadas a ser creadas. Requerido. El operando debe ser nombre, enteropos, SNA o SNA*parmetro. B Nmero de bloque. Destino para la nueva transaccin. Opcional. El operando debe ser nulo, nombre, enteropos, SNA o SNA*parmetro. C Nmero de parmetro. Parmetro a recibir el nmero serial. Opcional. El operando debe ser nulo, nombre, enteropos, SNA o SNA*parmetro. Ejemplo SPLIT 1 A, B, C

Esta es una simple manera de usar el bloque SPLIT. Una copia de la transaccin padre es creada la cual deber seguir a la transaccin padre al proximo bloque. La nueva transaccin tiene la misma prioridad, valores de parmetro, y marcas de tiempo que su padre. Accin Un bloque SPLIT crea nuevas transacciones que comparten los atributos de su padre. Cada transaccin hijo tiene la misma prioridad y marca de tiempo del padre, y esta en el mismo conjunto de reunin. Si la seal de reloj es seteada en la transaccin padre, esta es encendida en la transaccin hijo. La nueva transaccin debe ser enviada a un destino alternativo, usando un nmero de bloque en el operando B. El nuevo nmero de bloque es evaluado por cada nueva transaccin. El operando opcional C es especifica el nmero de parmetro de la transaccin padre y la transaccin nueva creada recibe un nmero en serie. La numeracin comienza con el valor correspondiente del parmetro original de la transaccin padre, mas 1. Tambin, el parmetro de la transaccin padre es el primero a ser renumerado. Por ejemplo, una transaccin con nmero de parmetro 120 teniendo el valor 15 ingresa al bloque SPLIT 3, , 120. Cuando esta ingresa al bloque, su parmetro nmero 120 le es dado el valor 16 y su hijo toma el valor de 17, 18,y 19. Si la transaccin padre no tiene tal parmetro, la numeracin comienza en 1. Usando tanto el operando B como C es posible enviar a cada nueva transaccin a diferentes destinos. La transaccin padre y todas las transacciones hijo todas pertenecen al mismo conjunto de transacciones llamado conjunto de reunin. Todas las transacciones pertenecen exactamente a un conjunto de reunin, e hijos de hijos pertenecen al conjunto de reunin del padre. Los miembros del mismo conjunto de reunin estn relacionados. La relacin de transacciones debe ser testeada y usada en los bloques ASSEMBLE, GATHER, MATCH, y GATE para sincronizacin y otros propsitos. Restricciones Especiales A, B, y C, si son especificados deben ser positivos.

129

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque SPLIT. Ejemplo Detallado SPLIT 3, P20, 20

En este ejemplo, cada vez que el bloque SPLIT es ingresado, 3 nuevas transacciones son creadas. Cada transaccin tiene la misma prioridad, marca de tiempo, y valores de parmetro que la transaccin padre, con la excepcin del parmetro nmero 20. Cada transaccin hijo deber tener un nmero en serie en su parmetro nmero 20 basado en el valor del parmetro nmero 20 de la transaccin padre. El bloque de destino del operando B es evaluado con respecto a cada nueva transaccin cread. Si el parmetro 20 de la transaccin padre contiene un nmero de bloque, n, entonces la primer transaccin deber ir al bloque n+2, la segunda a n+3 y la tercera a n+4. El ejemplo de arriba es nico porque el parmetro 20 es usado en ambos operandos B y C. Por consiguiente, el nmero serial es usado para determinar la direccin del bloque destino. Los operandos B y C pueden ser tiles para separar propsitos, el operando b contiene un simple destino de la transaccin hijo y C, un nmero en serie que puede ser usado para dirigir a las transacciones individualmente a alguna direccin mas distante en el modelo. SPLIT 3, PRO, 17

En este ejemplo, cada vez que el bloque SPLIT es ingresado, 3 nuevas transacciones son creadas. La transaccin padre va hacia el NSB, los hijos a un bloque llamado PRO, y el parmetro 17 que debe haber sido creado previamente en relacin a la transaccin padre deber recibir la serializacion. Si el parmetro de la transaccin padre ha sido inicializado en 0 el padre deber, despus de pasar a travs del bloque SPLIT, tener un 1 en el parmetro 17 y los hijos deberan tener 2, 3, y 4 en el parmetro 17.

130

SUNAVAIL
Un bloque SUNAVAIL asegura que una entidad storage este en el estado no disponible. Sintaxis SUNAVAIL Operadores A Nmero de storage. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. Ejemplo SUNAVAIL MOTORRPOOL A

En este ejemplo, cuando una transaccin ingresa al bloque SUNAVAIL, la entidad storage es asegurada a estar en el estado no disponible. Accin Un bloque SUNAVAIL asegura que una entidad storage sea no disponible. Esto significa que todas las transacciones que demanden storage deberan ser colocadas en la Cadena de Demora del storage. O es permitido ingresar transacciones al bloque ENTER si la entidad storage esta en estado no disponible. Si la entidad storage esta ya en el estado no disponible, el bloque SUNAVAIL no tiene ningn efecto. Restricciones Especiales El operando A debe ser el nombre o nmero de una entidad storage predefinida.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque SUNAVAIL. SNAs Relacionados Rentnum. Sentnum. SAentnum. SCentnum. SEeentnum. SFentnum. SRentnum. SMentnum. STentnum. SVentnum.

131

TABULATE
Un bloque TABLATE dispara un tem dato de una coleccin en una tabla. Sintaxis TABULATE Operadores A Nombre o nmero de la entidad tabla. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. B Factor de peso. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo TABULATE SALES A,B

Cuando una transaccin ingresa a este bloque TABULATE, la entidad tabla llamada SALES es encontrada. SALES debe haber sido definida con una sentencia TABLE. Luego las estadsticas asociadas con la tabla son actualizadas sin ningn peso.

Accin Cuando una transaccin ingresa a un bloque TABULATE, el operando A es evaluado, y usado para encontrar a la entidad tabla. Si tal entidad no existe ocurre un error de stop. Las entidades tabla deben ser definidas con una sentencia TABLE. La entidad table es luego actualizada de acuerdo a los operandos en la sentencia TABLE. Si el operando B es usado, este es evaluado y usado como un factor de peso. En otro caso, el factor es tomado en 1. Restricciones Especiales A debe ser positivo. B, si es especificado, debe ser positivo. A debe ser el nombre o nmero de una entidad storage predefinida.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque TABULATE. SNAs Relacionados TBentnum. TCentnum. TDentnum.

132

TERMINATE
Un bloque TERMINATE remueve a la transaccin activa de la simulacin y opcionalmente reduce el contador de terminacin. Sintaxis TERMINATE Operadores ADecremento del contador de terminacin. Por defecto es 0. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo TERMINATE 1 A

En este ejemplo, cuando una transaccin ingresa al bloque TERMINATE esta es removida de la simulacin. Tambin, el contador de terminacin, que esta seteado por una sentencia START es decrementado en 1. Accin Cuando una transaccin ingresa al bloque TERMINATE, el operando A es evaluado y usado par decrementar el contador de terminacin. Si el operando A no es usado, el contador de terminacin no es cambiado. La transaccin activa es luego removida de la simulacin, y una nueva transaccin es elegida. El contador de terminacin es seteado por la sentencia START. Cuando el contador de terminacin llega a 0, la simulacin termina, y a menos que sea suprimida por la sentencia START, un reporte estndar es escrito. Restricciones Especiales A, si es especificado, debe ser positivo.

Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque TERMINATE. SNAs Relacionados TG1.

133

TEST
Un bloque TEST compara valores, normalmente SNAs, y controla el destino de la transaccin activa basada en el resultado de la comparacin. Sintaxis TEST Operadores O Operador relacional. Relaciona el operando A con el B por un testeo con xito. Requerido. El operando debe ser E, G, GE, L, LE, o NE. A Valor de testeo. Requerido. El operando debe ser nombre, entero, SNA, o SNA*parmetro. B Valor de referencia. Requerido. El operando debe ser nombre, entero, SNA, o SNA*parmetro. C Nmero de bloque de destino. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Accin Un bloque TEST opera en dos modos " de rechazo" o " alternativa de salida". Si el operando C no es usado, el bloque TEST opera en modo de rechazo. Cuando una transaccin intenta ingresar en modo de rechazo al bloque TEST, y el testeo no es exitoso, la transaccin es bloqueada hasta que el test es repetido y tiene xito. Si el testeo es exitoso, la transaccin activa ingresa al bloque TEST y luego procede al NSB. Si el operando C es usado, el bloque TEST opera en modo alternativa de salida. Cuando una transaccin ingresa en modo alternativa de salida a un bloque TEST, y el testeo no tiene xito, la transaccin ingresa al bloque TEST, es planificada hacia el destino alternativo especificado por el operando C, y es colocada en la CEC en el frente de su par en prioridad. Si el testeo es exitoso, la transaccin activa ingresa al bloque TEST y procede al NSB. Ejemplos TEST G C1, 70000 O A, B, C

En este ejemplo de un bloque en modo de rechazo, la transaccin activa ingresa al bloque TEST si el reloj del sistema es mayor que 70000. En otro caso, la transaccin es bloqueada hasta que el testeo sea verdadero. TEST G Q$TELLER1_LINE, Q$TELLER2_LINE, TELLER1

En este ejemplo de un bloque en modo alternativa de salida, la transaccin activa siempre ingresa al bloque TEST. Si el contenido de la entidad queue llamada TELLER1_LINE es mayor que el contenido de la entidad queue llamada TELLER2_LINE la transaccin procede al NSB. En otro caso, la transaccin activa es planificada a ingresar al bloque de direccin llamado TELLER1. Operadores Relacionales El operador relacional es requerido. Este puede ser E, G, GE, L, LE, o NE. Los testeos exitosos son definidos como sigue:

134

E El valor del operando A debe ser igual al valor del operando B. G El valor del operando A debe ser mayor que el valor del operando B. GE El valor del operando A debe ser mayor o igual al valor del operando B. L El valor del operando A debe ser menor que el valor del operando B. LE El valor del operando A debe ser menor o igual al valor del operando B. NE El valor del operando A debe ser distinto que el valor del operando B.

Restricciones Especiales C debe ser una direccin de bloque en el modelo corriente.

Modo de rechazo Un bloque TEST operando en modo de rechazo deber rechazar la entrada de transacciones cuando el testeo falle. La transaccin rechazada deber ser bloqueada hasta que el test sea exitoso. Cuando una transaccin es rechazad , su indicador de demora es seteado y permanece as hasta que la transaccin ingresa al bloque TRNASFER en modo simultaneo.

135

TRANSFER
Un bloque TRANSFER causa que la transaccin activa salte a una nueva direccin. Sintaxis TRANSFER Operadores A Modo de transferencia de bloque. Opcional. El operando debe ser BOTH, ALL, PICK, FN, P, SBR, SIM, fraccin, nombre, enteropos, SNA, SNA*parmetro, o nulo. B Nmero de bloque o direccin. Nombre o nmero de parmetro en modo P. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. C Nmero de bloque o direccin. Valor de incremento en modo FN o P. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. D Nmero de bloque a incrementar en modo ALL. Por defecto es 1. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Accin Un bloque TRANSFER puede operar en 9 modos, cada uno con propiedades diferentes. Cuando una transaccin ingresa a un bloque TRANSFER, el operando A es usado para determinar el modo de operacin del bloque. El significado del operando B y C depende del modo. Cuando no se especifica un operando con la correspondiente direccin de bloque, el NSB despus del bloque TRANSFER es usado. Modo Incondicional Cuando el operando A es omitido, el bloque TRANSFER opera en modo incondicional. En este modo, la transaccin activa siempre salta a la direccin especificada por el operando B. TRANSFER , NEW_PLACE A, B, C, D

Cuando una transaccin ingresa en este bloque TRANSFER, esta es inmediatamente planificada hacia la direccin de bloque llamada NEW_PLACE. Modo Fraccional Cuando el operando A no es una palabra clave, el bloque TRANSFER opera en modo fraccional. En este modo, la transaccin activa salta a la direccin especificada por el operando C con una probabilidad dada por el operando A. Si el operando A es un entero no negativo, este es interpretado como partes por mil y es convertido a una probabilidad fraccional. El destino alternativo esta especificado por el operando B, o el NSB si el operando B es omitido. TRANSFER .75, , NEW_PLACE

Cuando una transaccin ingresa a este bloque TRANSFER, esta procede a la direccin llamada NEW_PLACE con una probabilidad de .75. Las dems veces se procede al NSB. Modo Ambos Cuando el operando A es BOTH, el bloque TRANSFER opera en modo ambos. En este modo, el bloque especificado por el operando B es testeado. Si este se niega a recibir a la transaccin activa, el bloque especificado por el operando C es testeado. El primer bloque que admita a la transaccin deber ser el

136

nuevo destino. Si ningn bloque admite a la transaccin, esta permanece en el bloque TRANSFER hasta que pueda ingresar en uno u otro. TRANSFER BOTH, FIRST_PLACE, SECOND_PLACE

Cuando una transaccin ingresa en este bloque TRANSFER, el bloque de destino FIRST_PLACE es testeado. Si la transaccin puede ingresar, esta lo hace. Si no, la direccin de bloque SECOND_PLACE es testeada. La transaccin ingresa si esta puede. En otro caso, esta permanece en el bloque TRANSFER hasta que esta pueda liberarce. Modo Todo Cuando un operando A es ALL, el bloque TRANSFER opera en modo Todo. En este modo, el bloque especificado por el operando B es testeado. Si este bloque rechaza la admisin de la transaccin activa, bloques son testeados en serie e incluyendo la direccin especificada en el operando C, a menos que uno de estos bloques testeados admita a la transaccin anterior para alcanzar el bloque especificado en el operando C. La direccin de cada bloque testeado en serie es calculada adicionando al operando D el testeo de la direccin de bloque previo. Si el operando D no es usado, cada bloque entre estos especificados por los operandos B y C, inclusive, son testeados. Si el operando C no es usado, nicamente un bloque es testeado. Ningn bloque con la direccin mayor que el operando C es testeado. El primer bloque que admita a la transaccin deber ser la nueva direccin. Si no hay bloques que admitan a la transaccin, esta permanece en el bloque TRANSFER hasta que esta puede entrar en uno. TRANSFER ALL, FIRST_PLACE, LAST_PLACE, 2

Cuando una transaccin ingresa a este bloque TRANSFER, el bloque de direccin FIRST_PLACE es testeado. Si la transaccin puede entrar, lo hace. Si no, el bloque con direccin mayor segunda es testeada. La transaccin entra si esta puede. Si todos los bloques la rechazan, el testeo finaliza con la direccin de bloque LAST_PLACE. Si ningn bloque la acepta, la transaccin permanece en el bloque TRANSFER hasta que esta sea liberada. Modo Seleccin Cuando el operando A es PICK, el bloque TRANSFER opera en modo seleccin. En este modo, un destino es seleccionado aleatoriamente. TRANSFER PICK, FIRST_PLACE, LAST_PLACE

Cuando una transaccin ingresa a este bloque TRANSFER, una direccin es elegida aleatoriamente que numricamente se encuentra entre FIRST_PLACE y LAST_PLACE, inclusive. La direccin elegida es el proximo destino para la transaccin activa. Modo Funcin Cuando el operando A es FN, el bloque TRANSFER opera en modo funcin. En este modo, el destino es elegido evaluando una entidad funcin, especificada en el operando B, y adicionando un incremento opcional especificado por C. TRANSFER FN, FUNC1, 5

Cuando una transaccin ingresa a este bloque TRANSFER, la entidad funcin llamada FUNC1 es evaluada, y se le suma un 5, para determinar la direccin del destino. Modo Parmetro Cuando el operando A es P, el bloque TRANSFER opera en modo parmetro. En este modo, la

137

transaccin activa salta a la direccin calculada de la suma del valor de un parmetro y el operando C. Si el operando C no es especificado, el valor del parmetro es la direccin del nuevo destino. TRANSFER P, PLACEMARKER, 1

Cuando una transaccin ingresa a este bloque TRANSFER, esta es inmediatamente planificada hacia al bloque inmediatamente despus de la direccin especificada en el parmetro de transaccin llamado PLACEMARKER. Modo Subrutina Cuando el operando A es SBR, el bloque TRANSFER opera en modo subrutina. En este modo, la transaccin activa siempre salta a la direccin especificada por el operando B. La direccin del bloque transfer es colocada en el parmetro especificado por el operando C. TRANSFER SBR, NEW_PLACE, PLACEMARKER

Cuando una transaccin ingresa a este bloque TRANSFER, esta es inmediatamente planificada hacia la direccin de bloque NEW_PLACE. LA direccin del bloque TRANSFER es colocada en el parmetro llamado PLACEMARKER. Si tal parmetro no existe, este es creado. Para retornar de la subrutina, usar un bloque TRANSFER en modo parmetro. Modo Simultaneo Cuando el operando A es SIM, el bloque TRANSFER opera en modo simultaneo. En este modo, la transaccin activa salta a una o dos direcciones dependiendo del indicador de demora de la transaccin. Si el indicador esta seteado, la transaccin salta hacia la direccin especificada por el operando C y el indicador de demora es reseteado. SI el indicador esta en reset, la transaccin salta a la direccin especificad por el operando B. El indicador de demora de la transaccin es seteado cuando la transaccin es rechazada por un bloque. El indicador permanece seteado hasta que la transaccin ingresa a un bloque TRANSFER en modo simultaneo. TRANSFER SIM, NODELAY_PLACE, DELAY_PLACE

Cuando una transaccin ingresa a este bloque TRANSFER, esta es inmediatamente planificada hacia La direccin de bloque DELAY_PLACE si el indicador esta seteado, o NODELAY_PLACE si el indicador esta reseteado. Despus de la transferencia, el indicador de demora es siempre reseteado. Modo de rechazo Una transaccin nunca es negada a ingresar a un bloque TRANSFER. Si una transaccin llega a ser bloqueada por estar negado un bloque de destino, esta permanece en el bloque TRANSFER.

138

UNLINK
Un bloque UNLINK remueve transacciones de una cadena de usuario. Sintaxis UNLINK Operadores O Operador relacional. Relaciona a D con E con respecto a la remocin a ocurrir. Opcional. El operando debe ser nulo, E, G, GE, L, LE, o NE. A Nmero de Cadena de Usuario. Cadena de Usuario de la cual una o mas transacciones deberan ser removidas. Requerido. El operando debe ser nombre, enteropos, SNA, o SNA*parmetro. B Nmero de bloque. El bloque destino para las transacciones removidas. Requerido. El operando debe ser nombre, enteropos, SNA, SNA*parmetro. C Limite a remover. El nmero mximo de transacciones a ser removidas. Si no esta especificado, ALL es usado. Opcional. El operando debe ser ALL, nulo, nombre, enteropos, SNA, SNA*parmetro. D Valor de testeo. El atributo de la transaccin miembro a ser testeado, una variable booleana a ser testeada, o BACK para remover desde la cola de la cadena. Opcional. El operando debe ser nulo, nombre, entero, SNA, o SNA*parmetro, o BACK. E Valor de referencia. El valor contra el cual el operando D es comparado. Opcional. El operando debe ser nulo, nombre, entero, SNA, o SNA*parmetro. El operando E no es usado si el operando D es una variable booleana. F Nmero de bloque. El destino alternativo para la transaccin de entrada. Opcional. El operando debe ser nulo, nombre, enteropos, SNA, o SNA*parmetro. Ejemplo UNLINK ONHOLD, REENTRY, 1 O A, B, C, D, E, F

Esta es una simple manera de usar el bloque UNLINK. La primer transaccin de la cabeza de la cadena de usuario llamada ONHOLD, si hay alguna, es sacada de la cadena y es dirigida hacia el bloque llamado REENTRY. Esta es puesta en la CEC detrs de su par en prioridad. La transaccin ingresante al bloque UNLINK procede hacia el NSB. Accin Un bloque UNLINK remueve transacciones desde la cadena de usuario y dirige a estas hacia un nuevo bloque. Las transacciones pueden ser seleccionadas para removerlas, y un limite puede ser impuesto del nmero de transacciones a remover. Si no hay transacciones en la cadena cuando el bloque UNLINK es ingresado, el indicador link de la cadena de usuario es reseteado. Tambin, la transaccin de entrada al bloque UNLINK debe ser redirigida de acuerdo al operando opcional F. Se puede limitar el nmero de transacciones a ser removidas de la cadena de usuario especificndolo en el operando C. Si el operando C es omitido, ALL es asumido. Se puede testear cada transaccin a ser removida usando el operador relacional y/o los operandos D y E. Los operandos D y E y el operador relacional son opcionales. Cuando son omitidos, todas las transacciones son removidas desde el frente de la cadena, hasta que la cadena es agotada o el limite (operando C) es alcanzado. Se puede usar una de tres opciones para el operando D. Este puede ser una variable booleana, un nmero de parmetro, o la palabra BACK. Si este operando es una variable booleana, esta es evaluada con

139

respecto a la transaccin encadenada, y si el resultado es distinto de cero, la transaccin encadenada es removida. Si el operando D es BACK, las transacciones son removidas de la cola de la cadena de usuario hasta que el limite es alcanzado. En otro caso, el operando D es evaluado con respecto a la transaccin miembro de la cadena de usuario y usada como un nmero de parmetro, cuyo valor es retornado desde el miembro de la cadena de usuario como el resultado final. Este valor final es comparado con el resultado de la evaluacin del operando E. El operando E es usado si y solamente si el operador relacional es usado. En este caso el operando D es requerido como fuente. La cadena de usuario es examinada desde el frente. Cada transaccin, por encima del limite (operando C), es removida si el operando D tiene la misma relacin con el operando E como es especificado por el operador relacional. Si el operando E es un SNA relacionado con una transaccin, este es evaluado con respecto a la transaccin activa. Se puede usar el operador relacional para especificar la relacin entre el atributo de la transaccin (operando D) y el valor de referencia (operando E) que deber iniciar una remocin de la transaccin. El valor por defecto del operador relacional es E. Si no se usa el operador relacional, pero se usan los operandos D y E, los valores deben ser igual a la transaccin a ser removida de la cadena . El operando F es usado para especificar el destino alternativo a tomar por la transaccin de entrada cuando el contador limite (operando C) no puede ser alcanzado, o cuando no se puede remover transacciones de la cadena de usuario. Si el operando F no es usado, La transaccin de entrada siempre va hacia el NSB. La cadena de usuario tiene una compuerta autnoma llamada un indicador link. Cuando este es reseteado, los bloques LINK que tienen un operando C no deberan colocar una transaccin de entrada en la cadena de usuario. La "compuerta" de la cadena de usuario esta cerrada cuando el indicador link esta reseteado. El indicador link es manipulado por los bloques LINK y UNLINK. Este es reseteado cuando un bloque UNLINK encuentra la cadena de usuario vaca. Esta condicin puede representar el caso cuando la prxima transaccin a arribar debe esperar (en la cadena de usuario). El indicador link representa la condicin de ocupado de un hipottico recurso. Operadores Relacionales El operador relacional puede ser E, G, GE, L, LE, o NE. Si no es especificado es asumido E. Cuando la condicin es verdadera y el contador limite no ha sido alcanzado, la transaccin comenzada a ser testeada es removida de la cadena de usuario. Las condiciones son definidas como sigue: E El atributo de transaccin especificado por el operando D debe ser igual al valor de referencia especificado en el operando E de la transaccin a ser removida del grupo. G El atributo de transaccin especificado por el operando D debe ser mayor que el valor de referencia especificado en el operando E de la transaccin a ser removida de la cadena. GE El atributo de transaccin especificado por el operando D debe ser mayor o igual al valor de referencia especificado en el operando E de la transaccin a ser removida de la cadena. L El atributo de transaccin especificado por el operando D debe ser menor que el valor de referencia especificado en el operando E de la transaccin a ser removida de la cadena. LE El atributo de transaccin especificado por el operando D debe ser menor o igual al valor de referencia especificado en el operando E de la transaccin a ser removida de la cadena. NE El atributo de transaccin especificado por el operando D debe ser distinto que el valor de referencia especificado en el operando E de la transaccin a ser removida de la cadena. Restricciones Especiales A, B, C, y F, si son especificados, deben ser positivos.

140

B y F, deben ser direcciones de bloques en el modelo corriente. Si el operando D es usado pero sin la clase SNA BV ni BACK, entonces debe usarse el operando E. Si el operando D es BACK o una variable booleana, entonces no se debe usar el operando E ni un operador relacional. Si se utiliza el operador relacional, se debe usar el operador D, y E, y DF no ser variable booleana. Si se usa el operando E se debe usar el operando D. Los operandos D y E no pueden ser 0. Modo de rechazo A una transaccin nunca se le niega la entrada a un bloque UNLINK. SNAs Relacionados CAentnum. CCentnum. CHentnum. CMentnum. CTentnum.

141

CAPITULO 3

CONCEPTOS AVANZADOS

142

Cadenas de Transacciones
Las transacciones son temporariamente ligadas a entidades ocupando listas vinculadas llamadas cadenas. Algunas entidades, tales como las facilitys, tienen varias cadenas. Otras entidades tienen una nica cadena. Cada transaccin puede estar en cualquier nmero de cadenas. Sin embargo, si ocupan algn tipo de cadena es posible que no pueden ocupar otras. Por ejemplo, una transaccin en una o ms cadenas de interrupcin no puede estar en la cadena de eventos futuros. Una transaccin no puede estar en ms de una de las siguientes cadenas: ! ! ! ! ! Cadena de Eventos Corrientes (CEC) Cadena de Eventos Futuros (FEC) Cadena de Demora o Retraso en una facility o storage (DELAY CHAIN) Cadena de Pendientes de una facility (PENDING CHAIN) Cadena de Usuario (USER CHAIN)

Una transaccin puede estar esperando por la ocurrencia de algn nmero de condiciones, puede estar en cualquier nmero de grupo de transaccin, y puede ser apropiada desde cualquier nmero de facilitys. Esto significa que una misma transaccin puede estar en cualquier nmero de cadenas de interrupcin y cualquier nmero de cadenas de grupo y en cualquier nmero de cadenas de reintento al mismo tiempo.

143

Cadena de Eventos Corrientes - CEC


La Cadena de Eventos Corrientes (CEC) es una lista encadenada de transacciones preparadas que ya tienen bloques para ser ingresados antes que la simulacin avance. Antes que la CEC sea guardada en orden de prioridad, la transaccin activa es usualmente retornada a la CEC delante de su par de igual prioridad. Por esta razn, cuando una transaccin comienza a moverse en el modelo corriente, sta tiende a seguir movindose, a menos que una transaccin de mayor prioridad sea reactivada. Cuando la transaccin activa descansa en alguna caden, la primer transaccin de mayor prioridad en la CEC se vuelve la transaccin activa. Si la CEC esta vaca, la transaccin(s) ms inminente en la Cadena de Eventos Futuros (FEC) es o son movidas a la CEC. Esta accin siempre causa un avance en el sistema de reloj.

144

Cadena de Eventos Futuros - FEC


La Cadena de Eventos Futuros (FEC) es una cadena ordenada en el tiempo que retiene transacciones que deben esperar por un tiempo de simulacin. Cuando toda actividad de la simulacin durante el tiempo de reloj corriente es completada, la siguiente transaccin es tomada de la FEC. Esta accin es la que causa que el sistema de reloj se actualize. El valor del reloj del sistema es siempre igual al tiempo de programacin de la ultima transaccin a ser tomada de la FEC. Los bloques ADVANCE y GENERATE son la nica manera de colocar una transaccin en la FEC. Estos bloques generan un incremento de tiempo como operando y calculan el tiempo absoluto antes de poner la transaccin en la FEC. Cuando el sistema de reloj alcanza este tiempo absoluto, la transaccin es movida a la CEC la cual debe resumir sus movimientos dentro del modelo corriente. De esta manera, una duracin o intervalo de tiempo puede ser simulado.

145

Cadenas de Reintento RETRY Chains


Las transacciones que fallan todos los testeos requeridos para entrar a un bloque son colocadas en una "Cadena de Reintento". Estos testeos ocurren cuando una transaccin intenta entrar en un bloque GATE, TEST, TRANSFER ALL, o TRANSFER BOTH. Cada entidad tiene una cadena de transacciones bloqueadas, llamada Cadena de Reintento (RETRY CHAIN). Las transacciones en una Cadena de Reintento esperan por el cambio de valor de algn SNA. Cuando el valor del SNA cambia, una transaccin en la Cadena de Reintento de la entidad es reactivada y puesta en la CEC. Cuando la transaccin llega a ser la transaccin activa, la condicin especifica de testeo es repetida. Despus de este proceso a menudo la computadora usa el tiempo sin avanzar transacciones en el modelo, un imprudente cambio de condiciones puede llevar a una simulacin ineficiente. El poder del bloque GATE y del bloque TEST debe ser ejercido con cuidado. Las transacciones en la Cadena de Reintento son reemplazadas en la CEC por el proceso de reactivacin. Si en un reintento algn testeo es satisfecho, la transaccin ingresa en el siguiente bloque. Cuando la transaccin ingresa a un bloque sta es removida de todas las Cadenas de Reintento automticamente.

146

Cadenas de Facilities
Cada entidad facility tiene cuatro cadenas de transacciones. Estas son: ! ! ! ! Cadena de Pendientes (PENDING CHAIN) Una lista de transacciones esperando por APROPIAR (PREEMPT) la facility en "modo interrupcin". Cadena de Interrupcin (INTERRUPT CHAIN) Una lista de transacciones que han sido apropiadas (preempted) desde la propiedad de la facility. Cadena de Demora (DELAY CHAIN) Una cadena de prioridad de transacciones esperando por la propiedad de una facility. Cadena de Reintento (RETRY CHAIN) Una lista de transacciones que estn esperando por el cambio de estado de una facility.

La Cadena de Pendientes retiene transacciones esperando entrar en un bloque PREEMPT en modo de interrupcin. Una transaccin que intenta ingresar a un bloque PREEMPT en modo de interrupcin en una facility es negada a entrar al bloque PREEMPT si algunas transacciones interrumpidas estn en la Cadena de Interrupcin de la Facility. Una transaccin que es negada a entrar es colocada en la Cadena de Pendientes de la facility. Esto causa que las transacciones descancen en el modelo corriente. Cuando una transaccin obtiene la apropiacin de una facility, la primer transaccin en la Cadena de Pendientes es la propietaria y se le permite entrar al bloque PREEMPT. La cadena de interrupcin es una lista de transacciones preempted o interrumpidas. Cuando una transaccin ingresa a un bloque PREEMPT, y la facility es concurrentemente ocupada por otra transaccin, la propiedad es dada a la nueva transaccin. La vieja transaccin es colocada en la Cadena de Interrupcin para que su apropiacin pueda ser restaurada luego. Las transacciones en una o ms Cadenas de Interrupcin pueden an moverse en el modelo corriente, sin embargo, sus movimientos son restringidos. Semejante a una transaccin no puede existir en la FEC y no puede dejar un bloque ASSEMBLE, GATHER, MATCH donde esta ha sido colocada en una condicin. Cuando una transaccin obtiene la propiedad de una facility, si la Cadena de Pendientes esta vaca, la primer transaccin en la Cadena de Interrupcin se le otorga la propiedad de la facility. La Cadena de Demora retiene transacciones esperando por la propiedad. Una transaccin que intenta ingresar en un bloque SEIZE de una facility en uso le es negada la entrada a este bloque SEIZE y es colocada en la Cadena de Demora de la facility en orden de prioridad. Similarmente, una transaccin que intenta ingresar a un bloque PREEMPT de una facility en uso (por una transaccin de igual o mayor prioridad) es negada su entrada y es colocada en la Cadena de Demora de la facility en orden de prioridad. En estos casos la transaccin descansa en el modelo activo y una nueva transaccin es elegida. Entonces, cuando una transaccin obtiene la propiedad de una facility, si la Cadena de Pendientes y la Cadena de Interrupcin estn vacas, la transaccin de mayor prioridad en la Cadena de Demora se le da la propiedad de la facility. La Cadena de Reintento es una lista de transacciones esperando por el cambio de estado de una facility. Estas transacciones son reactivadas cuando la facility cambia de un estado a otro. Las transacciones esperando en la Cadena de Demora, o Cadena de Interrupcin, o apropiaron una facility estn en conexin con la facility. Desde que una transaccin compite deber eventualmente llevar la propiedad de la facility, la competencia por una facility acarrea la obligacin de liberar la facility. Si una transaccin que es duea de una facility intenta salir de la simulacin al ingresar a un bloque TERMINATE o ASSEMBLE, un error de stop ocurrir. Sin embargo, a una transaccin interrumpida le es permitida dejar una simulacin. Normalmente, cada transaccin permanece en competicin hasta que voluntariamente ingresa a un bloque RELEASE o RETURN en nombre de la facility. Sin embargo, los bloques PREEMPT o FUNAVAIL tienen opciones que pueden remover otras

147

transacciones desde una competencia por una facility. Para resumir, cuando una facility es liberada por una transaccin propietaria, las transacciones PREEMPTED en modo interrupcin son las primeras en apropiar la facility, seguida por las transacciones en la Cadena de Interrupcin, seguidas por las transacciones esperando normalmente en orden de prioridad en la Cadena de Demora. Cuando un nuevo propietario es elegido de la Cadena de Demora o de la cadena de Pendientes, este ingresa a un bloque SEIZE o PREEMPT inmediatamente, y entonces es coloca en la CEC detrs de su par de igual prioridad.

148

Cadenas de Storages
Cada entidad storage tiene dos cadenas de transacciones. Estas cadenas son listas encadenadas de transacciones: ! ! Cadena de Demora (DELAY CHAIN) una Cadena de Prioridad de transacciones esperando por una unidad storage. Cadena de Reintento (RETRY CHAIN) una lista de transacciones que estn esperando por el cambio de estado del storage.

La Cadena de Demora retiene transacciones esperando por una o ms unidades de storage. Cuando una transaccin intenta ingresar a un bloque ENTER de una entidad storage, demanda unidades de storage, que son comparadas con el nmero de unidades de storage disponibles. El mximo disponible es definido en una sentencia STORAGE. Si la demanda de storage no puede ser satisfecha, la transaccin es negada a entrar al bloque ENTER y es colocada en la Cadena de Demora del storage en orden de prioridad. En este caso la transaccin descansa en el modelo activo. Una nueva transaccin activa es elegida. Luego, cuando una transaccin obtiene unidades de storage, la Cadena de Demora es explorada en orden de prioridad, reactivando transacciones que demandan storage que pueden ser satisfechas. Un procedimiento de "primero en encajar" es usado. Cada transaccin, en turno, es testeada. Si su demanda puede ser satisfecha esta es permitida para ingresar al bloque ENTER y es colocada en la CEC detrs de su par en prioridad. Si esta demanda no puede ser satisfecha, esta permanecer en la Cadena de Demora. La Cadena de Reintento es una lista de transacciones esperando por el cambio de estado de una entidad storage. Estas transacciones son reactivadas, colocadas luego en la CEC, cuando el estado del storage cambia.

149

Cadenas de Usuario User Chains


Cada entidad Cadena de Usuario contiene una cadena de transaccin llamada Cadena de Usuario. Las Cadenas de Usuario son listas encadenadas de transacciones que han sido removidas de la Cadena de Eventos Corrientes por un bloque LINK. Tradicionalmente existen dos usos para la Cadena de Usuario. Primero, es posible implementar disciplinas de programacin (scheduled) de transacciones extremadamente complejas con estas Cadenas de Usuario. Esto se puede hacer asignando el resultado de una clase de SNA V hacia un parmetro de transaccin antes de linkear una transaccin a una Cadena de Usuario. Segundo es ms eficiente para evitar condiciones de testeo que no pueden posiblemente resultar en un testeo exitoso. En este caso, se puede colocar las transacciones bloqueadas en una Cadena de Usuario hasta que exista una posibilidad de xito.

150

Ejecucin de una simulacin mediante VisualSIS


Al comenzar una simulacin, cada uno de los bloques Generate genera un futuro nacimiento de transaccines, el cual es puesto en una cadena interna de Eventos Futuros (FEC: Future Event Chain), la cual est ordenada cronolgicamente. Para continuar la simulacin, VisualSIS observa en la FEC cul es el prximo evento que debera ejecutarse, y coloca el reloj de la simulacin en el instante de ese evento (recordemos que VisualSIS utiliza un lenguaje manejado por eventos). Por lo tanto ese(esos) evento(s) futuro(s) se tranforma(n) en corriente(s), y son puestos en una cadena denominada Current Event Chain (CEC), conformada por todos los eventos que se deben ejecutar ahora, ya. VisualSIS maneja simultaneidad deteniendo el reloj y ejecutando todo lo que debe suceder en un determinado instante. En ese instante, lo que era un nacimiento futuro es una gestacin actual. 1. La transaccin recin nacida se mueve por el sistema todo lo que puede, o sea, hasta que: a) b) Intenta tomar un recurso y ste no est disponible: es puesto en una cadena Delay Chain (una cadena por recurso). Luego pasa a la CEC. Una condicin falsa sin opciones alternativas. Ejemplo: puerta cerrada, semforo rojo, barrera baja. Se pone en una Retry Chain (una por condicin) hasta que la condicin cambie, donde pasa a la CEC. Intenta arrebatar (interrumpir) un recurso y no puede porque su prioridad es menor que el que est usando el recurso: se coloca en una Pending Chain, la cual tiene prioridad sobre la Delay Chain. La transaccin muere en un terminate o en un Assemble. Es la primera transaccin de un Assemble que espera ms de una transaccin, por lo que queda esperando en una cadena juntar las transacciones de la familia faltantes. Se encadena en una cadena de usuario. Comienza a realizar una tarea (ejecuta el Advance con tiempo mayor que cero). En este caso se coloca en la FEC, porque el terminar la tarea es un evento futuro.

c)

d) e) f) g)

Luego busca en la CEC la transaccin de mayor prioridad para repetir el proceso 1. Mientras la transaccin se mueve por el modelo provoca eventos (libera recursos, cambia el estado de los semforos, etctera), lo cual puede hacer que la Delay o Retry Chain se tranformen en la CEC. La regla es ejecutar todo lo que hay en la CEC sin correr el reloj. Una vez ejecutadas todas las transacciones de la CEC, toma la prxima de FEC, la pasa a la CEC y actualiza el reloj.

151

El programador (Scheduler) de Transacciones


Es conveniente pensar en una simulacin VisualSIS como un conjunto de transacciones que ocupa bloques en un diagrama de bloques. En algn momento, cada transaccin est en exactamente en un bloque, pero muchos bloques pueden contener cualquier nmero de transacciones. Cada transaccin en turno obtiene una oportunidad para moverse conforme a un camino prescrito a travs del diagrama de bloques. Cuando una transaccin es negada a ingresar en un bloque, esta debe esperar en su bloque actual hasta que las condiciones se vuelvan favorables para su movimiento. La parte de VisualSIS que es responsable de este movimiento es llamada la programacin de transacciones. Cada tipo de bloque tiene su propia rutina que es ejecutada cuando una transaccin intenta ingresar a ese tipo de bloque. Es trabajo del programador de transacciones llamar a la apropiada rutina. La primera cosa que la programacin de transacciones hace es identificar a la transaccin activa. Si la CEC no esta vaca, la transaccin con mayor prioridad en la CEC ser la transaccin activa. Si la CEC esta vaca, el programador de transacciones llenar la CEC con transacciones de la FEC con el menor valor de tiempo. Esta accin tambin actualiza el sistema de reloj. El programador de transacciones entonces intenta mover la transaccin activa tan lejos como pueda en el modelo corriente. En efecto, quitar la transaccin activa de la CEC, llamar a la rutina para la prxima secuencia de bloques (NSB), y a menos que algo extraordinariamente ocurra, reemplaza la transaccin en el frente del par de igual prioridad en la CEC. Esto d a la transaccin de mayor prioridad la oportunidad de moverse en el modelo. La ubicacin de la CEC puede ser modificada por los bloques PRIORITY y BUFFER. Luego de que una transaccin ingresa a un bloque BUFFER, es ubicada detrs de su par de igual prioridad en la CEC. Los bloques BUFFER son tiles si una transaccin reactivada debe estar al frente de las transacciones en la CEC. Por ejemplo, ADVANCE calcula un tiempo de programacin positivo y coloca la transaccin en la FEC. Otros bloques tales como LINK, ENTER, SEIZE y PREEMPT pueden causar que la transaccin activa descanse en una cadena de transacciones. Quitar desde o reemplazar en la CEC no afecta al sistema de reloj. El tiempo de simulacin disminuye hasta que no haya transacciones en el lado izquierdo de las CEC. Reemplazos continuos de la transaccin activa en la CEC darn reactivaciones nuevamente de transacciones con mayor prioridad en la CEC con oportunidad de llegar a ser la transaccin activa. Cuando la transaccin activa descanse en la Cadena de Demora o no pueda moverse por alguna otra condicin, la programacin de transacciones escoge otra transaccin activa e intenta moverla en el modelo corriente.

El Movimiento de Transacciones
Las transacciones deben estar en la CEC listas a moverse. En cada ocasin la transaccin activa intenta moverse entre bloques llamado a esto "Programacin de Transacciones". Desde que una transaccin se le niega la entrada a un bloque, una programacin de transacciones no debe llevarla a una entrada de bloque. Por esta razn, muchas simulaciones tienen menos entradas de bloques que programaciones de transacciones. Cuando la transaccin activa intenta ingresar en un bloque, el programador de transacciones llama a la rutina del bloque asociada con ese tipo de bloque. Es la rutina de bloque que decide si una transaccin ingresa o no a un bloque. Varios tipos de bloques niegan la entrada de la transaccin. Estos son: ENTER, SEIZE, PREEMPT, GATE, TEST, y dems, si la transaccin ha sido eliminada de todas sus apropiaciones, esta deber ser negada por los bloques ADVANCE y no deber ser permitida su partida de los bloques ASSEMBLE, GATHER Y MATCH. Cuando la transaccin activa no puede entrar en algn bloque se pone a descansar dentro del modelo corriente. Esta es entonces quitada de la CEC y colocada en una de las cadenas de transacciones. Luego,

152

una transaccin diferente es elegida para ser la transaccin activa.

Bloqueo y Reactivacin
La transaccin activa esta "bloqueada" cuando debe esperar por una o ms cambios de estado de entidades. Los bloques GATE, TEST y TRANSFER pueden requerir que condiciones especificas se encuentren en una o ms entidades antes que la transaccin activa sea permitida a proseguir en el modelo. Cada entidad tiene una Cadena de Reintento para transacciones que estn bloqueadas mientras intentan entrar sobre un bloque. Cuando el estado de una entidad es cambiada por alguna otra transaccin, todas las transacciones en la Cadena de Reintento asociadas son reemplazadas en la CEC detrs de su par en prioridad. La reactivacin es el movimiento de transacciones bloqueadas en la CEC. Si la transaccin activa cambia el estado de una entidad, es posible que una o ms transacciones sean reactivadas antes que la transaccin activa intente ingresar al prximo bloque. Si una transaccin de mayor prioridad es reactivada, esta deber volverse la transaccin activa. Si se desea nuevamente reactivar una transaccin para progresar inmediatamente, se debe colocar la transaccin activa en la CEC detrs de su par en prioridad (bloque BUFFER o PRIORITY, con opcin BU), o se debe causar la reactivacin de la transaccin que tiene la mayor prioridad que la transaccin activa vieja. Cuando una transaccin reactivada se vuelve la transaccin activa, el testeo del bloqueo original es reintentado. Si un estado de entidad cambia mas de una vez antes de que se actualice el sistema de reloj, algunos estados intermedios no sern detectados. Esto suceder si el estado de la entidad es cambiado dos veces antes de que la transaccin bloqueada suspendida testee la condicin. Usualmente, esta posibilidad puede estar excluida por un uso cuidadoso del bloque BUFFER.

153

Sincronizacin
Conjuntos de Reunin (Assembly Set) Un Conjunto de Reunin es una coleccin de transacciones con un ancestro en comn. El ancestro, en si mismo, es tambin incluido en el Conjunto de Reunin. Los Conjuntos de Reunin son tiles para causar sincronizacin entre transacciones. Es fcil de crear, esperar por, y destruir miembros en el Conjunto de Reunin en la simulacin. Esto hace fcil representar procesos que en algn punto deben esperar por cierto evento a ocurrir. Los siguientes bloques sirven para tal propsito: ! ! ! ! ASSEMBLE espera y destruye transacciones relacionadas. GATHER espera por transacciones relacionadas. MATCH espero por transacciones relacionadas para alcanzar en conjunto un bloque MATCH. SPLIT crea transacciones relacionadas.

154