2. 1   Objektbefehle

Die meisten simcron-Befehle sind objektorientiert. D.h., jedem erzeugten Objekt wird ein spezifischer Befehlssatz zugeordnet, mit dessen Hilfe auf das zugehörige Objekt zugegriffen werden kann. Ein Teil der Objektbefehle ist unabhängig vom Objekttyp, die Mehrzahl jedoch typbezogen und wird im entsprechenden Teil dokumentiert. Darüber hinaus gibt es einige Befehle, die für den jeweiligen Objekttyp definiert sind. Folgende Objekttypen (objtype) werden durch den MODELLER bereitgestellt:

  • queue - 
  • Warteschlange
  • machine - 
  • Maschine
  • src - 
  • Quelle
  • job - 
  • Job
  • tech - 
  • Technologie
  • branch - 
  • Verzweigung
  • plan - 
  • Zeitplan
  • shift - 
  • Schichtplan
  • setup - 
  • Rüstobjekt
  • clk -
  • Takt
  • distrib - 
  • Stochastik
  • need - 
  • Bedarf
  • method - 
  • Methode
  • cost - 
  • Zielgröße
  • ev - 
  • Ereignis
  • model - 
  • Modell

    2. 1. 1   Typbefehle

    SYNTAX

        objtype option ?arg arg ...?

    option und  args bestimmen das exakte Verhalten des Typbefehls. Die folgenden Befehle sind für alle Objekttypen definiert:

     
    objtype count
    Gibt die Anzahl der Objekte vom Typ objtype zurück.
     
    objtype used ?pattern?
    Gibt eine Liste aller Objekte vom Type objtype zurück, wenn kein Pattern angegeben wird. Mit Pattern werden nur die Objekte zurückgegeben, die dem Pattern entsprechen (.z.B. machine used machine1*). Die Reihenfolge wird vom Objektverwalter bestimmt. Früher erzeugte Objekte erscheinen in der Liste nach später angelegten Objekten. (siehe auch zeitgleiche Ereignisse)
     
    objtype table ?pattern?
    Gibt eine Liste aller Hashtable-Einträge der Objekte vom Type objtype zurück. Bis auf die Reihenfolge sollten die vom table- und used-Befehl erzeugten Listen identisch sein. Eine Einschränkung kann ebenfalls über die Angabe eines Patterns erfolgen. Der table-Befehl ist allerdings schneller als der used-Befehl.
     
    objtype create objCmd
    Ein neues Objekt vom Typ objtype mit dem zugehörigen Objektbefehl objCmd wird erzeugt. Enthält objCmd Leerzeichen, so ist der String in Anführungszeichen zu setzen (z.B. "M 3"). Groß- und Kleinbuchstaben werden unterschieden. Der Versuch, einen bereits vorhandenen Befehls-Namen zu vergeben, löst eine Fehlermeldung aus. Das Objekt wird in diesem Fall nicht erzeugt.
    Im Bezeichner objCmd sind grundsätzlich alle Unicode Zeichen aus dem Latin-1 Code zugelassen. Es wird aber empfohlen, auf Zeichen zu verzichten, die für den Tcl-Interpreter, das graphische Toolkit oder in regulären Ausdrücken spezifische Bedeutung besitzen. Dazu gehören alle Klammern ( )[ ]{ } sowie weitere Steuerzeichen für den Interpreter „\$#::; als auch die Atome bzw. Operatoren für reguläre Ausdrücke ^*?+. Desweiteren sollte auch der Punkt nicht verwendet werden und der Bezeichner sollte nicht ausschließlich aus Ziffern zusammengesetzt sein (Verwechslungsgefahr mit Canvas-Tags). Ob ein String als Objektbezeichner toleriert wird, hängt nichtzuletzt von der Art der Anwendung ab (mit oder ohne graphische Oberfläche, Verwendung von Objektbezeichnern in Skripten usw.). Probleme lassen sich zuverlässig vermeiden, indem man entweder die automatische Erzeugung von Objektbezeichnern nutzt (Befehl objtype) oder nur Objektbezeichner vergibt, die auch als Variablennamen in der Programmiersprache C zulässig sind:
    Namen bestehen aus Buchstaben, Ziffern und/oder dem Unterstrich _. Der Name darf nicht ausschließlich aus Ziffern bestehen, darf aber (abweichend von der C-Konvention) auch mit einer Ziffer beginnen.
     
    objtype
    Entspricht dem Befehl objtype create. Der dem Objekt zugehörige Befehls-String wird automatisch vergeben und lautet objtypeX, worin X eine fortlaufende, mit 1 beginnende Nummer ist. Eine lückenlose Nummerierung aller Objekte wird nicht garantiert.
     
    objtype priority
    Gibt eine Liste aller Objekte vom Typ objtype (nur für queue oder machine definiert) in der Reihenfolge ihrer Priorität bei der Abarbeitung zeitgleicher Ereignisse zurück. Die Reihenfolge hängt von der Einlagerungsstrategie und der Reihenfolge des Anlegens der Objekte ab.

    objtype property ?-type propertyName default?

    Abfrage bereits deklarierter Properties oder Deklaration neuer Property an objtype.
    Deklariert eine neue Property an objtype vom Typ type mit dem Namen propertyName und dem Standardwert default. Die Option type kann die Werte bool, integer, double und string annehmen. Jedes bestehende und neu erzeugte Objekt vom Typ objytpe besitzt diese Property mit dem Standardwert default, solange bis dieser Wert geändert wird.
    Bemerkung: Die Verwendung von Properties über Namespacevariablen hat Vorteile im Bereich Speicherbedarf und Zugriffszeiten.

    objtype property -del propertyName

    Löscht eine deklarierte Property mit Namen propertyName. Die Property wird von allen bestehenden Objekten vom Typ objtype entfernt und bei neu erzeugten Objekten nicht mehr angelegt.


    2. 1. 2   Allgemeine Objektbefehle

    Wenn ein Objekt erzeugt wird, wird diesem ein spezifischer Objektbefehl zugeordnet. Über diesen Befehl ist das Objekt adressierbar. Ein solcher Objektbefehl objCmd hat die allgemeine Form:

        objCmd option ?arg arg ...?

    option und  args bestimmen das exakte Verhalten des Befehls. Die folgenden Befehle sind für alle Objekte, unabhängig von ihrem jeweiligen Typ definiert:

     
    objCmd del
    Vernichtet das betreffende Objekt einschließlich der zugehörigen Eigenschaften, des Befehls und weiterer Einträge. Der Objekt-Befehl objCmd kann wieder für neue Objekte benutzt werden.
     
    objCmd objtype
    Abfrage des Typs des Objekts. Gibt objtype zurück.
     
    objCmd name ?string?
    Abfrage oder Modifikation des Namens des Objektes.  Der Name der Objektes wird auf string gesetzt. Ohne den Parameter string gibt der Befehl den Namen des Objektes zurück. Der Name hat im Gegensatz zum Objekt-Befehl keinerlei programmtechnisch relevante Bedeutung, sondern dient lediglich der anwendungsorientierten Bezeichnung von Objekten und kann daher auch mehrfach vergeben werden. Im Unterschied zu objCmd gelten für den Parameter string keine Einschränkungen. Sonderzeichen dürfen ebenso wie Umlaute oder Trennzeichen verwendet werden.
     
    objCmd refcount
    Gibt die Anzahl der auf dieses Objekte gerichteten Objektreferenzen zurück. Referenzierte Objekte können nicht gelöscht werden.
     
    objCmd variables
    Gibt eine Liste aller Eigenschaftsvariablen des Objekts objCmd zurück.
     
    objCmd procs
    Gibt eine Namensliste aller Prozeduren des Objekts objCmd zurück.


    objCmd property propertyName ?propertyValue?

    Ändert den Wert einer Property an objCmd oder gibt den bestehenden Wert zurück. Die Property muss zuvor deklariert worden sein. Wenn die Property an objCmd noch nicht geändert wurde, so wird der definierte Standardwert ausgegeben.

    DialogObject objCmd