Home
PEARL 90 Sprachreport
Contents
1. 10 4 10 3 ffnen und Schlie en von Datenstationen OPEN 10 9 10 4 Die Read und die Write Anweisung READ WRITE 10 13 10 5 Die Get und Put Anweisung GET BUT 10 19 105 1 DasiFixed Form t see E elle 10 22 105 2 Das Flog Format E 2 ae nee rer een Deeg 10 24 10 5 3 Die Zeichenketten Formate A und El 10 25 10 5 4 Das Bit Format Bi Hierin ker 10 27 10 55 0 2 eek ek 10 29 10 5 6 Das Dauer Format 10 30 IO Das List Format LIST 4 2 2220 228 ee Eed 10 31 10 5 8 Das R Format Hl 10 32 10 6 Die Convert Anweisung CONVERT nn 10 33 10 7 Die Take und die Gend Amwelsunmg nn 10 34 10 8 Fehlerbehandlung E A Anweisungen DEST 10 35 10 9 Interface f r zus tzliche Treiber 10 35 TEE eege dere AE 11 1 Anhang WEE 1 A 1 Datentypen und ihre Venwendbarkert AAA A 1 A 2 Vordefinierte Funktionen A 3 A21 Die Silo ill ET A 3 2 2 Die Funktion TE eene E A AAT A 3 Ve E eA An Ce seed EE AE EAE AEA EET A ATE E A 4 ASA e tee TELE 4 Ae BEER Ei 5 A3 3 lege 5 3 4 ege ee eege E Ee g
2. COL LINE Ausdruck SOP Name Name Positionsvariablen FIXED A 19 AA Liste der Schl sselw rter mit Kurzformen Die Angabe hinter einem Schl sselwort verweist auf den Paragraphen in dem es eingef hrt wird ACTIVATE 9 2 2 AFTER 9 2 1 ALL 9 2 1 ALPHIC 10 2 ALT 7 2 AT 9 2 1 BASIC 10 2 BEGIN 4 4 BIT 5 4 BOLT 9 3 2 BY 7 3 10 3 CALL 8 2 CASE 7 2 CHARACTER CHAR 5 5 CLOCK 5 7 CLOSE 10 3 CONT 5 9 CONTINUE 9 2 5 CONTROL 10 2 CONVERT 10 2 CREATE Full PEARL CREATED 10 2 CYCLIC 10 2 DATION 10 2 DECLARE DCL 4 1 DELETE Full PEARL DIM 10 2 DIRECT 10 2 DISABLE 9 4 2 A 20 DURATION DUR 5 8 DURING 9 2 1 ELSE 7 1 ENABLE 9 4 2 END 4 4 8 1 9 1 ENTER 9 3 2 ENTRY 8 1 EVERY 9 2 1 EXIT 7 5 FIN 7 1 FIXED 5 2 FLOAT 5 3 FOR 7 3 FORBACK 10 2 FORMAT 10 5 8 FORWARD 10 2 FREE 9 3 2 FROM 7 3 10 4 GET 10 5 GLOBAL 4 1 GOTO 7 4 HRS 5 8 IDENTICAL IDENT 4 1 8 1 IF 7 1 IN 10 2 INDUCE 11 INITIAL INIT 5 14 INLINE Full PEARL INOUT 10 2 INTERRUPT IRPT 9 4 1 INTFAC Full PEARL INV 5 15 IS 5 9 ISNT 9 9 LEAVE 9 3 2 LENGTH 5 6 MATCH Full PEARL MAX 10 2 MIN 5 8 MODEND 4 1 MODULE 4 1 NIL 5 9 NOCYCL 10 2 NOMATCH Full PEARL NOSTREAM 10 2 ON 11 ONEOF Full PEARL OPEN 10 3 OPERATOR 6 2 OUT 7 2 10 2 PRECEDENCE 7 2 PRESET 9 3 1 PREVENT 9 2 7 PRIORITY PRIO 9 1 PROBLEM 4 3 PROCEDURE PROC 8 1 PUT 10 5 READ
3. 10 5 1 Das Fixed Format F Fixed Format F Feldweite Dezimalstellen Skalenfaktor Feldweite Ausdruck mit positiver ganzer Zahl als Wert Dezimalstellen Ausdruck mit nicht negativer ganzer Zahl als Wert Skalenfaktor Ausdruck mit ganzer Zahl als Wert Das Fixed Format beschreibt die externe Darstellung dezimaler Festpunktzahlen Die Feldweite w ist die Gesamtzahl der Zeichen die der Dezimalzahl zur Verf gung steht Dezimalstellen d bezeichnet die Anzahl der Ziffern hinter dem Dezimalpunkt Der Skalenfaktor p kann sowohl positiv als auch negativ sein er bewirkt da nicht die Zahl selbst sondern ihr mit 10 p multiplizierter Wert bertragen wird 10 22 Seine Bedeutung liegt darin da mit dem Fixed Format zwar nur ganze Zahlen bertragen werden k nnen durch Skalierung jedoch auch die Verarbeitung gebrochener Festpunktzahlen m glich ist Diese werden bei der Eingabe in ganze Zahlen und bei der Ausgabe wieder in gebrochene Zahlen umgewandelt 1 Ausgabe 1 1 Die Dezimalzahl wird rechtsb ndig in einem Feld der L nge w in der Form 1 2 pgz abgelegt wobei pgz eine positive ganze Zahl bedeutet Nimmt die Zahl nicht das ganze Feld ein so wird der linke Teil mit Leerzeichen aufgef llt 1 2 1510 gt d oder w lt d so wird das Zeichen abgelegt 1 3 Im Fall w lt 0 wird kein Zeichen abgelegt es wird ein Fehler gemeldet 1 4 Ist 0 oder nicht angegeben so wi
4. Adr s1 L nge 8 Max 20 Sir Dir 52 Adr s2 L nge 100 Max 100 CONT str_ptr Werum GmbH Adr s2 L nge 10 Max 100 Bei den darauf folgenden Zugriffen auf die Zeichenkette ber diesen Zeiger wird nur noch die aktuelle L nge benutzt Beispiel DCL si CHAR 20 DCL 52 CHAR 100 platzspendende Variable DCL str_ptr REF CHAR variabler Zeiger Sit Dir 52 Adr s2 L nge 100 Max 100 CONT str_ptr D21337 CAT Lueneburg Adr s2 L nge 16 Max 100 Nach dieser Zuweisung enth lt die Variable s2 an den ersten 16 Stellen die Zeichen D21337 Lueneburg die restlichen Zeichen wurden durch die Zuweisung nicht ver ndert Der L ngenindex von str_ptr wurde auf die aktuelle L nge 16 eingestellt s1 CONT str_ptr Bei dieser Zuweisung erzeugt CONT str_ptr den Zeichenkettenwert D21337 Lueneburg mit dem Typ CHAR 16 Nach den Zuweisungsregeln von PEARL wird die Zeichenkette mit vier Leerzeichen erweitert bevor dieser Wert der Variablen s1 mit dem Typ CHAR 20 zugewiesen wird Besonders n tzlich erweisen sich variable Zeichenkettenzeiger als formale Parame ter von Prozeduren Der Compiler bergibt an der Aufrufstelle neben der Adresse einer Zeichenkettenvariablen auch deren aktuelle L nge So kann z B eine Fehlerroutine unterschiedlich lange Fehlertexte ausgeben Beispiel Zeichenkettenzeiger als Parameter SPC print_fehler ENTRY REF CHAR GLOBAL DCL s1
5. Malloc PROC size FIXED 31 RETURNS REF STRUCT GLOBAL DCL CHAR 1 REQUEST speicher_schutz Zugriff auf globale Variablen synchronisieren IF frei size gt c_max_puffer THEN ptr NIL kein Platz mehr ELSE Dir speicher_block frei 1 frei frei size FIN RELEASE speicher_schutz RETURN ptr END Malloc 6 25 t TASK DCL ptr_var_a REF DCL ptr_var_b REF Speicherbereich f r verschiedene Typen anfordern ptr_var_a Malloc SIZEOF TYP_A ptr_var_b Malloc SIZEOF END t Diese zweite Form eignet sich besonders f r polymorphe Prozeduren d h Prozeduren die mit aktuellen Parametern unterschiedlicher Typen aufgerufen werden Der VOID Datentyp dient zum einen in der Prozedur Spezifikation als Hinweis da die Prozedur mit unterschiedlichen Parameter Typen arbeitet zum anderen kann an der Aufrufstelle eine explizite Typwandlung mit dem BY TYPE Operator entfallen Beispiel Datenbank Interface SPC lies_satz ENTRY REF STRUCT size FIXED 31 GLOBAL SPC schreib satz ENTRY adr REF INV size FIXED 31 GLOBAL DCL anwender_daten Satz mit Anwenderdaten in die Datenbank einf gen CALL schreib_satz anwender_daten SIZEOF Anwenderdaten Satz aus der Datenbank lesen CALL lies_satz anwender_daten SIZEOF Die Datenbankroutinen lies_
6. beim berlaufen einer neuen Task Steueranweisung desselben Typs Die alte Startbedingung wird dabei durch die neue ersetzt oder falls keine neue angegeben ist gel scht 9 7 Beispiel AT 12 0 0 ACTIVATE Protokoll ALL 2HRS ACTIVATE Protokoll Diese beiden Einplanungen k nnen nicht zur selben Zeit gelten Die Startbedingung ALL 2 HRS ersetzt vielmehr die Startbedingung AT 12 0 0 sofern nicht vor der Ausf hrung der zweiten Anweisung der Zeitpunkt 12 Uhr eintritt 9 2 2 Starten einer Task ACTIVATE Die allgemeine Form der Anweisung zum Start einer Task d h zur Einplanung einer Task zum Start lautet Task Starten Startbedingung ACTIVATE NameSTask Priorit t Priorit t PRIORITY PRIO Ausdruck mit positiver ganzer Zahl als Wert Als Folge der Ausf hrung einer solchen Start Anweisung bewirbt sich die bezeich nete Task sofort Form ohne Startbedingung oder zu dem durch die Startbedingung bestimmten Zeitpunkt um die Zuteilung eines Prozessors konkurrierend mit allen anderen Tasks die sich zu dem Zeitpunkt des Starts ebenfalls um diesen Prozessor bewerben lauff hig sind Beim sofortigen Start konkurriert die gestartete Task also insbesondere mit der startenden Task wenn nur ein Prozessor zur Verf gung steht M glicherweise ist die bezeichnete Task bei Ausf hrung der Start Anweisung bereits gestartet und noch nicht beendet Ist in diesem Fall keine Startbedingung angege ben so erfolgt e
7. Aoder Boder oderZ Ziffer 0 oder 1 oder oder 9 Wie dieses Beispiel zeigt kann die Definition einer Sprachform Elemente enthalten die beim Aufbau der Sprachform alternativ zueinander angegeben werden Zur Abk rzung werden die alternativ m glichen Angaben k nftig durch das Symbol getrennt Beispiel Buchstabe A IB Zlalb z Ziffer 0 1 2 9 Soll ein Element beliebig oft aber mindestens einmal auftreten d rfen wird es oben mit drei Punkten versehen Beispiel einfache ganze Zahl Ziffer 3 5 Um auszudr cken da ein Element beim Aufbau der Sprachform fehlen darf wird es in eckigen Klammern TI 1 angegeben Im Zweifelsfall werden die Strukturklamme rungszeichen fett gedruckt Beispiel Bezeichner Buchstabe Buchstabe Ziffer IT Hier wurden bereits zwei weitere Regeln benutzt Die Definition einer Sprachform darf wieder Namen von Sprachformen enthalten au erdem werden die geschweiften und eckigen Klammern auch dazu benutzt Elemente zu neuen Elementen zusammenzufassen So ist das letzte Beispiel dem folgenden quivalent Beispiel Bezeichner Buchstabe Buchstabe Ziffer TI Zur Beschreibung von Listen deren Elemente durch ein bestimmtes Symbol getrennt sind werden bei der Definition der entsprechenden Sprachform das Listenelement und das Trennsymbol in der Form Listenelement Trennsymbol Listenelement angegeben Beispiel Beze
8. GE EQ NE AND OR EXOR gt lt lt gt SHIFT LWB UPB IS ISNT FIT Bezeichner Benutzer definierter dyadischer Operator Operand Konstante Name Funktionsaufruf bedingter Ausdruck Dereferenzierung Kettenausschnitt Ausdruck 6 2 Beispiele e A B 2 B e F Tab K 2 i F i 3 e A lt BORA lt C e Prozessabbild neu AND Prozessabbild_alt das Ergebnis hat an der Bitstelle eine 1 der Prozessabbild_alt eine 0 und Prozessabbild_neu eine 1 besitzt e Xkoord gt lt Ykoord gt lt Zkoord die drei Bitketten werden zu einer Bitkette verkettet Der bedingte Ausdruck kann z B in Zuweisungen oder Funktionsprozeduren siehe 8 n tzlich sein er hat folgende Form bedingter Ausdruck IF Ausdruck mit einem Wert vom Typ BIT 1 THEN Ausdruck ELSE Ausdruck FIN Ergibt die Berechnung des Ausdrucks hinter IF den Wert 1 B wahr so wird der Ausdruck hinter THEN anstelle des bedingten Ausdrucks eingesetzt ist der Wert gleich 0 B falsch so wird der Ausdruck hinter ELSE eingesetzt Beispiele 1 Die Funktionsprozedur max soll die gr ere von zwei Gleitpunktzahlen feststellen und zur ckgeben max PROC X Y FLOAT RETURNS FLOAT RETURN IF X lt Y THEN X ELSE Y FIN END A max B 2 0 2 Gleichwertig mit dieser Zuweisung ist die folgende Zuweisung A IF B gt C THEN B ELSE
9. BIT 1 BIT 1 BIT 1 Bedeutung Ganzzahlige Division der Werte von a und b d h das Ergebnis besteht nur aus dem ganzzahligen Anteil 93 01 02 Rest nach Division des ersten Operanden durch zweiten Modulo Berech nung Es gilt a a b b a REM b Potenzierung der Werte von a und b ab Vergleich auf kleiner als Ist der Wert von a kleiner als der Wert von b so hat das Ergebnis den Wert 1 B anderenfalls 0 B Zeichenkettenvergleich Algorithmus siehe unten Vergleich auf gr er als Ist der Wert von a gr er als der Wert von b so hat das Ergebnis den Wert 1 B anderenfalls 0 Vergleich auf kleiner oder gleich als Ist der Wert von a kleiner oder gleich als der Wert von b so hat das Ergebnis den Wert 1 B anderenfalls 0 B Syntax Typvona Syntax Typ vona Typ von Typ nes Ergebnisses BBGENIUNG a gt b oder a GE b a b oder a EQ b atb oder aNEb siehe a lt b FIXED g1 FIXED g1 FLOAT g FLOAT g1 CLOCK DURATION CHAR Ig1 BIT Ig1 FIXED g1 FIXED g1 FLOAT g FLOAT g1 CLOCK DURATION CHAR IG1 BIT Ig1 von b siehe a lt b FIXED g2 FLOAT g2 FIXED g2 FLOAT g2 CLOCK DURATION CHAR Ig2 BIT Ig2 FIXED g2 FLOAT g2 FIXED g2 FLOAT g2 CLOCK DURATION CHAR Ig2 BIT Ig2 BIT 1 BIT 1 BIT 1 Bedeutung Vergleich auf gr er oder gleich als Ist der Wert von a gr
10. IDENTICAL Rang Vereinbarung PRECEDENCE Op Name 1 2 3 4151 16 7 A 11 A 3 4 2 Spezifikation und Identifikation Spezifikation SPC SPECIFY Spezifikations Angabe Spezifikations Angabe Spezifikations Angabe Bezeichner Angabe Spezifikationsattribut Prozedur Benutzungsattribut Task Benutzungsattribut Spezifikationsattribut virtuelle Dimensionsliste INV einfacher Typ strukturierter Typ Typ Referenz SEMA BOLT INTERRUPT IRPT SIGNAL Typ Dation Resident Attribut Global Attribut Prozedur Benutzungsattribut ENTRY PROC Parameter Liste f r SPC Resultat Attribut Resident Attribut Reentrant Attribut Global Attribut Parameter Liste f r SPC formaler Parameter f r SPC formaler Parameter f r SPC formaler Parameter f r SPC Bezeichner nur zur Dokumentation virtuelle Dimensionsliste Parameter Typ IDENTICAL IDENT Typ Prozedur PROC Parameter Liste f r SPC Resultat Attribut f r REF PROC Task Benutzungsattribut TASK Resident Attribut Global Attribut Identifikation SPC SPECIFY Bezeichner INV Identifikationsattribut Identifikationsattribut IDENT Name Objekt A 12 A 3 4 3 Ausdr cke Ausdruck monadischer Operator Operand dyadischer Operator Ausdruck monadischer Operator Bezeichner monadischer Op
11. Open Parameter Durch Ausf hrung der Open Anweisung wird eine Datenstation mit Gliederung auf ihren Anfang positioniert Die Open Parameter dienen zum Umgang mit Datenstationen die identifizierbare Datenbest nde Dateien enthalten Z B kann eine system definierte Datenstation Platte einen Datenbestand TAB1 besitzen der unter diesem Namen auch nach Ende des Programms verwahrt wird Das gleiche oder ein anderes Programm kann zu einem sp teren Zeitpunkt auf Platte eine benutzerdefinierte Datenstation Tabelle kreieren die in der Open Anweisung mit dem Datenbestand TAB1 identifiziert wird 10 9 Die Open Parameter IDF Name Character Variable Zeichenkettenkonstante RST Name Fehlervariable Fixed OLD NEW ANY CAN PRM Open Parameter der Open Anweisung m ssen zu unterschiedlichen Untermengen geh ren Bedeutung der Parameter IDF NameS Character Variable Zeichenkettenkonstante Der Wert der angegebenen Character Variablen oder die angegebenen Zei chenkettenkonstante sind der Name des Datenbestandes der mit der unter Names Dation aufgef hrten Datenstation identifiziert werden soll RST Name Fehlervariable FIXED Tritt w hrend der OPEN Ausf hrung ein Fehler auf so wird die angegebene Variable mit einer Fehlernummer ungleich Null belegt im fehlerfreien Fall wird sie auf Null gesetzt siehe 10 8 OLD Existiert ein Datenbestand mit dem IDF Namen so wird er der angegebenen Date
12. Task Anhalten Task Fortsetzen Task Verz gern Task Ausplanen A 15 Task Starten Startbedingung ACTIVATE NameSTask Priorit ts Ausdruck Priorit ts Ausdruck PRIO PRIORITY Ausdruck positive ganze Zahl Startbedingung AT Ausdruck Uhrzeit Frequenz AFTER Ausdruck Dauer Frequenz WHEN Namesinterrupt AFTER Ausdruck Dauer Frequenz Frequenz Frequenz ALL EVERY Ausdruck Dauer UNTIL Ausdruck Uhrzeit DURING Ausdruck Dauer Task Beenden TERMINATE Task Anhalten SUSPEND NameSTask Task Fortsetzen AT Ausdruck Uhrzeit AFTER Ausdruck Dauer WHEN 1 CONTINUE NameSTask Priorit tsangabe Task Verz gern AT Ausdruck Uhrzeit AFTER Ausdruck Dauer WHEN 1 RESUME Task Ausplanen PREVENT Task Koordinierungsanweisung REQUEST RELEASE Name Sema Name Sema JI RESERVE FREE ENTER LEAVE NamesBolt NameS Bolt 1 Interrupt Anweisung ENABLE DISABLE TRIGGER Name lnterrupt Signal Anweisung ON 5 RST Name Fehlervariable FIXED unmarkierte Anweisung INDUCE NamesSignal RST Ausdruck Fehlernummer FIXED A 16 Convert Anweisung Convert To Anweisung Convert From Anweisung Convert To Anweisung CONVERT Ausdruck Ausdruck TO NameS Zeichenket
13. er oder gleich als der Wert von b so hat das Ergebnis den Wert 1 B anderenfalls 0 B Vergleich auf gleich Ist der Wert von a gleich dem Wert von b so hat das Ergebnis den Wert 1 anderenfalls 0 Ist Ig2 191 so wird die k rzere Zeichen bzw Bitkette rechts um 192 191 Leerzeichen bzw Nullen verl ngert Vergleich auf ungleich Ist der Wert von a ungleich dem Wert von b so hat das Ergebnis den Wert 1 B anderenfalls 0 B Zeichen bzw Bitketten werden rechts ggfs mit Leerzeichen bzw Nullen aufgef llt Damit das Ergebnis einer Vergleichsoperation zweier Zeichenketten vom Anwender nachvollzogen werden kann wird hier der Vergleichsalgorithmus angegeben die k rzere Zeichenkette wird dabei rechts mit Leerzeichen aufgef llt Algorithmus zum Vergleich zweier Zeichenketten dabei gilt max 101 Ig2 TYPE Urteil FIXED DCL kleiner gleich groesser INV FIXED INIT 1 0 1 string_vergleich PROC string1 string2 REF INV CHAR 193 RETURNS Urteil FOR TO Ig3 REPEAT IF TOFIXED string CHAR i lt TOFIXED string2 CHAR i THEN RETURN kleiner ELSE IF TOFIXED stringi CHAR i gt TOFIXED string2 CHAR i THEN RETURN groesser FIN FIN END Schleife RETURN gleich END PROC string_ vergleich Syntax Typvona Typvonb des Ergebnisses a AND b BIT Ig1 BIT Ig2 BIT Ig3 aORb BIT Ig1 BIT Ig2 BIT Ig3 aEXORb BIT Ig1 BIT Ig2 BIT Ig3 a g
14. falsch Typ ungleich Disk falsch Typ ungleich 2 k CONT ki erh lt den Wert 2 rk2 3 falsch 3 ist keine Variable CONT rk2 3 1 erh lt den Wert 3 CONT rk2 k erh lt den Wert 2 Anstelle von k CONT ki kann auch einfacher rk1 geschrieben werden d h der Operator CONT darf auf der rechten Seite einer Zuweisung weggelassen werden implizite Dereferenzierung Allgemein gilt Typ Referenz REF virt_Dimensionsliste Zuweisungsschutz einfacher Typ Bezeichner f r Typ Typ Struktur Typ Dation SEMA BOLT INTERRUPT IRPT SIGNAL Typ Prozedur TASK Typ VOID CHAR virt Dimensionsliste 7 Dereferenzierung CONT NameSReferenz Variable Die Definition der Sprachform Typ Referenz zeigt welchen Typ eine Variable haben darf auf die eine Referenz Variable zeigen soll Insbesondere d rfen Referenz Vari ablen auch auf Felder und Strukturen zeigen vgl 5 10 und 5 11 Die Anzahl n der Kommata in der virtuellen Dimensionsliste gibt an da die referierte Variable ein n 1 dimensionales Feld ist Hingegen d rfen Referenz Variablen nicht auf Refe renz Variablen zeigen allerdings d rfen referierte Felder und Strukturen Referenz Variablen als Elemente und Komponenten besitzen Dies kann beispielsweise dazu benutzt werden Strukturen miteinander zu verketten oder allgemein Listen aufzu bauen Punkt 5 12 Typvereinbarung zeigt dazu ei
15. Ausgabe Interrupts INTERRUPT f r externe Unterbrechungen Signale SIGNAL f r interne Ausnahmesituationen Semaphoren SEMA und Boltvariablen BOLT zur Koordination des Zugriffs von Tasks auf gemeinsam benutzte Objekte Der Benutzer kann daraus selbst komplexere Datenstrukturen wie Felder hierarchi sche Strukturen STRUCT und Listen aufbauen mittels der TYPE Definition k n nen diese auch als neue problemorientierte Datentypen vereinbart werden Au er dem erlaubt PEARL die Einf hrung neuer problemorientierter Operatoren f r belie bige Datenstrukturen mittels der OPERATOR Definition 2 5 2 5 Kontrollstrukturen Die folgenden Kontrollstrukturen stehen zur Verf gung e Bedingte Anweisung IF Ausdruck THEN Anweisung ELSE Anweisung FIN e Anweisungsauswahl_1 CASE Ausdruck ALT Anweisung ALT Anweisung OUT Anweisung FIN e Anweisungsauswahl_2 CASE Case_Index ALT Case_Liste Anweisung ALT Case_Liste Anweisung OUT Anweisung FIN e Schleifen FOR Laufvariable FROM Anfang BY Schrittweite TO Ende REPEAT Anweisung END WHILE Bedingung REPEAT Anweisung END e Exit Anweisung EXIT Block 2 6 3 Regeln zum Aufbau von PEARL Sprachformen Ein PEARL Programm kann formatfrei geschrieben werden es mu insbesondere nicht darauf geachtet werden da eine Anweisung in einer bestimmten Spalte beginnt Alle Elemente eines PEARL Progra
16. DURATION Typ von b FIXED g2 FLOAT g2 FIXED g2 FLOAT g2 DURATION CLOCK DURATION FIXED g2 FLOAT g2 FIXED g2 FLOAT g2 DURATION DURATION CLOCK FIXED g2 FLOAT g2 FIXED g2 FLOAT g2 DURATION FIXED g2 DURATION FLOAT g2 FIXED g2 FIXED g2 FLOAT g2 FLOAT g2 FIXED g2 FLOAT g2 DURATION Typ des Ergebnisses FIXED g3 FLOAT g3 FLOAT g3 FLOAT g3 DURATION CLOCK CLOCK FIXED g3 FLOAT g3 FLOAT g3 FLOAT g3 DURATION CLOCK DURATION FIXED g3 FLOAT g3 FLOAT g3 FLOAT g3 DURATION DURATION DURATION DURATION FLOAT g3 FLOAT g3 FLOAT g3 FLOAT g3 DURATION DURATION FLOAT g4 Bedeutung Addition der Werte von a undb 93 max 91 92 Subtraktion der Werte von aundb 93 91 92 Multiplikation der Werte vonaundb g3 g1 92 Division der Werte von aundb falls b 0 ist 93 max 01 92 04 31 implementations abh ngige Zahl Syntax REM b a b a lt b oder aLTb a gt b oder aGTb a lt b oder a LE b Typ von a FIXED g1 FIXED g1 FIXED g1 FLOAT g1 FIXED g1 FIXED g1 FLOAT g1 FLOAT g1 CLOCK DURATION CHAR Ig1 siehe a lt b siehe a lt b von b FIXED g2 FIXED g2 FIXED g2 FIXED g2 FIXED g2 FLOAT g2 FIXED g2 FLOAT g2 CLOCK DURATION CHAR Ig2 siehe a lt b siehe a lt b Typ des Ergebnisses FIXED g3 FIXED g3 FIXED g FLOAT g1
17. Parameter Funktionsaufruf Name Funktionsprozedur Liste aktueller Parameter Beispiel Die Funktionsprozedur Ari soll das arithmetische Mittel eines Feldes von FLOAT Variablen berechnen Dieses Mittel soll dann zusammen mit dem Text Arith Mittel ausgedruckt werden Ari PROC Feld FLOAT IDENTICAL RETURNS FLOAT DCL Summe FLOAT DCL UGR OGR FIXED Summe 0 UGR LWB Feld OGR UPB Feld FOR i FROM UGR BY 1 TO OGR REPEAT Summe Summe Feld i END Schleife RETURN SUMME 1 END Ari 8 6 DCL Messwert 10 FLOAT Erfassen der Messwerte PUT Ari Messwert Arith Mitte TO Drucker BY LIST Bei der Auswertung eines Funktionsaufrufs werden den formalen Parametern der bezeichneten Funktionsprozedur die angegebenen aktuellen Parameter in der Reihenfolge der Niederschrift zugeordnet sodann wird der Prozedurk rper ausge f hrt Anschlie end wird in der Auswertung des Ausdrucks fortgefahren in dem der Funktionsaufruf erfolgte in obigem Beispiel also mit der Auswertung des Ausdrucks Arith Mittel in der Put Anweisung Sowohl bei der Call Anweisung als auch beim Funktionsaufruf m ssen die Typen der aktuellen Parameter den Typen der zugeh rigen formalen Parameter entsprechen Die Zuordnung der aktuellen Parameter zu den formalen Parametern kann auf zwei Arten erfolgen Wenn die Spezifikation eines formalen Parameters mit dem Zusatz IDENTICAL oder IDENT versehen i
18. und 5 11 beschrieben Bei der Deklaration einer Variablen mu ihr Typ in einem Typ Attribut angegeben werden sollen verschiedene Variablen mit gleichem Typ Attribut vereinbart werden so kann dies in Form einer Liste in einer Deklaration erfolgen z B werden durch DECLARE x y z FLOAT die drei Variablen x y und z mit dem Typ Attribut FLOAT vereinbart Der einfacheren Schreibweise wegen d rfen verschiedene Vereinbarungen in einer Deklaration formuliert werden indem sie durch Kommata getrennt werden DECLARE x FLOAT i FIXED 5 1 Zusammengefa t k nnen skalare Variablen folgenderma en deklariert werden Skalare Variablen Deklaration DECLARE DCL Variablen Angabe Variablen Angabe 1 Variablen Angabe Bezeichner Angabe Zuweisungsschutz Typ Attribut Global Attribut Initialisierungsattribut Bezeichner Angabe Bezeichner Bezeichner Bezeichner Typ Attribut einfacher Typ Typ Referenz Bezeichner f r Typ einfacher Typ Typ ganze Zahl Typ Gleitpunktzahl Typ Bitkette Typ Zeichenkette Typ Uhrzeit Typ Dauer Die allgemeine Form der Spezifikation skalarer Variablen lautet wie folgt Skalare Variablen Spezifikation SPECIFY SPC Variablen Angabe S Variablen Angabe S Variablen Angabe S Bezeichner Angabe Zuweisungsschutz Typ Attribut Global Attribut Identifikationsattribut Zuweisungsschutz und Initialisierungsattribut werden
19. 10 4 REENT Full PEARL REF 5 9 RELEASE 9 3 1 REPEAT 7 3 REQUEST 9 3 1 RESERVE 9 3 2 RESIDENT Full PEARL RESUME 9 2 6 RETURN 3 2 RETURNS 3 1 SEC 5 8 SEMA 9 3 1 SEND 10 6 SIGNAL 11 SPECIFY SPC 4 1 STREAM 10 2 STRUCT 5 11 SUSPEND 9 2 4 SYS Full PEARL SYSTEM 4 2 TAKE 10 6 TASK 9 1 TERMINATE 9 2 3 TFU 10 2 THEN 7 1 TO 7 3 10 4 TRIGGER 9 4 2 TYPE 5 12 UNTIL 9 2 1 UPON Full PEARL USING Full PEARL WHEN 9 2 1 WHILE 7 3 WRITE 10 4 5 Sonstige Wortsymbole in PEARL Die Angabe hinter dem Wortsymbol verweist auf den Paragraphen in dem es eingef hrt wird A 10 5 2 ABS 6 1 1 ADV 10 4 AND 6 1 2 ANY 10 3 B 10 5 4 B1 10 5 4 B2 10 5 4 B3 10 5 4 BA 10 5 4 CAN 10 3 CAT 6 1 2 COL 10 4 COS 6 1 1 CSHIFT 6 1 2 D 10 5 6 DATE A2 2 E 10 5 2 ENTIER 6 1 1 EQ 6 1 2 EXOR 6 1 2 EXP 6 1 1 F 10 5 1 FIT 6 1 2 GE 6 1 2 GT 6 1 2 A 22 IDF 10 3 LE 6 1 2 LINE 10 4 LIST 10 5 7 LN 6 1 1 LT 6 1 2 LWB 6 1 1 6 1 2 NE 6 1 2 NEW 10 3 NOT 6 1 1 NOW A2 1 OLD 10 3 OR 6 1 2 PAGE 10 4 POS 10 4 PRM 10 3 R 10 5 8 REM 6 1 2 ROUND 6 1 1 RST 10 3 10 8 S 10 5 3 SIGN 6 1 1 SIN 6 1 1 SKIP 10 4 SOP 10 4 SQRT 6 1 1 T 10 5 5 TAN 6 1 1 TANH 6 1 1 TOBIT 6 1 1 TOCHAR 6 1 1 TOFIXED 6 1 1 TOFLOAT 6 1 1 TRY 9 3 1 UPB 6 1 1 6 1 2 23
20. Adresse Postleitzahl Ort Geschlecht Die Komponenten Name und Adresse sind selbst Strukturen n mlich Unterstrukturen der Hauptstruktur Person diese kann so vereinbart werden DCL Person STRUCT Name STRUCT Vorname CHAR 10 Nachname CHAR 15 1 Adresse STRUCT Str CHAR 15 PLZ FIXED Ort CHAR 15 1 Geschlecht CHAR 1 Unterstrukturen k nnen also ber ihren Bezeichner und die vorangestellten Bezeichner der jeweils bergeordneten Strukturen angesprochen werden 5 20 Der Typ einer Struktur wird durch die Anordnung ihrer Komponenten und deren Typ bestimmt Strukturen gleichen Typs k nnen zu Feldern zusammengefa t werden DCL Beitrag 20 STRUCT siehe oben Allgemein wird deshalb eine beliebige Komponente einer Struktur unter ihrem gegebenenfalls indizierten Bezeichner und den gegebenenfalls indizierten Bezeichnern aller bergeordneten Strukturen angesprochen wobei diese Namen jeweils durch einen Punkt getrennt werden Beispiel Person Name Vorname OTTO IF Beitrag i schon_gesendet j THEN FIN Die allgemeine Form der Struktur Deklaration lautet Struktur Deklaration DECLARE DCL Struktur Angabe Struktur Angabe Struktur Angabe Bezeichner Angabe Hauptstruktur Dimensionsattribut Zuweisungsschutz Typ Struktur Global Attribut Initialisierungsattribut Typ Struktur STRUCT Strukturkomponente Strukturkomponente Str
21. Aufwand portierbar Der Zugriff auf die Daten sollte sowohl beim Schreiben als auch beim sp teren Lesen immer ber dieselbe Datenstruktur ausgef hrt werden Da in diesem Fall die Daten immer typgerecht bearbeitet werden sind solche Programme portabel wenn der Platzbedarf der berlagernden Datenstruktur nicht ber die platzspendende unterlagerte Variable hinausgeht 6 24 6 4 2 Der VOID Datentyp Im Gegensatz zu der aktiven Typwandlung durch den BY TYPE Operator wird durch den VOID Datentyp eine passive M glichkeit zur berlagerung unterschiedlicher Datenobjekte geboten hnlich der Konstanten NIL die an Zeiger Variablen beliebiger Datentypen zugewiesen werden kann akzeptiert der Compiler die Zuweisung beliebiger Datenadressen an eine Zeiger Variable vom Typ VOID Der VOID Datentyp wird als Strukturbeschreibung ohne Komponenten geschrieben und darf nur in Verbindung mit REF benutzt werden VOID Datentyp STRUCT Eine Referenzvariable mit desem Typ kann eine beliebige Variablen Adresse aufnehmen jedoch kann die Variable nicht direkt ver ndert werden Es mu zun chst die Adresse an eine Referenzvariable mit dem ben tigten Typ zugewiesen werden bevor ber diese das Datenobjekt manipuliert werden kann Beispiel Allgemeine Speicherverwaltungsroutine DCL c_max_puffer INV FIXED 31 INIT 10000 DCL speicher_block c_max_puffer CHAR 1 DCL frei FIXED 31 INIT 0 DCL speicher_schutz SEMA PRESET 1
22. DCL x FIXED SPC xx FIXED TASK END IT x FIXED P PROC DCL y FIXED Xi 2 BEGIN DCL x FLOAT x FLOAT BEGIN d y FIXED DCL x DUR x DUR END x FLOAT x FIXED MODEND xx FIXED Bl cke k nnen nach dem END mit Bezeichnern versehen werden damit geschach telte Bl cke mittels der Exit Anweisung vgl 7 5 gezielt verlassen werden k nnen 4 8 4 4 Bez ge zwischen Moduln Besteht ein PEARL Programm aus mehreren Moduln kann es erforderlich sein in einem Modul vereinbarte und dort Speicherplatz belegende Objekte Daten Proze duren etc auch in anderen Moduln zu benutzen Hierf r werden diese globalen Objekte in dem Modul in dem sie Speicherplatz belegen sollen auf Modulebene mit dem Global Attribut deklariert und in den anderen Moduln mit dem Global Attribut auf Modulebene spezifiziert Auf diese Art und Weise kann also der G ltigkeitsbereich von Objekten die auf Modulebene deklariert sind erweitert werden Beispiel MODULE a MODULE b PROBLEM PROBLEM x FIXED GLOBAL x FIXED GLOBAL a 2 x 2 3 N are Alle im Systemteil eines bestimmten Moduls aufgef hrten Datenstationen Interrupts und Signale gelten als implizit mit dem Global Attribut deklariert Deshalb werden sie in den Problemteilen des Programms nur noch spezifiziert dabei kann das Global Attribut im Problemteil desselben Moduls entfallen in allen ande
23. E 3 3 3 2 3 Kommentare stein 3 4 3 3 Aufbau von Sprachformen an nen a a ki nee 3 5 A Programm CT 4 1 AW el E 4 1 4 2 Vereinbarungen 4 3 4 2 1 Deklaration EE 4 3 4 2 2 Spezifikation SPC und Identifizierung SPC IDENT 4 5 4 3 Blockstruktur G ltigkeit von Objekten 4 6 4 4 Bez ge zwischen Moduin nenn 4 9 4 5 Ausf hrung eines Programme 4 10 5 Variablen und Konstanten tms nn 5 1 5 1 Vereinbarung von Variablen und konstamten nn nenn 5 1 5 2 Ganze Zahlen FIXED iain ir HH 5 3 5 3 Gleitp nktz ahlen FEOAT 2 2 ehren 5 4 5 4 Bitketten BIT 22 2222 2 Rei LI ia 5 5 5 5 Zeichenketten CHARACTER AA 5 7 5 6 Die L ngenvereinbarung EE ERE ERR i 5 8 57 Uhrzeiten CLOCK 5 8 5 8 Zeitdauern DURATION 5 9 5 97 Referenzen REF lit Ee EE ee ee EEN 5 10 5 9 1 Variable Zeichenkettenzeiger REF CHAT 5 12 e era sa ee lieferte 5 15 5 1 1 Str kluren EE 5 18 5 12 Typvereinbarung EE 5 22 5 13 Das Initialisierungsattribut NITIA 5 25 5 14 Zuweisungsschutz NN 5 27 5 14 1 Benannte Konstanten INV Konstanten AAA 5 28 5 14 2 Kon
24. Einplanung von Reaktionen auf Meldungen des technischen Prozesses Interrupts oder der Rechnerhardware Signale rechnerunabh ngig programmiert werden k nnen gliedert sich ein Modul normalerweise in einen Systemteil und einen Problemteil Im Systemteil wird die eingesetzte Hardware Konfiguration beschrieben Insbeson dere k nnen hier den Ger ten und ihren Verbindungen den Interrupts und Signalen frei gew hlte Namen zugeordnet werden So besagt das folgende Beispiel da ein Ventil an dem Anschlu punkt 3 eines Digitalausgabewerks angeschlossen ist das den rechnerspezifischen Systemnamen DIGOUT 1 tr gt Das Vertil d h der Anschlu punkt 3 soll den frei w hlbaren rechnerunabh ngigen Benutzernamen Ventil bekommen Ventil DIGOUT 1 3 Unter Verwendung der im Systemteil eingef hrten Benutzernamen wird im Problem teil der eigentliche Algorithmus zur L sung der Automationsaufgabe rechnerunab h ngig programmiert z B SEND auf TO Ventil Zur Strukturierung der Algorithmen stehen benannte Bl cke Prozeduren und Tasks parallele Aktivit ten zur Verf gung 2 4 2 4 Datentypen Standardm ig stehen in PEARL folgende Datentypen zur Verf gung FIXED und FLOAT mit angebbarer Genauigkeit BIT und CHARACTER Strings mit angebbarer L nge CLOCK und DURATION f r Uhrzeiten und Zeitdauern Referenzen REF f r indirekte Adressierung Ger te und Dateien DATION f r Standard und Proze Ein
25. Konstante konstanter Ausdruck Konstante ganze Zahl Gleitpunktzahl Bitkettenkonstante Zeichenkettenkonstante Uhrzeitenkonstante Dauerkonstante NIL Der Typ des angegebenen Init Elementes mu mit dem Typ der deklarierten Variablen gem den Regeln f r die Zuweisung vgl 6 3 vertr glich sein Beispiel DCL Anzahl_Geraete FIXED INIT 12 UGR OGR FIXED INIT 2 15 FOR i FROM 1 TO Anzahl_Geraete Hier haben die Variablen Anzahl_Geraete UGR und OGR die Werte 12 2 und 15 d h die Elemente einer angegebenen Konstanten Liste werden in der Reihenfolge der Niederschrift der angegebenen Bezeichner Liste zugeordnet 5 25 Felder und Strukturen k nnen ebenfalls an der Deklarationsstelle initialisiert werden F r alle Strukturkomponenten mu jeweils ein Initialwert angegeben werden Bei Feldern darf die Initialisierungsliste k rzer als die Anzahl der Feldelemente sein In diesem Fall wird der letzte Initialwert f r die restlichen Elemente wiederholt benutzt Beispiel DCL Adresse STRUCT Postleitzahl FIXED Ort CHAR 20 Strasse CHAR 20 HausNr FIXED INIT 21337 Lueneburg Erbstorfer Landstr 14 DCL Farben 3 CHAR 7 INIT schwarz weiss mot DCL alles Sechsen 6 FIXED INIT 6 Die Initialisierungsliste kann au er Konstanten auch Bezeichner von benannten Konstanten sowie vom Compiler berechenbare Ausdr cke enthalten vgl 5 15 1 und 5 15 2 5 26 5 14 Zuweis
26. L ngenvereinbarung siehe 5 6 definierte Genauigkeit eingesetzt Sinnvollerweise sollte als Genauigkeit 15 oder 31 gew hlt werden Beispiel DCL Zaehler FIXED 31 i j k FIXED 5 3 5 3 Gleitpunktzahlen FLOAT Konstanten f r Gleitpunktzahlen k nnen dargestellt werden als eine Folge von i einem Punkt einer ganzen Zahl und eventuell einem Exponenten zur Basis 10 wobei ein Exponent aus einer Folge des Zeichens E eventuell einem Plus oder Minuszeichen und einer ganzen Zahl besteht Beispiel 123 entspricht 0 123 123E2 entspricht 12 3 123E 1 entspricht 0 0123 einer ganzen Zahl und der unter angegebenen Folge Beispiel 3 123E2 entspricht 312 3 einer ganzen Zahl einem Punkt und eventuell einem Exponenten Beispiel 3 entspricht 3 0 einer ganzen Zahl und einem Exponenten Beispiel 3E 2 entspricht 0 03 Analog zu ganzen Zahlen k nnen auch Konstanten f r Gleitpunktzahlen mit Genau igkeit formuliert werden Variablen vom Typ Gleitpunktzahl mit ganzen Zahlen oder Gleitpunktzahlen als Werten werden mit dem Typ Attribut FLOAT deklariert Typ Gleitpunktzahl FLOAT Genauigkeit Es gelten die Aussagen von 5 2 sinnvolle Genauigkeiten sind hier 23 bzw 53 Beispiele DCL x y z FLOAT Koeff FLOAT 53 x 3 5 1 Koeff 3 14 E 10 5 4 5 4 Bitketten BIT Eine Bitkettenkonstante kann bin r B1 in Form von Tetraden B2 Oktaden B3 oder in hexadezimaler
27. Spezifikation von Prozedur Referenz Variablen lautet Prozedur Referenz Spezifikation SPECIFY SPC Bezeichner Angabe virtuelle Dimensionsliste INV REF Typ Prozedur Global Attribut Die Wertzuweisung an eine Prozedur Referenzvariable geschieht mit der Zuweiung Zuweisung NameS Ref Proc Variable Bezeichner Prozedur Dabei d rfen nur auf Modulebene deklarierte Prozeduren zugewiesen werden Die geforderte bereinstimmung der Typen bedeutet in diesem Fall da die Anzahl der Parameter s mtliche Parametertypen und auch der Typ der Resultat Attribute bereinstimmen Ein Aufruf einer Prozedur ber eine Prozedur Referenzvariable geschieht einfach durch Angabe der Referenzvariablen gefolgt von der Liste der aktuellen Parameter Bei parameterlosen Prozeduren kann CALL oder im Falle von Funktionsprozeduren auch CONT benutzt werden 8 9 Beispiele 1 DCL ProcZeiger REF PROC a FIXED IDENT b FIXED IDENT FIXED Addiere PROC a FIXED IDENT b FIXED IDENT c FIXED ce ar rb END DCL FIXED ProcZeiger Addiere ProcZeiger DCL FuncZeiger REF PROC RETURNS CLOCK Uhrzeit PROC RETURNS CLOCK RETURN NOW END DCL A CLOCK FuncZeiger Uhrzeit A FuncZeiger B CONT FuncZeiger 9 Parallele Aktivit ten Typisch f r ein Programm zur Steuerung eines technisches Prozesses sind asynchrone d h zeitlich parallele voneinander unabh ngige Abl uf
28. Steuerung soll ein Ger t einschalten und 10 Sekunden sp ter pr fen ob das Ger t wie vorgesehen arbeitet Steuerung TASK Einschalten des Ger ts AFTER 10sec RESUME Pr fung der Funktion des Ger ts END Steuerung 9 2 7 Ausplanen einer Task PREVENT Mitunter ist es n tig die f r eine Task bestehenden Einplanungen aufzuheben d h daf r zu sorgen da die Startbedingungen unwirksam werden die mit dieser Task verkn pft sind Dies kann mit folgender Anweisung erreicht werden Task Ausplanen PREVENT NamesSTask Die Anweisung beendet die betreffende Task nicht ist NameSTask nicht angegeben so wirkt sie auf die laufende Task Beispiel Die Prozedur Steuerung die von einer bergeordneten Task aus aufgerufen wird gibt einen Fahrbefehl an ein F rderzeug aus das innerhalb von 30 sec die Fertigmeldung Fertig aus l sen mu die den Start der Task Versorgung ausl sen soll Ist nach 30 sec die Fertigmeldung nicht eingetroffen soll die Task Stoerung gestartet und der eventuell noch m gliche aber versp tete Start von Versorgung verhindert werden Im Normalfall Fertig trifft innerhalb von 30 sec ein mu der eingeplante Start von Stoerung wieder ausgeplant werden PROBLEM SPECIFY Fertig INTERRUPT Steuerung PROC x FIXED X Koordinate Y FIXED Y Koordinate Umwandlung der bernommenen Koordinaten in einen Bitstring Ausgabe des
29. Steuerzeichensequenz in Zeichenkettenkonstanten V Ende einer Steuerzeichensequenz in Zeichenkettenkonstanten Falls auf dem Ger t f r die Programmniederschrift nicht alle Symbole zur Verf gung stehen k nnen folgende Zeichenfolgen alternativ benutzt werden LT f r lt GT f r gt EQ f r NE f r LE f r lt GE f r gt CSHIFT f r lt gt CAT f r gt lt f r f r 3 2 3 2 Grundelemente Ein PEARL Programm wird aus folgenden Grundelementen aufgebaut e Bezeichner e Konstanten e Trennzeichen das sind Sonderzeichen und zusammengesetzte Symbole und e Kommentare Auf die Zeichenfolge f r Bezeichner und Konstanten m ssen Trennzeichen oder Kommentare folgen 3 2 1 Bezeichner Bezeichner werden zur Bildung von Namen f r Objekte z B Zahlenvariablen Prozeduren benutzt Sie bestehen aus einer Folge von Buchstaben gro und klein dem Unterstrich und oder Ziffern diese Folge mu mit einem Buchstaben beginnen PEARL unterscheidet bei Bezeichnern zwischen gro en und kleinen Buchstaben d h ventil VENTIL und Ventil bezeichnen verschiedene Objekte Beispiele Zaehler_1 DISPO warten Einige W rter haben an festgelegten Stellen im PEARL Programm eine spezifische Bedeutung diese W rter werden Schl sselw rter genannt Z B sind die W rter BIT oder GOTO solche Schl sselw rter Der Anhang enth lt eine Liste aller Schl ssel w rter Sie d rfen nicht als Bezeichner benutzt werden und
30. Variablen Deklaration DECLARE DCL Deklarations Satz Deklarations Satz Deklarations Satz Bezeichner Angabe Dimensions Attribut Problemdaten Attribut Sema Attribut Bolt Attribut Dation Attribut Bezeichner Angabe Bezeichner Bezeichner Bezeichner Dimensions Attribut Dimensionsgrenzen Dimensionsgrenzen 1 Dimensionsgrenzen konstanter FIXED Ausdruck f r untere Grenze konstanter FIXED Ausdruck f r obere Grenze Problemdaten Attribut INV einfacher Typ strukturierter Typ Typ Referenz Resident Attribut Global Attribut Initialisierungsattribut einfacher Typ FIXED FLOAT BIT CHAR CHARACTER konstanter FIXED Ausdruck Genauigkeit bzw L nge CLOCK DUR DURATION strukturierter Typ Typ Struktur Bezeichner f r neu vereinbarten Typ Typ Struktur STRUCT Komponenten Deklaration Komponenten Deklaration Komponenten Deklaration Bezeichner Angabe f r Strukturkomponente Dimensions Attribut Typ Attribut in Struktur Vereinbarung Typ Attribut in Struktur Vereinbarung INV einfacher Typ strukturierter Typ Typ Referenz Typ Referenz REF virtuelle Dimensionsliste INV einfacher Typ strukturierter Typ virtuelle Dimensionsliste Typ Dation SEMA BOLT Typ Prozedur TASK INTERRUPT IRPT SIGNAL Typ VOID CHAR virtuelle Dimensio
31. Zeichen S Name Anzahl Zeichen Variable Fixed Die Zeichenketten Formate beschreiben die externe Darstellung von Zeichenketten Character Gr en der Form Zeichen Zeichenketten Format A Der Wert des Ausdrucks im Zeichenketten Format bedeutet die Gesamtzahl w der f r die Darstellung verf gbaren Zeichenpositionen 1 Ausgabe Hat das Format die Form A Ausdruck so wird die Zeichenkette in der oben dargestellten Form linksb ndig in ein Feld der L nge w ausgegeben Besteht sie aus mehr als w Zeichen wird sie rechts abgeschnitten besteht sie aus weniger als w Zeichen wird das Feld rechts mit Leerzeichen aufgef llt Ist w 0 so werden keine Zeichen ausgegeben und der Ausdruck in der Aus drucksliste der Put Anweisung bergangen Ist der Ausdruck im Format nicht angegeben das Format hat also die Form A so wird die Kette in ein Feld ausgegeben dessen L nge gleich der Kettenl nge ist 10 25 2 Eingabe Es werden maximal w oder bis zum n chsten Satz Terminator z B cr Zeichen eingelesen Ein Satz Terminator wird nicht in die Zeichenketten variable bertragen Ist w kleiner als die L nge lg der zugeh rigen Zeichenkettenvariablen so wird rechts mit Leerzeichen aufgef llt im Fall w gt Ig wird rechts abgeschnitten Ist w 0 so erh lt die Variable eine Kette von lg Leerzeichen zugewiesen Beispiele Die Ausgabe der Zeichenkette PEARL im Format e A ergibt PEARL e A 5 ergibt PEARL e A 7 erg
32. _Messung Beide Zuweisungen sind quivalent jedoch sollte die erste Form genutzt werden da sie die Adresszuweisung besser dokumentiert Die Adresse der laufenden Task erh lt man durch Aufruf der Funktion TASK ohne eine Parameterangabe Beispiel ptr_task TASK liefert Adresse der Task in der diese Anweisung steht Neben der Verwendung von Task Referenzvariablen in Task Anweisungen k nnen diese auch zur Identifizierung von Tasks benutzt werden vergl IS und ISNT Opera toren Beispiel IF ptr_task IS TASK hello THEN FIN IF IS TASK THEN zeigt auf aktuelle Task FIN 9 1 3 Bestimmung von Task Priorit ten Mit der vordefinierten Funktion PRIO kann die aktuelle Priorit t einer Task ermittelt werden Ohne eine Parameterangabe liefert sie die Priorit t der gerade laufenden Task mit einem Task Namen als Parameter liefert sie deren Priorit t zur ck Beispiel DCL akt_prio FIXED 15 DCL prio_task_a FIXED 15 SPC taska TASK GLOBAL akt_prio PRIO prio_task_a PRIO task_a CONTINUE task_a PRIO akt_prio 1 9 5 9 2 Anweisungen zur Steuerung von Tasks Eine Task kann gestartet beendet angehalten fortgesetzt verz gert und ausge plant werden 9 2 1 Startbedingung Tasks werden nicht wie Prozeduren durch Aufruf unmittelbar sondern in Abh ngigkeit von Zeitpunkten und Interrupts ausgef hrt Eine Task mu deshalb zun chst durch eine Task Steueranweisung der
33. benannte Konstante Konstanter Ausdruck Demnach sind auch negative ganze Zahlen als Dimensionsgrenze zugelassen Die obere Grenze einer Dimension mu jedoch immer gr er oder gleich ihrer unteren Grenze sein Ist die untere Grenze nicht angegeben so wird hierf r der Wert 1 angenommen Unter einer benannten Konstante wird hier eine Variable vom Typ FIXED 15 verstanden die mit Zuweisungsschutz INV und Initialwert INIT deklariert ist Beispiele DCL einschalten 3 BIT 4 Koeff 2 0 3 FIXED Meldung 20 CHAR 12 Das eindimensionale Feld Meldung enth lt z B 20 Fehlertexte damit im Fehlerfall i ein Programm die Meldung i an eine Konsole ausgeben kann 1 20 Felder k nnen auch gemischt mit skalaren Variablen in einer Deklaration vereinbart werden z B DCL Anz Meld INV FIXED 15 INIT 20 DCL Meldung Anz_Meld CHAR 12 i j k FIXED einschalten ausschalten 3 BIT 4 Die allgemeine Form der Spezifikation eines Feldes lautet Feld Spezifikation SPECIFY SPC Feld Angabe S Feld Angabe S Feld Angabe S Bezeichner Angabe virtuelles Dimensionsattribut Zuweisungsschutz Typ Attribut Global Attribut Identifikationsattribut virtuelles Dimensionsattribut 2 Die Anzahl der Kommata im virtuellen Dimensionsattribut gibt an da das spezifizierte Feld 1 Dimensionen besitzt In Punkt 2 des Anhangs ist tabellarisch beschrieben welche Gr
34. deklarierte Variable x END IT Die verschiedenen Deklarationsformen werden in den nachfolgenden Kapiteln bei den einzelnen Objekten behandelt 4 3 Innerhalb von Prozeduren und Tasks d rfen Tasks Interrupts Signale Synchronisiervariablen Datenstationen sowie Formate nicht vereinbart werden Die folgende Tabelle zeigt welche Objekte wo vereinbart werden d rfen Vereinbarung m glich auf in Variablen Konstanten Sprungmarken Prozeduren Task Block Interrupt Signal Sema Bolt Variablen Datenstationen Formate Typen 4 2 2 Spezifikation SPC und Identifizierung SPC IDENT Mit einer Spezifikation bezieht man sich auf ein bereits vereinbartes deklariertes Objekt Dies ist sinnvoll f r Objekte die in einem Modul vereinbart und in anderen Moduln benutzt werden sollen siehe 4 4 Bez ge zwischen Moduln aber auch generell zur Einf hrung zus tzlicher Namen f r bereits vereinbarte Objekte Beispiel Das Objekt x vom Typ FIXED 15 soll xx als 2 Namen erhalten oder anders formuliert Das Objekt x soll mit dem Namen xx identifiziert werden PROBLEM DECLARE x FIXED SPECIFY xx FIXED IDENT x x 7 Zuweisung an das Objekt x Allgemein lautet die Form der Identifikation wie folgt Identifikation SPECIFY SPC Bezeichner Zuweisungsschutz Typ Identifikationsattribut Identifikationsattribut IDENT Name Objekt Der angegebene Typ mu dem Typ des benan
35. der Druck verd chtig schnell an soll die Messung jede Sekunde mit erh hter Priorit t durchgef hrt werden Die Task Kontrolle wird durch die Task Initial unmittelbar gestartet PROBLEM Initial TASK ACTIVATE Kontrolle weitere Initialisierungen END Initial Kontrolle TASK PRIORITY 6 ALL 5SEC ACTIVATE Druckmessung Uebernahme der Me werte Falls der Druck steigt ALL 1SEC ACTIVATE Druckmessung PRIO 2 END Kontrolle Druckmessung TASK PRIO 5 Messung und Uebergabe an Kontrolle END Druckmessung 9 2 3 Beenden einer Task TERMINATE Das vorzeitige Beenden einer Task wird durch die folgende Anweisung erreicht Task Beenden TERMINATE NameSTask Fehlt die Angabe so bezieht sich die Anweisung auf die Task in deren K rper sie enthalten ist Der beendeten Task werden alle von ihr belegten Betriebsmittel einschlie lich Prozessor entzogen Von der Task gesperrte Synchronisiervariablen werden jedoch nicht automatisch freigegeben 9 2 4 Anhalten einer Task SUSPEND Durch Ausf hrung der Anweisung Task Anhalten SUSPEND wird die angegebene Task bzw die ausf hrende Task wenn NameSTask fehlt angehalten d h ihre Ausf hrung wird zur ckgestellt Der ihr zugeordnete Prozessor wird ihr entzogen nicht aber alle anderen von ihr belegten Betriebsmittel Eine angehaltene Task kann nur durch die Ausf hrun
36. h der Zugriff darf ausgehend von einem bertragenen Element nur in der durch die derung festgelegten Reihenfolge erfolgen und zwar bei FORWARD nur vorw rts bei FORBACK in beiden Richtungen eventuell unter Angabe der relativen Position des gesuchten Elements zu dem gerade bertragenen Element siehe 10 4 10 5 NOCYCL CYCLIC STREAM und NOSTREAM werden im Zusammenhang mit den E A Anweisungen in 10 4 und 10 5 behandelt Das Kontroll Attribut ist aus Kompatibilit tsgr nden syntaktisch zugelassen hat aber keine semantische Bedeutung Kontroll Attribut CONTROL ALL 10 8 Beispiel Auf einem Plattenspeicherger t mit dem Systemnamen PSP31 und dem Benutzernamen PLATTE soll eine Datei f r eine Tabelle mit 300 Zeilen und 5 Spalten Elemente pro Zeile kreiert werden Die Tabellenelemente seien Gleitpunktzahlen der Zugriff soll elementweise direkt und nur lesend erfolgen MODULE SYSTEM Platte PSP31 PROBLEM SPC Platte DATION INOUT ALL DCL Tabele DATION IN FLOAT DIM 300 5 DIRECT GLOBAL CREATED Platte Beispiele f r die Vereinbarung von Datenstationen f r die zeichenweise Ein und Ausgaben sind in 10 5 und 10 4 beschrieben 10 3 ffnen und Schlie en von Datenstationen OPEN CLOSE Bevor eine Datenstation zum ersten Mal in einer Daten bertragungsanweisung benutzt werden darf mu sie mit der Open Anweisung er ffnet werden Open Anweisung OPEN Name Dation BY Open Parameter
37. in 5 14 beschrieben Identifikations und Global Attribut wurden bereits in 4 2 und 4 4 definiert Nachfolgend werden nun die verschiedenen Typ M glichkeiten vorgestellt auf Vari ablen vom Typ Sema Bolt Interrupt oder Signal wird allerdings erst in 9 3 9 4 und 10 eingegangen 5 2 5 2 Ganze Zahlen FIXED Ganze Zahlen k nnen in Dezimaldarstellung oder Dualdarstellung geschrieben werden Die Dezimaldarstellung einer ganzen Zahl besteht aus einer Folge von Ziffern Die Dualdarstellung einer ganzen Zahl besteht aus einer Folge der Ziffern 0 und 1 die mit dem Zeichen B abgeschlossen wird Beispiele ganze Zahl Dezimaldarstellung Dualdarstellung 6 6 110B 123 123 1111011B Zudem kann f r eine Zahlenkonstante die Genauigkeit ihrer Darstellung definiert werden indem anschlie end an die Zahlenkonstante die Anzahl der Bitstellen in Klammern vermerkt wird in denen sie rechnerintern ohne Vorzeichen dargestellt werden soll Beispiel 123 31 Die ganze Zahl 123 wird in 31 Bitstellen dargestellt Ist keine Genauigkeit angegeben wird die Genauigkeit aus der Konstanten abgeleitet Variablen f r ganze Zahlen werden mit dem Typ Attribut FIXED deklariert Typ ganze Zahl FIXED Genauigkeit Genauigkeit ganze Zahl ohne Genauigkeit gr er Null Die Genauigkeit gibt die Anzahl der Bitstellen an in denen der jeweilige Wert der Variablen ohne Vorzeichen dargestellt wird Fehlt die Genauigkeitsangabe so wird die in einer
38. kette kann so initialisiert werden 5 23 FOR i TO 9 REPEAT Auftragskette Nacht Auftragskette i 1 END Auftragskette 10 Nachf NIL Allgemein wird ein neuer Datentyp wie folgt vereinbart Typ Vereinbarung TYPE Bezeichner f r Typ einfacher Typ Typ Struktur Die Vereinbarung eines neuen Datentyps mu vor seiner Benutzung erfolgen Im brigen k nnen auf Modulebene vereinbarte Datentypen in allen Tasks und Proze duren des Moduls benutzt werden die Benutzbarkeit lokal vereinbarter Datentypen richtet sich nach den Regeln der Blockstruktur Im Gegensatz zu globalen Objekten k nnen neu vereinbarte Datentypen nur in dem Modul benutzt werden in dem sie vereinbart sind Typvereinbarungen f r globale Objekte m ssen also in allen benutzenden Moduln wiederholt werden Beispiel MODULE Modul MODULE Modul PROBLEM PROBLEM TYPE STRUCT TYPE STRUCT DCL x T GLOBAL SPC x T GLOBAL MODEND MODEND 5 24 5 13 Das Initialisierungsattribut INITIAL Das Initialisierungsattribut erlaubt Variablen bei ihrer Deklaration Anfangswerte zuzuweisen F r Variablen mit Zuweisungsschutz siehe 5 15 ist dies die einzige M glichkeit der Wertzuweisung Das Initialisierungsattribut wird bei der jeweiligen Deklaration als letztes Attribut angegeben Initialisierungsattribut INITIAL INIT Init Element Init Element Init Element Konstante Bezeichner benannte
39. m ssen immer in Gro buchstaben geschrieben sein 3 2 2 Konstanten Konstanten sind ganze Zahlen Gleitpunktzahlen Bitketten Zeichenketten Uhrzeiten und Zeitdauern Sie werden zusammen mit den entsprechenden Variablen in Kapitel 5 beschrieben 3 3 3 2 3 Kommentare Kommentare dienen zur Erl uterung des Programms und sind ohne Bedeutung f r den Programmablauf Es gibt zwei Arten von Kommentaren Die eine Art kann sich ber mehrere Zeilen erstrecken und wird durch die zusammengesetzten Symbole und eingeklammert Innerhalb dieser Klammern k nnen beliebige Zeichen erscheinen mit Ausnahme des zusammengesetzten Symbols f r Kommentar ende Die andere Art der Zeilenkommentar beginnt mit einem Ausrufungszeichen und wird durch das Zeilenende beendet Kommentare d rfen berall eingef gt werden wo Leerzeichen zul ssig sind Beispiele Dieser Kommentar wird durch das Zeilenende nicht beendet Dieser Kommentar ist auf 1 Zeile begrenzt 3 4 3 3 Aufbau von Sprachformen In den nachfolgenden Kapiteln werden die in PEARL zul ssigen Sprachformen beschrieben Damit diese Beschreibungen genau und m glichst kompakt sind werden ber die verbale Formulierung hinaus einige formale M glichkeiten ben tigt Jede Sprachform hat einen Namen unter dem sie mit Hilfe des Meta Symbols definiert wird Name der Sprachform Definition der Sprachform Beispiel Gro buchstabe
40. nnen Die PUT bzw GET Anweisung erm glicht dies im Zusammen hang mit Datenstationen In Anlehnung daran ist die CONVERT Anweisung definiert die formatierten Datenaustausch anstatt mit einer Datenstation mit einer Zeichen kette bzw Zeichenkettenvariablen durchf hrt Die allgemeinen Formen der Convert Anweisung sind Convert To Anweisung CONVERT Ausdruck Ausdruck 1 NameS Zeichenkette BY Format Position Convert Format Position Convert Convert From Anweisung CONVERT NameSVariable Name Variable 7 FROM Ausdruck Zeichenkette BY Format Position Convert Format Position Convert ll Format Position Convert Faktor Format Position Convert Faktor Format Position Convert Format Position Convert Position Convert RST NameS Fehlervariable FIXED X Ausdruck ADV Ausdruck POS Ausdruck SOP Name Positionsvariable FIXED Alle zugelassenen Formate haben die gleiche Bedeutung wie bei den PUT und GET Anweisungen Die einzige Ausnahme ist das S Format Bei der Convert Anwei sung wird der Variablen im S Format die Anzahl der Zeichen zugewiesen die zu dem Zeitpunkt aus dem Ausdruck Zeichenkette gelesen bzw in die Name Zeichenkette geschrieben wurde Beispiel DCL index conv_error number_of_bytes FIXED wert FLOAT DCL string_out CHAR 40 string_in CHAR 20 CONVERT Index index TO string_ out BY 4 S number_of_bytes CONVERT inde
41. von beliebi gen Zeichen au er Apostroph und einem Apostroph Beispiel Stoerung Nr Soll jedoch die Zeichenkette einen Apostroph enthalten so mu dieser durch zwei aufeinanderfolgende Apostrophe dargestellt werden Beispiel Stoer Nr Steuerzeichen k nnen mit Hilfe der Umschaltsymbole und V Zeichenketten konstanten eingef gt werden Die Steuerzeichen werden als Paare von Sedezimal Ziffern angegeben Beispiele Dieser String OD enth lt zwei Steuerzeichen 1B Steuerzeichen am String Anfang Steuerzeichen am String Ende 00 00 String bestehend aus einem einzigen Steuerzeichen Beispiel Durch die Umschaltung auf die Steuerzeichensequenz 20 k nnen sehr lange Zeichenkettenkonstanten 20 unabh ngig vom verwendeten Editor erstellt werden Variablen f r Zeichenketten deklariert man mit dem Typ Attribut CHARACTER Typ Zeichenkette CHARACTER CHAR L nge L nge gibt die Anzahl Zeichen an Fehlt die L ngenangabe so mu sie entweder in einer L ngenvereinbarung siehe 5 6 definiert worden sein oder es wird die L nge 1 eingesetzt Beispiele DCL Artikelbez CHAR 6 Artikelbez BCD 27 Die Ansprache von Teilen von Zeichenketten wird in 6 1 Ausdr cke behandelt 5 7 5 6 Die L ngenvereinbarung Mit der L ngenvereinbarung werden die Genauigkeiten und L ngen f r solche Zahlen und Ketten Objekte definiert deren Genauigkeiten u
42. 0E 00 10 19 In einer Eingabedatei auf Diskette seien Daten in folgender Form abgelegt Spalte 1 10 Artikelbezeichnung CHARACTER Spalte 12 20 Menge FIXED Spalte 22 30 Preis je Einheit rechtsb ndig z B ___ 124 57 Sie sollen in die Variablen Art_Bez Menge Preis eingelesen werden SPC Diskette DATION INOUT ALL DCL Eingabedatei DATION IN ALPHIC DIM 80 TFU FORWARD GLOBAL CREATED Diskette Art_Bez CHAR 10 Menge FIXED Preis FLOAT GET Art_Bez Menge Preis FROM Eingabedatei BY A 10 X F 9 X E 9 SKIP Die allgemeinen Formen der Get und Put Anweisungen lauten Get Anweisung GET Name Variable Ausschnitt Name Variable Ausschnitt FROM Names Dation BY Format Position Format Position 7 Put Anweisung PUT Ausdruck Ausschnitt Ausdruck Ausschnitt TO Name Dation BY Format Position Format Position Format Position Faktor Format Position Faktor Format Position Format Position Faktor Ausdruck ganze Zahl gr er Null ganze Zahl ohne Genauigkeit gr er Null Format Fixed Format Float Format Zeichenketten Formate Bit Format Zeit Format Dauer Format List Format R Format RST Name Bei der Eingabe mit der Get Anweisung werden die angesteuerten Datenelemente nacheinander gelesen und den Variablen in der Variablenliste korrespondierend 10 20 analog zur Read Anweisung zuge
43. 2 0010 B einschalten 3 0100 B bernahme des Wertes von Index des einzuschaltenden Ger ts von einem anderen Programmteil Ausgabe von einschalten i an die unterlagerte Steuerung Allgemein k nnen skalare Variablen gleichen Typs zu n dimensionalen Feldern zu sammengefa t werden 1 2 3 4 Dem Feld wird bei seiner Deklaration Bezeichner zugeordnet die einzelnen Feldelemente skalare Variablen werden unter diesem Bezeichner und der Angabe ihrer Position innerhalb des Feldes dem Index angesprochen So wird z B mittels DCL Koeff 1 2 0 3 FIXED ein 2 dimensionales Feld vereinbart wobei die erste Dimension die untere Grenze 1 und die obere Grenze 2 d h die L nge 2 besitzt w hrend die zweite Dimension die untere Grenze 0 und die obere Grenze 3 d h die L nge 4 hat Dies bedeutet da Koeff aus den 8 skalaren Fixed Variablen Koeff 1 0 Koeff 1 1 Koeff 1 2 Koeff 1 3 Koeff 2 0 Koeff 2 1 Koeff 2 2 Koeff 2 3 besteht Die allgemeine Form der Deklaration eines Feldes lautet Feld Deklaration DECLARE DCL Feld Angabe Feld Angabe Feld Angabe Bezeichner Angabe Dimensionsattribut Zuweisungsschutz Typ Attribut Global Attribut Initialisierungsattribut Dimensions Attribut Grenzangabe erste Dimension Grenzangabe weitere Dimension Grenzangabe Grenze unten Grenze oben Grenze ganze Zahl ohne Genauigkeit Bezeichner
44. 6 Stoerdienst TASK PRIO 1 DISABLE Alarm Untersuchung der Ursache Reaktion einleiten ENABLE Alarm END Stoerdienst MODEND Der Test von Echtzeit Programmen erfordert mitunter die Wirkung von Interrupts zu simulieren zumal wenn der technische Proze noch nicht an den Rechner angeschlossen ist F r solche Simulationen steht die Trigger Anweisung zur Verf gung Trigger Anweisung TRIGGER Names lnterrupt Beispiel MODULE MODULE Test SYSTEM PROBLEM Fertig Soft_Int SPC Fertig IRPT GLOBAL PROBLEM d z B zu zuf lligen Zeiten WHEN Fertig TRIGGER Fertig ACTIVATE Steuerung MODEND MODEND 9 27 10 Eingabe und Ausgabe Die Ein und Ausgabe Anweisungen erm glichen die bertragung von Daten aus dem Arbeitsspeicher des Rechners auf eine externe Datenstation Ausgabe sowie umgekehrt die bertragung von Daten die sich auf einer externen Datenstation befinden in den Arbeitsspeicher Eingabe Datenstationen sind prim r Ger te der Standardperipherie Drucker Konsole Platte Magnetband Tastatur usw oder der Proze peripherie Me wertgeber Stellglieder unterlagerte Steuerung usw Auf diesen system definierten Datenstationen k nnen im Programm benutzerdefinierte Datenstationen kreiert werden zur Aufnahme von Daten z B auf Platten Magnetb ndern Druckern etc In den E A Anweisungen des Problemteils werden die Datenstationen unter frei w hlbaren logischen Benutze
45. 767 B 4 C A FIT C erhaelt den Wert 131068 Zuweisung nicht erlaubt A CGFITA OK aber Informationsverlust von durch FIT A Wandlungen von FIXED und BIT Objekten ohne nderung der internen Darstellung TOFIXED D FITA D TOBIT A FIT 1 16 Weitere dyadische Standard Operatoren Syntax Typ des Typ des Typ des Bedeutung Operanden a Operandenb Ergebnisses a LWB b FIXED g Feld FIXED 31 e untere Grenze der a ten Dimension von b wenn diese existiert a UPB b FIXED g Feld FIXED 31 e obere Grenze der a ten Dimension von b wenn diese existiert Beispiel PROC A FIXED IDENT FOR i FROM LWBA TO UPBA FOR k FROM 2LWBA TO 2UPBA REPEAT REPEAT END END Ifori END proc p DCL Tabi 5 10 FIXED Tab2 1 2 3 5 FIXED CALL CALL Tab2 6 1 3 Berechnung von Ausdr cken Im folgenden bezeichnen Kleinbuchstaben a b c Konstanten oder skalare Variablen Gem den Regeln der Arithmetik h ngt die Reihenfolge der Berechnung eines Ausdruckes davon ab welchen Vor Rang die einzelnen Operatoren des Ausdrucks besitzen Der dyadische Operator hat z B eine h heren Rang als der dyadische Operator Bei dem Ausdruck a b c wird also zuerst b c berechnet und dann dieses Produkt zu a addiert Die folgende Aufstellung definiert die Rangordnung f r dyadische Operatoren wobei e
46. AT 1 i k b i k END END Fehlen Anfangswert oder Schrittweite so werden sie als 1 angenommen Fehlt der Endwert kann der Schleifenk rper unbegrenzt oft wiederholt werden Die Laufvariable darf weder vereinbart noch ver ndert werden sie hat implizit den Typ FIXED Die Werte der Ausdr cke f r Anfangswert Schrittweite und Endwert m ssen vom Typ FIXED der Wert des Ausdrucks f r die Bedingung vom Typ BIT 1 sein Die Laufvariable darf in den angegebenen Ausdr cken mit Ausnahme von Aus druck Bedingung nicht verwendet werden wohl aber in den zu wiederholenden An weisungen Im brigen gelten f r den Schleifenk rper alle Regeln f r Bl cke vgl 4 4 Das folgende Flu diagramm ist eine quivalente Darstellung der Anweisung FOR Bezeichner Laufvariable FROM Ausdruck Anfangswert BY Ausdruck Schrittweite TO Ausdruck Endwert WHILE Ausdruck Bedingung REPEAT Schleifenk rper END 7 6 Bild Flu diagramm zur Auswertung einer Wiederholungsanweisung Ausdruck Anfangswert s Ausdruck 8Schrittweite Ausdruck Endwert s gt 0 AND a lt e OR N nein 5 lt 0 AND a gt e OR 5 0 Bezeichner Laufvariable Ausdruck Bedingung 1 Schleifenk rper 5 7 Schleifenende 7 4 Sprung Anweisung Sprung Anweisung Bezeichner Marke Diese An
47. Attribut Initialisierungsattribut Die allgemeine Form der Spezifikation von Task Referenz Variablen lautet Task Referenz Spezifikation SPECIFY SPC Bezeichner Angabe virtuelle Dimensionsliste Zuweisungsschutz REF TASK Gilobal Attribut Das folgende kurze Beispiel zeigt eine Anwendungsm glichkeit f r Task Referenz variablen Beispiel Die beiden Ausschnitte aus zwei PEARL Programmen zeigen wie von einer Prozedur aus verschiedene Tasks einmal ber deren Namen und einmal ber Referenzen gestartet werden k nnen 9 3 PROBLEM SPC Verbraucher_1 Verbraucher_2 Verbraucher 3 TASK GLOBAL starteTask PROC Index FIXED CASE Index ALT ACTIVATE Verbraucher 1 ALT ACTIVATE Verbraucher 2 ALT ACTIVATE Verbraucher 3 FIN END starteTask PROBLEM SPC Verbraucher_1 Verbraucher_2 Verbraucher_3 TASK GLOBAL DCL Verbraucher 3 INV REF TASK GLOBAL INIT Verbraucher_1 Verbraucher 2 Verbraucher starteTask PROC Index FIXED IF Index lt UPB Verbraucher THEN ACTIVATE Verbraucher Index FIN END starteTask 9 1 2 Bestimmung von Task Adressen Die Adresse einer Task erh lt man durch den Aufruf der vordefinierten Funktion TASK oder einfach durch Zuweisung eines Task Bezeichners an eine Task Refe renzvariable Beispiel SPC Temperatur _Messung TASK GLOBAL DCL REF TASK ptr_task TASK Temperatur_Messung ptr_task Temperatur
48. Ausdruck sind Dient eine Operator Vereinbarung zur Erweiterung der Bedeutung eines Standard Operators so hat der neu vereinbarte Operator den Rang des Standard Operators F r einen Operator der mit einem neuen nicht standardm ig eingef hrten Operatornamen vereinbart wird kann mittels einer Rang Vereinbarung ein Rang zwischen 1 und 7 festgelegt werden Rang Vereinbarung PRECEDENCE 1 213 415 617 Soll f r einen neuen Operator Rang vereinbart werden mu dies vor der Opera tor Vereinbarung erfolgen ist keine Rang Vereinbarung angegeben erh lt der neue Operator den Rang 7 Beispiel PRECEDENCE INDEX 1 OPERATOR INDEX 6 3 Zuweisungen Zuweisungen sind f r skalare Variablen und f r Strukturen implementiert nicht jedoch f r Felder Zuweisung skalare Zuweisung Strukturzuweisung 6 3 1 Zuweisungen f r skalare Variablen Zuweisungen f r skalare Variablen sind wie folgt definiert skalare Zuweisung NamesSskalare Variable Ausdruck Die Anweisung bewirkt da der links vom Zuweisungszeichen oder ange gebenen Variablen der Wert des rechts stehenden Ausdrucks zugewiesen wird d h nach der Ausf hrung der Zuweisung kann man sich mit diesem Namen auf den durch Ausdruck bestimmten Wert beziehen der gegebenenfalls vor der eigentlichen Zuweisung berechnet wird 6 20 Ergebnis i Koeff SIN X i 1 X i Der Typ der links v
49. Bitstrings an das F rderzeug WHEN Fertig ACTIVATE Versorgung AFTER 30 SEC ACTIVATE Stoerung END Steuerung Versorgung TASK PRIO3 PREVENT Stoerung END Versorgung Stoerung TASK PRIO2 PREVENT Versorgung END Stoerung 9 3 Synchronisierung von Tasks Grunds tzlich werden Tasks unabh ngig voneinander abgearbeitet Es kann jedoch auch der Fall eintreten da mehrere Tasks Teilaufgaben eines komplexeren Gesamtproblems bearbeiten und dabei bestimmte Betriebsmittel insbesondere Daten gemeinsam benutzen m ssen Beispiel Nachricht Nachricht Produzent 1 Produzent 2 Ausgabe Ze Protokolldrucker Die Tasks Produzent 1 und Produzent 2 produzieren Nachrichten die sie in einem gemeinsamen Puffer ablegen wollen durch die Task Ausgabe wird eine Nachricht aus dem Puffer entnommen und auf einem Protokolldrucker formatiert ausgegeben Damit die Operationen richtig ablaufen m ssen sie wie folgt koordiniert werden Ausgabe erzeugt nur dann eine Ausgabe wenn eine Nachricht gepuffert wurde wartet also gegebenenfalls auf F llung des Puffers durch Produzent 1 oder Produzent 2 Produzent 1 und Produzent 2 k nnen nur dann eine Nachricht puffern wenn gerade keine fr here Nachricht durch Ausgabe ausgegeben wird d h sie m ssen eventuell zur ckgestellt werden bis Ausgabe eine Nachricht vollst n dig ausgegeben hat Die Teilabl ufe von Produzent 1 und Produzent 2 zum Puffern einer Na
50. CHAR 20 INIT DCL s2 CHAR 100 INIT CALL print_fehler s1 CALL print_fehler s2 Es d rfen auch Zeichenkettenkonstanten bergeben werden wenn der formale Parameter mit dem Typ REF INV CHAR definiert wurde Beispiel SPC print message ENTRY REF INV CHAR 1 1 GLOBAL CALL print_message Text 1 CALL print_message laengerer Text 2 Ein variabler Zeichenkettenzeiger kann in allen Ausdr cken analog zu konstanten Zeichenkettenzeigern benutzt werden Die zu der Typpr fung geh rende L ngen pr fung erfolgt erst zur Laufzeit Ein variabler Zeichenkettenzeiger ist als Ergebniswert einer Funktion nicht erlaubt Der Typ CHAR darf nur in Verbindung mit REF benutzt werden d h der Pa rametertyp CHAR IDENT ist nicht erlaubt 5 14 5 10 Felder Nach M glichkeit werden beim Programmieren gleichartige Objekte unter einem Bezeichner zusammengefa t und die einzelnen Objekte indiziert angesprochen Beispiel Eine unterlagerte Steuerung steuert drei Ger te G 1 G 2 und G 3 Bei Ausgabe der Bit kette 0001 B an die unterlagerte Steuerung soll G 1 eingeschaltet werden bei Ausgabe von 0010 B das Ger t G 2 bei Ausgabe von 0100 B das Ger t G 3 Hierzu bietet sich an die drei Einschaltsignale unter einem Bezeichner z B einschalten zusammenzufassen und indi ziert zu benutzen DCL einschalten 1 3 4 i FIXED einschalten 1 0001 einschalten
51. DUCE NamesSignal RST Ausdruck Fehlernummer W hrend durch Interrupts auf asynchrone Ausnahmesituationen d h von au en einwirkende Einfl sse reagiert werden kann dient die Signalbehandlung ausschlie lich zur Reaktion auf synchrone Fehlerzust nde d h Ursache und Behandlung des Fehlerzustandes gehen auf dieselbe Task zur ck Beispiel Die Prozedur Auswertung soll ein im Laufe eines Tages erstelltes Logbuch sequenitiell auswerten die einzelnen Datenelemente des Logbuchs sind vom Typ Ereignis PROBLEM SPC EOF SIGNAL Band DATION INOUT ALL TYPE Ereignis DCL Logbuch DATION IN Ereignis DIM FORWARD CREATED Band Auswertung PROC DCL Eingabe Ereignis OPEN Logbuch ON EOF BEGIN CLOSE Logbuch END ON EOF REPEAT READ Eingabe FROM Logbuch END END Auswertung Zum Testen k nnte man sporadisch anstelle der Read Anweisung die Anweisung INDUCE EOF ausf hren Wenn ein Signal ausgel st wird sei es durch einen Fehlerzustand oder durch eine Induce Anweisung und keine Signal Reaktion daf r eingeplant ist wird die Systemreaktion ausgel st i a also Fehlermeldung des Laufzeitsystems und Abbruch der verursachenden Task Durch die Angabe einer Variablen nach RST in der Signal Einplanung erh lt der Programmierer Zugriff auf die Fehlernummer Fehlerursache In diesem Fall kann durch INDUCE Signalname RST Fehlernummer das Signal Signalname f r den Fehler mit de
52. ED 100 FLOAT S 2 2 5 CALL P1 i ali END P2 Nach dem Aufruf von P1 in P2 hat i immer noch den Wert 2 aber a i den Wert 5 0 Wie bereits die Sprachform der Prozedur Deklaration siehe 8 1 zeigt d rfen die Werte der aktuellen Parameter vom Typ e ganze Zahl oder Gleitpunktzahl oder e Bitkette oder Zeichenkette oder e Uhrzeit oder Zeitdauer oder e Struktur oder Bezeichner f r_Typ oder e Typ Referenz sein Objekten der Typen e DATION SEMA BOLT und INTERRUPT sind keine expliziten Werte zugeordnet Solche Objekte d rfen nur per Identifizierung an eine Prozedur bergeben werden d h der formale Parameter mu mit dem IDENTICAL Attribut vereinbart worden sein 8 8 8 3 Referenzen auf Prozeduren REF PROC Die M glichkeit Prozedur Referenzvariablen zu nutzen ist ein erster Schritt Richtung objektorientierte Programmierung Damit lassen sich z B Datenstrukturen und die notwendigen Prozeduren zur kontrollierten Manipulation dieser Strukturen zu neuen abstrakten Datenstrukturen zusammenfassen Eine Deklaration von Referenzvariablen f r Prozeduren enth lt die Beschreibung aller Parametertypen sowie den Typ des Resultats Prozedur Referenz Deklaration DECLARE DCL Bezeichner Angabe Dimensions Attribut INV REF Typ Prozedur Global Attribut Initialisierungsattribut Typ Prozedur PROC Liste der Parameter f r SPC Resultat Attribut Die allgemeine Form der
53. Eine Task steuert bestimmte Ger te die Steuerungsauftr ge erh lt sie von einer anderen Task Weil zeitweise mehr als ein Auftrag vorliegen kann und die Auftr ge unterschiedliche Dringlichkeit haben k nnen werden sie in Form einer Warteschlange gepuffert Die Struktur der Auftr ge sei vom neu vereinbarten Typ Auftragstyp dieser enthalte auch das Dringlich keitskriterium nach dem neue Auftr ge eingeordnet werden Die Referenz Variablen Next_Auftrag bzw Frei zeigen auf den n chsten zu bearbeitenden Auftrag bzw den n chsten freien Platz in der Warteschlange Auftragskette ausgehend von Frei seien die freien Pl tze ebenfalls verkettet Die Warteschlange sei h chstens 10 Elemente lang Next_Auftrag Frei Auftrag Auftrag Auftrag Auftrag Nachfolger Nachfolger Nachfolger Nachfolger Die Auftragskette kann folgenderma en vereinbart werden TYPE Kettenelement STRUCT Auftrag Auftragstyp Nachf REF Kettenelement 1 DCL Auftragskette 10 Kettenelement Next_Auftrag Frei REF Kettenelement Nach erfolgter Initialisierung und dem Einordnen verschiedener Auftr ge kann ein fertig bear beiteter Auftrag wie folgt aus der Warteschlange entfernt werden Hilf sei dabei eine Variable vom REF Kettenelement Hilf Next_Auftrag Next_Auftrag Next_Auftrag Nachf Hilf Nachf Frei Frei Hilf Diese Anweisungen sind auch weitere Beispiele f r implizites Deferenzieren Die Auftrags
54. FIN 2 0 6 3 Die Bedeutung der Dereferenzierung wurde unter 5 9 Referenzen behandelt Die allgemeine Form lautet Dereferenzierung CONT NameS Referenz Funktionsaufruf Das i te Bit einer Bitkette kann mittels des standardm igen Namens BIT i ange sprochen werden der durch einen Punkt getrennt hinter dem Namen der Bitkette angegeben wird Eine Bitkette der L nge lg wird also als Struktur aufgefa t die als einzige Komponente einen eindimensionalen Bereich BIT der L nge Ig besitzt dessen Elemente vom Typ BIT 1 sind Analog hierzu kann das i te Zeichen einer Zeichenkette Z mit Z CHAR i oder Z CHARACTER i angesprochen werden Dabei werden die Bits oder Zeichen einer Bit oder Zeichenkette von links nach rechts numeriert Beispiel DCL Byte BIT 8 BIT 1 i FIXED Byte 11101111 B Bt Byte BIT 4 Bt erhaelt den Wert 0 B Byte BIT 2 0 B Byte hat den Wert 10101111 8 1 Byte hat den Wert 10101110 B Dar ber hinaus k nnen mehrere Bits oder Zeichen umfassende Ausschnitte von Bit oder Zeichenketten in analoger Art und Weise angesprochen werden die allgemeine Form der Ansprache ist Kettenausschnitt NameS Kette BIT CHAR CHARACTER AusdruckS Anfang Ausdruck Ende Die Ausdr cke Anfang und Ende m ssen ganzzahlige Werte haben Ende mu gr er oder gleich Anfang sein und beide Werte m ssen innerha
55. FTER Ausdruck Dauer ab wann dies relativ zur Ausf hrung der Task Steueranweisung geschehen soll und durch WHEN 1 da dies beim Eintreffen des angegebenen Interrupts evtl verz gert um die in AFTER Ausdruck Dauer genannte Dauer erfolgen soll Fehlen AT AFTER und WHEN so wird die Task sofort nach Ausf hrung der Task Steueranweisung lauff hig Soll die Task in gleichen zeitlichen Abst nden wiederholt werden so ist die Zeit zwischen zwei Ausf hrungen durch ALL Ausdruck Dauer festzulegen Um die wiederholten Ausf hrungen zu begrenzen kann mit UNTIL Ausdruck Uhrzeit eine Uhrzeit oder mit DURING Ausdruck Dauer eine Zeitdauer festgelegt werden nach der keine Task Starts mehr wiederholt werden Beginnt die Startbedingung mit WHEN so wird die Task bei jedem Eintreffen des angegebenen Interrupts unter Ber cksichtigung der weiteren Komponenten der Startbedingung erneut lauff hig Eine durch ALL bestimmte Einplanung wird relativ zum Eintreffen des Interrupts neu wirksam die vorherige unwirksam Die Startbedingung wird unwirksam d h die mit ihr verkn pfte Task wird nicht mehr ausgef hrt wenn sie mit AFTER oder ALL beginnt und eine durch UNTIL oder DURING gesetzte Endebedingung erreicht ist oder wenn sie die Form AFTER Ausdruck Dauer hat und die angegebene Dauer vom U berlaufen der Task Steueranweisung an gerechnet verstrichen ist durch Ausf hrung einer Anweisung zum Ausplanen einer Task siehe 9 2 7
56. Fehlt die Ausdrucksangabe bei X SKIP bzw PAGE so wird der Wert 1 angenom men Der Wert eines angegebenen Ausdrucks mu positiv sein wenn die Datensta tion das Attribut FORWARD besitzt ADV Ausdruck Seite Ausdruck Zeile Ausdruck Spalte gibt den Abstand des zu bertragenden Datenelements von dem aktuellen Datenelement an Fehlende Ausdr cke werden durch den Wert Null ersetzt Hat die Datenstation das Attribut FORWARD so mu der Wert des am weite sten links angegebenen Ausdrucks positiv sein 10 17 Beispiele Die betreffende Datenstation File1 habe die Gliederung 10 10 10 die aktuelle Position sei z B 5 3 8 Positionsangabe neue Position X 5 3 9 X 5 5 3 3 X 4 5 4 2 1 SKIP 2 5 5 1 SKIP 1 5 2 1 PAGE 6 1 1 PAGE 6 1 1 1 2 PAGE 4 1 1 1 ADV 2 5 1 7 8 9 ADV 1 0 5 4 8 ADV 3 2 1 2 1 9 ADV 1 8 0 7 1 8 3 Bei einer relativen Positionierung d rfen Dimensionsgrenzen nicht berschritten werden vgl die gekennzeichneten Beispiele sofern die Datenstation nicht das Zugriffsattribut STREAM bzw CYCLIC besitzt STREAM erlaubt die berschreitung der inneren Dimensionsgrenze Beispiel 1 und 3 nicht aber die Grenze der h chsten Dimension zu berschreiten Beispiel 2 Hierf r mu eine Datenstation das Attribut CYCLIC besitzen Sollen bei den entsprechenden Grenz berschreitun gen Fehlerreaktionen erfolgen m ssen die Attribute NOST
57. Form B4 angegeben werden Die Form Bi i 1 4 besteht aus einem Apostroph einer Folge e der Ziffern 0 und 1 im Fall B1 e der Ziffern 0 bis im Fall B2 e der Ziffern O bis 7 im Fall B3 e der Ziffern 0 bis 9 und Buchstaben A bis F im Fall B4 sowie einem Apostroph und der entsprechenden Angabe B1 oder B2 oder B3 oder B4 Beispiel 110010100111 B1 entspricht 302213 B2 entspricht 6247 B3 entspricht 7 4 Anstatt 1 kann k rzer geschrieben werden Die folgenden Tabellen zeigen die Zuordnung zwischen der Bin rform und den anderen Formen B2 B1 B3 B1 B4 B1 0 00 0 000 0 0000 1 01 1 001 1 0001 2 10 2 010 2 0010 3 11 3 011 3 0011 4 100 4 0100 5 101 5 0101 6 110 6 0110 7 111 7 0111 8 1000 9 1001 A 1010 B 1011 1100 D 1101 E 1110 1111 5 5 Variablen f r Bitketten sind mit dem Typ Attribut BIT zu vereinbaren Typ Bitkette BIT L nge L nge ganze Zahl ohne Genauigkeit gr er Null L nge gibt die Anzahl Elemente der Bitkette an Fehlt die L ngenangabe so mu sie entweder in einer L ngenvereinbarung siehe 5 6 definiert worden sein oder es wird als L nge 1 eingesetzt Beispiel DCL X_Koord BIT 2 BIT 8 X_Koord 01 A9 B4 Die Ansprache von Teilen von Bitketten wird 6 1 Ausdr cke behandelt 5 6 5 5 Zeichenketten CHARACTER Eine Zeichenkettenkonstante besteht aus einem Apostroph einer Folge
58. Grenzwert THEN EXIT Analyse ELSE FIN END Vergleich END Analyse RETURN Der Ausf hrung von EXIT Analyse RETURN OK folgen w rde umittelbar die Ausf hrung von 7 9 8 Prozeduren Bei der L sung einer Automationsaufgabe formuliert man im Sinne einer strukturier ten Programmierung f r einen logisch unabh ngigen Algorithmus einen selbst ndi gen Programmteil und gibt ihm einen Namen zumal wenn die Durchf hrung des Algorithmus an mehreren Stellen des gesamten Programms ben tigt wird wobei sich eventuell nur die Argumente des Algorithmus seine Parameter ndern Die Ausf h rung eines solchen Programmteils wird durch den Aufruf seines Namens gegebenenfalls versehen mit aktuellen Parameterwerten angesto en Soll dieser Aufruf dieselbe Wirkung haben als ob an seiner Stelle der aufgerufene Programmteil ausgef hrt w rde so wird dieser Programmteil in PEARL als Prozedur vereinbart und aufgerufen Anderenfalls wenn n mlich die dem Aufruf folgenden Anweisungen zeitlich parallel zu dem aufgerufenen Programmteil ausgef hrt werden soll vereinbart und startet man den Programmteil als Task Tasks werden im Ab schnitt 9 Parallele Aktivit ten behandelt Prozeduren die an ihre Aufrufstelle ein Ergebnis zur ckgeben hei en Funktions prozeduren alle anderen werden Unterprogramm Prozeduren genannt Beispiel f r eine Unterprogramm Prozedur Die Prozedur Ausgabe m ge eine Positionsangabe
59. HAR Variabel lange Zeichenketten k nnen mit speziellen Zeiger Objekten den sogenann ten variablen Zeichenkettenzeigern leicht verarbeitet werden Beispiel Deklarationen variabler Zeichenkettenzeiger DCL str_ptr REF CHAR Zeiger Deklaration SPC print ENTRY REF CHAR GLOBAL Zeiger als Parameter Ein Zeiger vom Typ REF CHAR enth lt neben der Adresse einer Zeichenkette noch zwei Z hler die die maximale L nge und die aktuell benutzte L nge der refe renzierten Zeichenkettenvariable speichern Bei der Zuweisung der Adresse einer Zeichenkettenvariable an einen variablen Zeichenkettenzeiger werden beide Z hler mit der L nge der referenzierten Zeichenkettenvariable initialisiert Beispiel Initialisierung eines variablen Zeichenkettenzeigers DCL 51 CHAR 20 DCL 52 CHAR 100 DCL str_ptr REF CHAR Sir Dir s1 Adr s1 L nge 20 Max 20 Sir Dir 52 Adr s2 L nge 100 Max 100 Damit unterscheidet sich der variable Zeiger zun chst nicht von einem Zeichen kettenzeiger mit einer konstanten L nge Bei Zuweisungen an die Zeichen kettenvariable ber diesen Zeiger wird jedoch die L nge der zugewiesenen Zeichenkette in dem Z hler f r die aktuelle L nge gespeichert und das sonst bliche Auff llen der Zeichenkette bis zur maximalen L nge mit Leerzeichen entf llt Beispiel Zuweisung an die referenzierte Variable Sir Dir 51 Adr s1 L nge 20 Max 20 CONT str_ptr PEARL 90
60. NTROL ALL Format Deklaration Bezeichner FORMAT Format oder Position Format oder Position Prozedur Deklaration Bezeichner PROC PROCEDURE Resultat Attribut Resident Attribut Reentrant Attribut Global Attribut Prozedurk rper END Prozedurk rper Vereinbarung Anweisung Liste formaler Parameter formaler Parameter formaler Parameter formaler Parameter Bezeichner Angabe virtuelle Dimensionsliste Parameter Typ IDENT IDENTICAL Parameter Typ INV einfacher Typ strukturierter Typ Typ Referenz Typ Echtzeit Objekt Typ Dation Typ Echtzeit Objekt SEMA BOLT INTERRUPT IRPT SIGNAL Resultat Attribut RETURNS Resultat Typ Resultat Typ einfacher Typ strukturierter Typ Typ Referenz Reentrant Attribut REENT A 10 Task Deklaration Bezeichner TASK Priorit tsangabe MAIN Resident Attribut Global Attribut Prozedurk rper END Priorit tsangabe PRIORITY PRIO konstanter FIXED Ausdruck gr er Null Operator Vereinbarung OPERATOR Op Name Op Parameter Op Parameter Resultat Attribut Prozedurk rper END Op Name Bezeichner 4 lt gt lt gt lt gt gt lt Op Parameter Bezeichner virtuelle Dimensionsliste Parameter Typ IDENT
61. PEARL 90 Sprachreport Version 2 0 Januar 1995 Herausgeber 4 4 2 Echtzeitprogrammierung PEARL Herausgeber Gl Fachgruppe 4 4 2 Echtzeitprogrammierung PEARL Sprecher Stellvertreter Dr Hans Windauer Dr Peter Holleczek Werum GmbH Universit t Erlangen N rnberg Regionales Rechenzentrum Erbstorfer Landstr 14 Martensstra e 1 21337 L neburg 91058 Erlangen Tel 04131 8900 66 Tel 09131 85 7817 Fax 04131 8900 20 Fax 09131 302941 Innerhalb der Fachgruppe ist der Arbeitskreis 5 f r die Pflege des Sprachreports zust ndig Leiter dieses Arbeitskreises ist Priv Doz Dr Ing Georg Thiele Universit t Bremen Fachbereich 1 Physik Elektrotechnik Postfach 33 04 40 28334 Bremen Tel 0421 218 2442 Fax 0421 218 4707 Copyright GI Gesellschaft f r Informatik e V Bonn 1995 Inhaltsverzeichnis ER Gul EI En DEE 1 1 2 Wesentliche Merkmale von DEA 2 1 2 1 Multtasking Eioenschatten 2 1 2 2 Ein und 2 3 2 3 Programmstrukturi c RER hee De Reese ee de 2 4 2 4 Datentypen an Elan Cain 2 5 2 5 Kontrollstr kturen 2 2 22 22 IH nase 2 6 3 Regeln zum Aufbau von PEARL Sprachformen nennen nn 3 1 E We NEE EE 3 1 KE E ue EE 3 3 3 251 Bezeichner Au ar EE ENEE AE EE AN 3 3 3 2 2 2 b s fette lauter E
62. Position vom Typ FIXED in eine Bitkette BinPos wandeln und an eine zu positionierende Maschine ausgeben die durch die Nummer Masch_Nr vom Typ FIXED gekennzeichnet sei Ausgabe werde u a von der Task Steuerung aufgerufen PROBLEM Ausgabe PROC Position Masch_Nr FIXED DCL BinPos BIT 8 bertragung von Position in BinPos Ausgabe von BinPos an die Maschine Masch_Nr END Deklaration von Ausgabe Steuerung TASK DCL Pos Aktuelle Soll Position Nr Nr der Maschine FIXED Zuweisungen an Pos und Nr CALL Ausgabe Pos Nr END Deklaration von Steuerung 8 1 Position und Masch_Nr sind die formalen Parameter von Ausgabe Pos und Nr sind aktuelle Parameter Binpos ist eine lokale Variable von Ausgabe die nur innerhalb von Ausgabe bekannt ist Beispiel f r eine Funktionsprozedur Aufgrund eines Belegungsplans Bel_Plan soll die Prozedur Next_Machine die Nummer der Maschine bestimmen die unter allen verf gbaren Maschinen als n chste zu belegen ist Dabei soll Bel_Plan nicht als Parameter bergeben werden die zur ckzugebende Nummer sei vom Typ FIXED Next_Machine soll innerhalb der Task Versorgung deklariert und aufgerufen werden PROBLEM DCL ban Versorgung TASK DCL Masch_Nr FIXED Next_Machine PROCEDURE RETURNS FIXED DCL Nr FIXED Nr der naechsten Maschine Feststellen von Nr mit Hilfe von Bel Plan RETURN Nr END Deklaration von Next_Machine Mas
63. REAM bzw NOCYCL angegeben werden Standardm ig werden STREAM und NOCYCL angenommen Beispiel DCL File DATION INOUT FIXED DIM 10 10 10 FORWARD CYCLIC GLOBAL CREATED Platte Die aktuelle Position sei z B jeweils 5 3 8 Dann gilt Positionsangabe neue Position X 6 5 4 4 SKIP 8 6 1 1 PAGE 7 2 1 1 ADV 9 0 3 4 4 1 10 18 10 5 Die Get und Put Anweisung GET PUT Die Get Anweisung dient zur Eingabe die Put Anweisung zur Ausgabe von Daten mit Wandlung zwischen rechnerinterner und externer zeichenorientierten Darstellung auf ALPHIC Datenstationen Zur Steuerung dieser Wandlung k nnen Formate angegeben werden Beispiele 1 Auf dem Monitor eines Lagerverwalters soll folgender Text erscheinen ___Artikel Nr __4711 _Bestand 1281 N tige Programmschritte SPC Monitor DATION INOUT ALPHIC DCL Lager DATION INOUT ALPHIC DIM 20 80 FORWARD GLOBAL CREATED Monitor DCL Artnr Best FIXED PUT Artikel Nr Artnr Bestand Best TO Lager_Monitor BY X 3 13 F 4 SKIP X 3 13 F 4 Ausgabe von zwei Werten im Standardformat auf einer neuen Seite des Druckers SPC DATION OUT ALPHIC DCL Drucker DATION OUT ALPHIC DIM 50 120 FORWARD GLOBAL CREATED Thermo_Print DCL a FIXED 15 x FLOAT 31 5 x Le 2 33 PUT TO Drucker BY PAGE PUT TO Drucker BY LIST Die Ausf hrung ergibt folgendes Druckbild 5 2 3300
64. Syntax Task_Starten Startbedingung ACTIVATE zum Start eingeplant werden Der Start selbst wird vom Realzeit Betriebssystem verwaltet Ist die in der Steueranweisung angegebene Startbedingung erf llt so wird die Task zun chst lauff hig erst wenn sie auch h chstpriore lauff hige Task ist wird sie gestartet d h in den Zustand laufend berf hrt vgl auch 9 2 2 Beispiele AT 20 0 0 ACTIVATE Statistik bedeutet da die Task Statistik erst zum zuk nftigen Zeitpunkt 20 Uhr gestartet werden soll ACTIVATE Statistik bedeutet hingegen da die Task Statistik unmittelbar gestartet werden soll Mit der Startbedingung k nnen gem der Syntax Definition Startbedingung AT Ausdruck Uhrzeit Frequenz AFTER Ausdruck Dauer Frequenz WHEN Namesinterrupt AFTER Ausdruck Dauer Frequenz Frequenz Frequenz ALL Ausdruck Dauer UNTIL Ausdruck Uhrzeit DURING Ausdruck Dauer Tasks auch zum zyklischen wiederholten Start eingeplant werden 9 6 Beispiele ALL T ACTIVATE Regler bedeutet da die Task Regler zu jedem ganzen Vielfachen des Zeitintervalls lauff hig wird WHEN Alarm ACTIVATE Abschaltung bedeutet da die Task Abschaltung bei jedem Auftreten des Interrupts Alarm lauff hig wird Durch AT Ausdruck Uhrzeit wird festgelegt zu welcher Uhrzeit die Task erstmalig ausgef hrt werden soll durch A
65. Variablenliste unge ndert Beispiele Datentyp Wert implizites Ausgabe Format FIXED 15 127 F 6 127 FLOAT 31 3 28E 28 E 12 5 8 3 28000E 28 BIT 8 EF B4 B 8 11101111 10 31 10 5 8 Das R Format R Manchmal werden gleiche Format Positionslisten in mehr als einer Get oder Put Anweisung benutzt Das R Format dient dazu diese Listen nur einmal zu beschrei ben Hierzu wird die Liste mit der sogenannten Format Deklaration eingef hrt Format Deklaration Bezeichner FORMAT Format Position Format Position Beispiel Ftab FORMAT X 2 8 3 3 2 E 10 3 Ein solcherart vereinbartes Format kann in einer Get oder Put Anweisung unter Angabe seines Bezeichners benutzt werden R Format R Bezeichner Format Bei der Daten bertragung wird das R Format durch die Format Positionsliste ersetzt die in der bezeichneten Format Deklaration enthalten ist Beispiel PUT 2 TO Drucker BY R Ftab Die Format Positionsliste in der Format Deklaration darf kein R Format enthalten das sich direkt oder indirekt ber eine weitere Format Deklaration auf die eigene Format Deklaration bezieht 10 32 10 6 Die Convert Anweisung CONVERT Die komfortable Umwandlung von Zahlenwerten in Zeichenketten und umgekehrt ist f r viele Anwendungen sehr wichtig z B f r den Aufbau von Bildschirm Masken oder zum Datenaustausch ber Kommunikationsschnittstellen die keine Bin rdaten bertragen k
66. Zeichen des Maschinenzeichensatzes Kontrollzeichen Sequenz VI B4 Ziffer B4 Ziffer 7 Uhrzeitkonstante Ziffer Ziffer Ziffer Ziffer Dauerkonstante Stundenangabe Minutenangabe Sekundenangabe Minutenangabe Sekundenangabe Sekundenangabe Stundenangabe ganze Zahl ohne Genauigkeit HRS Minutenangabe ganze Zahl ohne Genauigkeit MIN Sekundenangabe ganze Zahl ohne Genauigkeit Gleitpunktzahl ohne Genauigkeit SEC A 6 konstanter Ausdruck Gleitpunktzahl Dauerkonstante konstanter FIXED Ausdruck konstanter FIXED Ausdruck Term Term Term Faktor Z REM Faktor Faktor 4 ganze Zahl konstanter FIXED Ausdruck TOFIXED Zeichenkettenkonstante der L nge 1 Bitkettenkonstante Bezeichner benannte FIXED Konstante FIT konstanter FIXED Ausdruck 3 4 Problemteil Problemteil PROBLEM Vereinbarung Vereinbarung Deklaration Spezifikation Identifikation A 3 4 1 Deklaration Deklaration L ngen Vereinbarung Typ Vereinbarung Variablen Deklaration Format Deklaration Prozedur Deklaration Task Deklaration Operator Vereinbarung Rang Vereinbarung L ngen Vereinbarung LENGTH FIXED FLOAT BIT CHARACTER CHAR Genauigkeit Typ Vereinbarung Bezeichner f r Typ einfacher Typ Typ Struktur 7
67. Zeichenpositionen der Wert von Dezimalstellen die Anzahl d der Ziffern f r die Sekundenbruchteile der Dauer 1 2 Ausgabe Die Dauer wird rechtsb ndig in einem Feld der L nge w in der Form Ziffer Ziffer _HRS_Ziffer Ziffer_MIN_Ziffer Ziffer pgz SEC ausgegeben Es gelten die Regeln von 10 5 5 1 Eingabe Es wird ein Feld der L nge w eingelesen das eine Dauer in einer erlaubten Darstellung enthalten mu siehe 1 Vorangehende oder nachfolgende Leerzeichen werden ignoriert Wert Format Ausgabe 11 Stunden 15 Minuten D 20 11_HRS_15_MIN_00_SEC 100 Millisekunden D 24 3 0_HRS_00_MIN_00 100_SEC Dabei bedeutet _ ein Leerzeichen 10 30 10 5 7 Das List Format LIST List Format LIST Das List Format dient zur Ein und Ausgabe von Fixed Float Bit Char Clock und Dur Gr en 1 Ausgabe Aufeinanderfolgende Ausgabedaten werden durch je zwei Zwischenr ume ge trennt Die Daten werden so ausgegeben als ob f r eine Gr e vom Typ CHAR k das Format Ak BIT k B k FIXED k FLOAT k i E m m 7 m 6 CLOCK T 8 DUR i D 20 mit n ENTIER k 3 32 2 m ENTIER k 3 32 8 vereinbart w re 2 Eingabe Die Eingabedaten k nnen irgendeine Form haben die f r die Darstellung von Konstanten erlaubt ist Sie werden durch ein Komma oder mindestens zwei Zwischenr ume getrennt Steht zwischen zwei Kommas keine Konstante so bleibt das entsprechende Element der
68. anze Zahl gem DIN Beispiele DCL A FIXED 15 X FLOAT 31 B C BIT 15 A ENTIER X 2 Entspricht A Entier X 2 A ENTIER X 2 0 C TOBITA AND B ROUND X TOFIXED Syntax Typ des Typ des Bedeutung des Operanden a Ergebnissese Ergebnisses e SQRT a Wurzel von a SIN a Sinus von a COS Cosinus von a EXP a FIXED g FLOAT g e 2 718281828459 LNa FLOAT g FLOAT g ymiteY a TANa Tangens von a ATANa Arcus tangens von a Tangens hyperbolicus von a Syntax Ergebnistyp Bedeutung des Ergebnisses SIZEOF Bezeichner FIXED 31 Speichergr e des Objektes zur Laufzeit in Bytes SIZEOF einfacher Typ FIXED 31 wird nicht durch den PEARL Compiler ausgewertet 6 1 2 Dyadische Operatoren Die folgende Tabelle beschreibt f r jeden aufgef hrten dyadischen Operator e welchen Typ die Operanden haben d rfen e welchen Typ das Ergebnis der Operation besitzt und e die Bedeutung des Operators Dabei bezeichnen e a bzw b den ersten bzw zweiten Operanden e g1 92 bzw 191 Ig2 die Genauigkeiten bzw L ngen der Operanden und des Ergebnisses Syntax a b a b Typ von a FIXED g1 FIXED g1 FLOAT g1 FLOAT g1 DURATION DURATION CLOCK FIXED g1 FIXED g1 FLOAT g1 FLOAT g1 DURATION CLOCK CLOCK FIXED g1 FIXED g1 FLOAT g1 FLOAT g1 FIXED g1 DURATION FLOAT g1 DURATION FIXED g1 FLOAT g1 FIXED g1 FLOAT g1 DURATION DURATION
69. auer eines Objekts ist die Ausf hrungs Zeit zwischen der Auswertung seiner Deklaration und der Ausf hrung des Endes des Blocks oder der Wieder holung oder der Prozedur oder der Task oder des Moduls in dem oder der die Deklaration erfolgt 4 6 MODULE Lebensdauer von SYSTEM Drucker STDPRINT PROBLEM SPC Drucker DATION TASK DCL a FIXED BEGIN Drucker DCL x FLOAT END END T MODEND Zeit Als G ltigkeitsbereich eines Objekts werden alle Teile des Programms bezeichnet in denen das Objekt benutzt werden kann Folgende Regeln sind zu beachten Ein auf Modulebene vereinbartes Objekt ist auf Modulebene und in allen Tasks und Prozeduren dieses Moduls benutzbar siehe jedoch 4 4 auch in allen eingeschachtelten Prozeduren Bl cken und Wiederholungen mit folgender Ausnahme Der G ltigkeitsbereich wird eingeschr nkt wenn in einer der Tasks oder Prozeduren ein anderes Objekt unter demselben Namen de klariert wird Ein in einer Task Prozedur Wiederholung oder einem Block vereinbartes Objekt ist in dieser Task Prozedur Wiederholung oder diesem Block und allen darin eingeschachtelten Prozeduren Wiederholungen und Bl cken benutzbar mit folgender Ausnahme Der G ltigkeitsbereich wird eingeschr nkt wenn in einer der eingeschachtelten Prozeduren Wiederholungen oder Bl cke ein anderes Objekt unter demselben Namen deklariert wird 4 7 Beispiel G ltigkeitsbereich von PROBLEM
70. ausgewertet Beispiel IF Gradient gt Grad_Grenze THEN Alarm ELSE IF Gradient gt Grad_Schwelle THEN ALL 1 ACTIVATE Messung Haeufiger messen FIN FIN 7 1 7 2 Anweisungsauswahl CASE und Leeranweisung Angenommen eine Funktions Prozedur Steuerung soll zur Steuerung mehrerer gleichartiger Ger te benutzt werden und nach jedem Aufruf eine Zahl zwischen 1 und 4 zur ckgegeben mit der Bedeutung e R ckgabewert 1 Auftrag durchgef hrt e R ckgabewert 2 Auftragsdaten falsch e R ckgabewert 3 Ger t nicht ansprechbar e R ckgabewert 4 Ger t funktioniert nicht richtig Die aufgerufene Task Versorgung soll dann je Fall die vorgesehene Ma nahme durchf hren Zur Programmierung solcher Fallunterscheidungen ist die Anweisungsauswahl geeignet die in zwei historisch bedingten Auspr gungen zur Verf gung steht Die ltere Ausf hrung l t nur ganze Zahlen als Unterscheidungskriterien zu bei der neueren Auspr gung k nnen auch Zeichen angegeben werden Zun chst wird die ltere Form beschrieben Anweisungsauswahl 1 CASE Ausdruck ALT Anweisung Ir OUT Anweisung FIN Der Anweisungsfolge hinter dem ersten ALT Alternative 1 ist die Zahl 1 zugeordnet der Anweisungsfolge hinter dem zweiten ALT Alternative 2 die Zahl 2 usw Bei Ausf hrung der Anweisungsauswahl wird der angegebene Ausdruck ausgewer tet er mu einen Wert vom Typ FIXED ergeben Liegt der ganzzahlige Wert zwi schen 1 u
71. bertragungen in beiden Rich tungen zu z B Platte 10 4 Die Daten bertragungen erfolgen mit dem rechnerinternen Format der Daten oder mittels Wandlung zwischen rechnerinternem und externem Format PEARL bietet hierf r drei verschiedene Arten von E A Anweisungen Die READ WRITE Anweisungen f r die bertragung mit rechnerinternem Format z B f r Plattendateien siehe 10 4 Die PUT GET Anweisungen f r die bertragung mit Umwandlung zwischen internem Format und der Darstellung in dem Zeichensatz der auf der Daten station zur Verf gung steht z B f r Druckerausgabe siehe 10 5 Die TAKE SEND Anweisungen f r die bertragung von Proze daten siehe 10 7 Die Daten bertragung zu oder von einer Datenstation kann nur mit einer der ange gebenen Arten erfolgen Die Auswahl wird bei der Vereinbarung der Datenstation mittels des Klassenattributs getroffen das angibt welcher der drei Klassen die Daten angeh ren Sollen die READ WRITE Anweisungen benutzt werden d h nimmt die Daten station Daten in rechnerinternem Format auf so wird als Klassenattribut der Typ der zu bertragenden Daten angegeben z B FIXED oder FLOAT 53 oder BIT 16 oder ALL f r unterschiedliche Typen Werden die Daten auf der Datenstation alpha numerisch dargestellt Fall PUT GET so erh lt die Datenstation das Klassenattribut ALPHIC Datenstationen f r bertragungen mit den TAKE SEND Anweisungen haben das Klassenattribut BASIC Die all
72. berwachenden Proze die von den Tasks Steuerung und Disposition f r Berechnungen ben tigt werden Es soll gew hrleistet sein da Messung nur dann die Vergleichsgr en ndert wenn sie nicht benutzt werden dagegen sollen Steuerung und Disposition die Vergleichsgr en simultan benutzen Hierzu wird eine Bolt Variable Vwert deklariert in den K rpern der drei Tasks werden die kriti schen Abschnitte der Modifikation oder Benutzung der Vergleichsgr en folgenderma en eingeleitet bzw abgeschlossen Im K rper von Messung RESERVE uwen Modifikation FREE Vwert In den K rpern von Steuerung und Disposition ENTER Vwert Benutzung LEAVE Vwert Alle Anweisungen f r Bolt Variable sind auch f r Listen von Bolt Variablen definiert in Analogie zu den Sperr und Freigabe Anweisungen f r Sema Variablen Allgemein k nnen Bolt Variablen wie folgt vereinbart und benutzt werden Bolt Deklaration DECLARE DCL Bezeichner Angabe Dimensionsattribut BOLT Global Attribut Bolt Spezifikation SPECIFY SPC Bezeichner Angabe virtuelles Dimensionsattribut BOLT Gilobal Attribut Identifikationsattribut Bolt Anweisung RESERVE Names Bolt Name Bolt FREE Name Bolt Name Bolt ENTER Name Bolt Name Bolt LEAVE Name Bolt Name Bolt Es k nnen also auch Felder von Bolt Variablen vereinbart werden Bolt Vereinbarun
73. ch eine Close Anweisung berschrieben werden Close Parameter PRM RST NameS Fehlervariable FIXED Allgemein gelten folgende Regeln Nicht jede Task die einen Zugriff auf eine Datenstation ausf hrt mu eine Open oder Close Anweisung ausf hren Es mu jedoch bez glich des Zugriffs auf eine Datenstation mindestens eine Open Anweisung durchlaufen werden Es m ssen gleichviele Close Anweisungen wie Open Anweisungen durchge f hrt werden damit die Datenstation geschlossen ist Sich entsprechende Open und Close Anweisungen m ssen nicht durch die gleiche Task ausgef hrt werden Bei fehlenden Parametern werden ANY und PRM angenommen sofern nicht vorher ausgef hrte Close oder Open Anweisungen explizite Einstellungen vorgenommen haben 10 11 Beispiel MODULE SYSTEM Drucker DRUA Platte PSP31 PROBLEM SPC DCL SPC DCL Start TASK Drucker DATION OUT ALPHIC Tab_Prot DATION OUT ALPHIC DIM 50 30 FORWARD GLOBAL CREATED Drucker Platte DATION INOUT ALL Tabelle DATION IN FLOAT DIM 300 5 DIRECT GLOBAL CREATED Platte OPEN Prot OPEN Tabelle BY IDF TAB 1 OLD ACTIVATE Prot END Prot TASK Start Daten bertragungsanweisungen mit Tabelle und Tab_Prot CLOSE Tab Prot CLOSE Tabelle END MODEND Prot 10 12 10 4 Die Read und die Write Anweisung READ WRITE Die Read Anweisung dient zur Eingabe die W
74. ch_Nr Next_Machine END Deklaration von Versorgung Da die Variable Bel_Plan auf Modulebene vereinbart ist kann sie von allen Prozeduren und Tasks des Moduls benutzt und ggf ver ndert werden 8 1 Vereinbarung von Prozeduren PROC Die Anweisungsfolge die beim Aufruf einer Prozedur anstelle des Aufrufs ausgef hrt werden soll wird in einer Prozedur Deklaration unter Angabe eines Prozedur Bezeichners festgelegt Die Anweisungen der Prozedur k nnen Daten benutzen Die lokalen Vereinbarungen und die Anweisungen der Prozedur bilden den Proze die auf Modulebene oder in einem bergeordneten Programmbereich siehe 4 1 vereinbart sind die als formale Parameter spezifiziert sind d h als Platzhalter f r die Aus dr cke oder Variablen die der Prozedur beim Aufruf als aktuelle Parameter bergeben werden oder die in der Prozedur lokal vereinbart sind durk rper Prozedur Deklaration Bezeichner PROCEDURE PROC Liste formaler Parameter Resultat Attribut Global Attribut Prozedurk rper END Prozedurk rper Vereinbarung Anweisung Liste formaler Parameter Parameterangabe Parameterangabe Parameterangabe Bezeichner Angabe virtuelle Dimensionsliste Zuweisungsschutz Parametertyp IDENTICAL IDENT virtuelle Dimensionsliste Parametertyp einfacher Typ Typ Referenz Typ Struktur Bezeichner f r Typ Typ Dation Ty
75. chaulicht F r den Fall von Vormerkungen sind zus tzlich die Zustands berg nge bei SUSPEND Anweisungen angegeben UNO TON IAN uarqnysne 9 aP 5 CORA ANNUNo I sung 20 Ss Or 51104 MZ mam S K e SS 5 Ss ZS Se SE Se SS SE RG 3 ES H e H ee Si S Z Si SE i 5 oa ZS EES SS ES amp SS SS S A 8 S PHOUISZIOA s SRE lt 9 80123 5 0 02 d OD Zauegmer Zn m Aust o E 8 88 7 25 S 8 puejsnz 08 lt 10tdagun ANaasns gt Fi a 3598 22 7 do S or gt r E 5 x Q AS 3193598 Jon nz A az dxa ANNILNOD ZunIynJsnYy Ioq 4 JSL L 18 1 8 81 9 0 5 7 1 6 PNA 9 13 9 2 6 Verz gern einer Task RESUME Soll die aktuelle Task f r eine bestimmte Zeitdauer oder bis zum Eintritt einer bestimmten Uhrzeit bzw eines Interrupts den ihr zugeordneten Prozessor freigeben sich verz gern so ist folgende Anweisung auszuf hren Task Verz gern einfache Startbedingung RESUME Diese Anweisung ist quivalent der ununterbrechbaren Kombination der Anweisun gen einfache Startbedingung CONTINUE SUSPEND Nach Ausf hrung der Anweisung Task Verz gern ist die Startbedingung unwirksam d h die Ausf hrung ist einmalig Beispiel Die Task
76. che Variablen f hren zu Fehlermeldungen 6 3 2 Zuweisungen f r Strukturen Einer Struktur k nnen die Werte aller Komponenten einer zweiten Struktur in einer einzigen Anweisung zugewiesen werden Strukturzuweisung Names Struktur_1 Ausdruck Struktur_2 Dabei erhalten die Komponenten der Struktur_1 die Werte der entsprechenden Komponenten der Struktur_2 zugewiesen Die beiden Strukturen m ssen den gleichen Typ besitzen d h die Anzahl der Komponenten und deren Typen m ssen bereinstimmen eine implizite Typanpassung wie bei skalaren Variablen findet nicht statt Beispiel TYPE Typ_Messung STRUCT Zeit Zeitstempel Wert FLOAT 53 DCL Werkstueck STRUCT Ident CHAR 8 Qualitaet Typ_Messung DCL Messung Typ_Messung Werkstueck Qualitaet Messung 6 22 6 4 berlagerung von Datenstrukturen Um Programmierfehler weitgehend auszuschlie en pr ft der Compiler die typgerechte Verwendung von Variablen und Werten Bei Zuweisungen m ssen die Typen der linken und rechten Seite vertr glich sein siehe 6 3 Zuweisungen und beim Aufruf einer Prozedur m ssen die aktuellen Parameter mit den formalen Parametern typvertr glich sein siehe 8 2 Aufruf von Prozeduren Es gibt aber immer wieder Situationen in denen die geforderte Typvertr glichkeit strong typing hinderlich ist Als Beispiel kann hier ein Datenbankinterface genannt werden die Datenbank soll Anwenderdaten unterschiedlicher Typen mit untersc
77. chricht schlie en sich wechselseitig aus Zur Kontrolle solcher Koordinierungsarbeiten stehen zwei Typen von Synchronisier variablen die Sema und die Bolt Variablen zur Verf gung Soll der Zugriff auf gemeinsam benutzte Betriebmittel z B Daten Prozeduren Ger te koordiniert werden ordnet man diesen Betriebsmitteln jeweils eine Synchronisiervariable zu die benutzenden Tasks f hren sodann vor Benutzung eines Betriebsmittels eine Sperr Anweisung und nach Benutzung eine Freigabe Anweisung auf die zugeordnete Syn chronisiervariable aus Die Zuordnung von Synchronisiervariablen zu Betriebsmitteln erfolgt nicht durch PEARL Anweisungen sie ist gedacht und besteht nur darin da eine bestimmte Synchronisiervariable immer nur im Zusammenhang mit einem bestimmten Betriebsmittel benutzt wird Eine solche Zuordnung ist nicht auf Daten Prozeduren Ger te etc beschr nkt sie mu mitunter auch f r Programmabschnitte z B zur Erledigung von Teilaufgaben vorgenommen werden deren Abl ufe alle beendet sein sollen bevor ein bestimmter Programmabschnitt z B die Hauptaufgabe weiter ausgef hrt wird 9 3 1 Semaphor Variablen SEMA und Anweisungen REQUEST RELEASE TRY Sema Variablen k nnen als Werte nichtnegative ganze Zahlen besitzen Diese Zah len stellen die Zust nde frei oder gesperrt dar Null bedeutet den Zustand gesperrt die Sema Variable sperrt positive Zahlen bedeuten den Zustand frei Diese Zust nde k nnen n
78. de ren Teilausdr cken verkn pft werden 6 18 6 2 Operatorvereinbarung OPERATOR Die Operator Vereinbarung erlaubt neue Operatoren mit frei w hlbaren Bezeichnern zu definieren oder die Bedeutung der bisher voreingestellten Standard Operatoren zu erweitern Operator Vereinbarung OPERATOR Op Name Op Parameter Op Parameter RETURNS Resultat Attribut Prozedurk rper END Op Name Bezeichner rs 1 1 lt gt lt gt lt gt gt lt Bezeichner virt Dimensionsliste Parameter Typ IDENTICAL IDENT Resultat Attribut einfacher Typ Typ Referenz Die Bedeutung ist analog einer Funktionsprozedur vgl 8 Beispiel Der Standardoperator soll f r komplexe Zahlen erweitert werden PROBLEM TYPE Complex STRUCT Real FLOAT Imag FLOAT OPERATOR A Complex IDENT Complex IDENT RETURNS Complex DCL Sum Complex Sum Real A Real B Real A lmag B Imag RETURN Sum END Operator DCL ZZ Complex X Y Z FLOAT ZZ Z X Y Dieses Beispiel zeigt die M glichkeit verschiedene Operationen mit demselben Operator namen zu definieren wenn die Operanden unterschiedlichen Typs sind Wenn ein Ausdruck in dem solch ein Operatorname vorkommt ausgewertet wird wird die Operation ausgef hrt bei der die Parametertypen identisch zu den Typen der Operanden in dem
79. deutung wie im Fixed Format die Signifikanz s bezeichnet die Anzahl der signifikanten Ziffern d h die L nge der Mantisse E w d ist gleichwertig mit E w d d 1 und E w ist gleichwertig mit E w 0 1 Ausgabe Die Gleitpunktzahl wird rechtsb ndig in einem Feld der L nge w abgelegt Im brigen gilt 1 1 von 10 5 1 Ist O lt w lt d so erfolgt eine Fehlerreaktion Im Fall 0 lt w gt gt s wird die Mantisse so gew hlt da gilt 108 91 lt Mantisse lt 1059 F r w 0 wird kein Zeichen abgelegt der zugeh rige Ausdruck in der Aus drucksliste wird bergangen Ist d gt 0 so hat die Zahl die Form s d Ziffern d Ziffern E Exponent Der Exponent wird so bestimmt da die f hrende Ziffer der Mantisse ungleich Null ist sofern die Zahl von Null verschieden ist Ist d 0 so hat die Zahl die Form s Ziffern Exponent Ist w zu klein um eine Ziffer der Mantisse ausgeben zu k nnen wird das Zeichen ausgegeben gefolgt von einer Fehlerreaktion 10 24 2 Eingabe Es wird ein Feld der L nge w gelesen das eine dezimale Gleitpunktzahl in ei ner der m glichen Darstellungen vgl 5 3 enth lt Die Aussagen 2 2 bis 2 6 von 10 5 1 gelten analog Beispiele Wert Format Ausgabe 0 07 E 9 1 _7 0 02 2713 5 11 2 4 _27 13 02 2721 8 ___2E 03 10 5 3 Die Zeichenketten Formate A und S Zeichenketten Format Ausdruck Anzahl
80. dur des Moduls unter Angabe des Bezeichners benutzt oder gegebenenfalls ge ndert werden Ein in einer Task oder Prozedur vereinbartes Objekt ist nur in der betreffenden Task oder Pro zedur bekannt und kann nur dort benutzt oder gegebenenfalls ge ndert werden 4 2 4 2 Vereinbarungen Die Vereinbarung von Objekten erfolgt durch Deklaration oder durch Spezifikation 4 2 1 Deklaration DCL Die Deklaration dient dazu ein Objekt und seinen Namen einzuf hren d h bei Aus wertung der Deklaration wird Speicherplatz f r das Objekt angelegt und es kann ab diesem Zeitpunkt unter dem in der Deklaration angegebenen Namen darauf zugegriffen werden Auf Modulebene oder in einer Prozedur oder in einer Task darf ein Objekt nur einmal deklariert werden Ist ein Bezeichner X sowohl auf Modulebene als auch in einer Prozedur oder Task als Objekt deklariert so sind damit zwei verschiedene Objekte eingef hrt In der betreffenden Prozedur oder Task bezieht man sich unter dem Bezeichner X auf das dort lokal deklarierte Objekt au erhalb der Prozedur oder Task auf das auf Modulebene deklarierte Objekt siehe auch Punkt 4 3 Blockstruktur Beispiel PROBLEM DECLARE x FLOAT 1 Deklaration auf Modulebene DECLARE x FIXED 2 Deklaration auf Modulebene falsch PROCEDURE DECLARE x FIXED Deklaration in der Prozedur zul ssig 3 Zuweisung an die lokale Variable x END IP T TASK ge 5 gt Zuweisung an die auf Modulebene
81. e 7 ASAT Dekl ration 2 2 Aa re nn ne 7 A 3 4 2 Spezifikation und denttikation A 12 3 4 3 le A 13 4 4 Eu EE A 14 AA Liste der Schl sselw rter mit kurziormen A 20 Ab Sonstige Wortsymbole in DEA 22 1 Einf hrung PEARL steht f r Process and Experiment Automation Realtime Language es ist eine h here Programmiersprache die eine komfortable sichere und weitgehend rechnerunabh ngige Programmierung von Multitasking und Echtzeit Aufgaben erlaubt PEARL wurde in verschiedenen Ausbaustufen vom DIN genormt e DIN 66253 Teil 1 Basic PEARL 1981 Subset von Full PEARL e DIN 66253 Teil 2 Full PEARL 1982 e DIN 66253 Teil 3 Mehrrechner PEARL 1988 Auf Basis der Erfahrungen aus Hunderten von PEARL Projekten erarbeitete in den Jahren 1989 und 1990 ein Gremium aus PEARL Anwendern und Implementatoren die Definition von PEARL 90 vgl Stieger K PEARL 90 Die Weiterentwicklung von PEARL In Informatik Fachberichte 231 PEARL 89 Workshop ber Realzeit systeme Springer 1989 PEARL 90 entspricht Full PEARL wobei einige in der Praxis nicht ben tigte Sprach elemente entfallen Andererseits enth lt PEARL 90 einige fortschrittliche Erweiterun gen Der vorliegende Sprachreport beschreibt den Sprachumfang von PEARL 90 wobei er zun chst die wesentlichen Merkmale von PEARL 90 skizziert Anschlie end werden die Sprachelemente genau definiert Der Anhang enth lt eine Aufstel
82. e von Programmteilen die durch spontane Ereignisse oder zu bestimmten eingeplanten Zeiten angesto en werden sowie die Synchronisation solcher Abl ufe an bestimmten Programmstellen z B um Daten untereinander austauschen zu k nnen Zur Programmierung solcher Vorg nge werden in PEARL Tasks Interrupts und Synchronisationsgr en benutzt Eine Task ist der Ablauf eines Programmst cks unter der Kontrolle des Betriebs systems Dieses Programmst ck der Taskk rper besteht wie ein Prozedurk rper aus PEARL Vereinbarungen und Anweisungen Vor ihrer Benutzung mu eine Task unter Angabe ihres K rpers vereinbart werden dabei erh lt sie einen Bezeichner zu geordnet unter dem sie im folgenden beeinflu t wird z B gestartet oder verz gert werden kann Da den Tasks eines Programms normalerweise nur ein Prozessor zur Verf gung steht m ssen sie um dessen Benutzung konkurrieren aber auch um den Zugriff auf andere Betriebsmittel wie z B E A Ger te die gemeinsam benutzt werden m ssen Das Betriebssystem sollte die Betriebsmittel jedoch unter Ber cksichtigung der Dringlichkeit der Tasks vergeben Deshalb kann einer Task eine positive ganze Zahl als Priorit t zugeordnet werden wobei niedrigere Zahlen eine h here Priorit t bedeu ten Die so festgelegten Dringlichkeiten der Tasks werden vom Betriebssystem zur Steuerung der Betriebsmittelvergabe benutzt Besitzt z B eine Task den einzigen Prozessor und fordert dabei ein anderes
83. e zur Modifi kation und zur Benutzung der Daten gegenseitig ausschlie en dagegen ist simultane Benutzung der Daten durch mehrere Tasks erw nscht Diese Probleme lassen sich im Prinzip mit den bisher beschriebenen Sperr und Frei gabe Anweisungen l sen jedoch ist die Formulierung relativ kompliziert und die Laufzeit f r die Ausf hrung erheblich Deshalb werden weitere vier Anweisungen geboten die auf Variablen vom Datentyp BOLT arbeiten Eine Boltvariable kann die Zust nde gesperrt Sperre m glich oder Sperre nicht m glich annehmen je nachdem ob das zugeordnete Betriebsmittel exklusiv benutzt wird frei ist oder simultan benutzt wird Bolt Variablen werden z B so deklariert DCL Bezeichner Angabe BOLT Nach ihrer Deklaration hat eine Bolt Variable den Zustand Sperre m glich 9 22 Einem Betriebsmittel sei die Bolt Variable B zugeordnet Bei Eintritt in einen kriti schen Abschnitt zur exklusiven Benutzung dieses Betriebsmittels wird der Zugriff anderer Tasks durch Ausf hrung der Anweisung RESERVE gesperrt Die Freigabe bei Austritt aus diesem kritischen Abschnitt erfolgt durch die Anweisung FREE B Die kritischen Abschnitte zur simultanen Benutzung des Betriebsmittels werden durch Ausf hrung der Anweisung ENTER B bzw LEAVE B eingeleitet bzw abgeschlossen Die genauere Beschreibung der Wirkung dieser Anweisungen ber cksichtigt den Zustand und die Modifikation der Bolt Variablen Wirkung v
84. ebssysteme bieten jedoch gar nicht mehr die M glichkeit Unterbrechungseing nge anzusprechen da die Aufgaben der hard warenahen Ger te Steuerung und berwachung von speicherprogrammierbaren Steuerungen bernommen werden Die von PEARL f r Interrupts gebotenen M g lichkeiten sind jedoch auch f r sogenannte Software Interrupts nutzbar die ber einen eigenen Namen im Systemteil eingef hrt werden Das Benutzerhandbuch gibt Auskunft ber den Systemnamen und Nutzungsm glichkeiten 9 4 2 Interrupt Anweisungen TRIGGER ENABLE DISABLE Interrupts sind durch Ihre Vereinbarung zun chst gesperrt und m ssen durch eine Enable Anweisung freigegeben werden Will man die Wirkung eines freigegebenen Interrupts beispielsweise bei St rungen im technischen Proze unterdr cken d h sich auf ihn beziehende Startbedingungen f r Task Anweisungen sollen bei Eintritt des Interrupts unwirksam bleiben so ist zu diesem Zweck eine Disable Anweisung auszuf hren die ihrerseits durch Ausf hrung einer Enable Anweisung wieder aufgehoben werden kann Disable Anweisung DISABLE Names lnterrupt Enable Anweisung ENABLE Names interrupt Der G ltigkeitsbereich der Disable Anweisung beginnt beim berlaufen der Anwei sung und endet mit der Ausf hrung einer Enable Anweisung Beispiel MODULE SYSTEM Alarm INT PROBLEM SPC Alarm INTERRUPT Init TASK MAIN WHEN Alarm ACTIVATE Stoerdienst END Init 9 2
85. eiden folgenden Anweisungen quivalent READ Liste 2 Liste 3 Liste 4 READ Liste 2 4 10 14 Alle Positionsangaben werden vollst ndig ausgewertet bevor den Datenelementen Werte zugewiesen werden Beispiel Lies X von Position 3 und Y von Position 5 aus der Dation File ist gleich den Anweisungen READ X FROM File BY POS 3 READ Y FROM File BY POS aber nicht der Anweisung READ X Y FROM File BY POS 3 POS 5 Die Ausf hrung dieses Statements hat zur Folge da X von der Position 5 und Y von der darauf folgenden Position gelesen wird Die RST Angabe vgl 10 8 kann an beliebiger Stelle in der Positionsliste stehen Sie wirkt allerdings erst dann wenn sie ausgewertet wurde Eine Positionsliste wird von links beginnend der Reihe nach abgearbeitet Tritt hierbei ein Fehler auf so wird die Abarbeitung der E A Anweisung an dieser Stelle abgebrochen und die zu diesem Zeitpunkt g ltige Fehlerreaktion Fehlerzuweisung an eine RST Variable oder Sy stemreaktion durchgef hrt Diese Aussagen gelten analog f r die Write Anweisung Der Typ der Variablen in der Variablenliste der Read Anweisung mu mit dem Klas senattribut der angegebenen Datenstation vertr glich sein dies gilt analog f r die Ergebnisse der Ausdr cke in der Ausdrucksliste der Write Anweisung Die Variablen oder Ausdrucksliste der Read oder Write Anweisung kann fehlen wenn diese Anweisungen nur zum Positionieren in der angegebenen Datenstat
86. einbarung von Tasks TAGR nn 9 2 9 1 1 Referenzen auf Tasks REF TASK 9 3 9 1 2 Bestimmung von Task Adressen 9 4 9 1 3 Bestimmung von Task Priorit ten 9 5 9 2 Anweisungen zur Steuerung von Tasks nn 9 6 92 17 Statped NGUO T a T a a aa a a raa aA a aana aa arn a anaa AATE ENET ae 9 6 9 2 2 Starten einer Task 9 8 9 2 3 Beenden einer Task TERMINATE AAA 9 11 9 2 4 Anhalten einer Task GUSGPEND 9 11 9 2 5 Fortsetzen einer Task CONTINUE 9 11 9 2 6 einer Task RESUME manner 9 14 9 2 7 Ausplanen einer Task PREVENT 9 14 9 3 Synchronisierung von Tasks nn 9 16 9 3 1 Semaphor Variablen SEMA und Anweisungen REQUEST RELEASE TRY 9 17 9 3 2 Bolt Variablen BOLT und Anweisungen ENTER LEAVE RESERVE FREE 9 22 9 4 Interrupts und Interrupt ANWeiSUNgen nenn 9 25 9 4 1 Vereinbarung von Interrupts und Software lnterrupts 9 25 9 4 2 Interrupt Anweisungen TRIGGER ENABLE DISARBLEI 9 26 10 Eingabe und Ausgab r arniarna anaa aaner eai A aT aaa aSa T AET iay 10 1 EE EEN 10 1 10 2 Vereinbarung von Datenstationen DATION im Problemtei 10 3 10 2 1 AAA 10 3 10 2 2 Benutzerdefinierte Datenstationen
87. einen Digitaleingang angeschlossen Die Bedeutung der Anschlu stellen sei wie folgt Anschlu 1 8 Anschlu 9 12 Y Koordinate Anschlu 13 Z Koordinate Anschlu 14 16 weitere Parameter 6 5 Nach erfolgter Positionierung soll die Ist Position abgefragt und berpr ft werden MODULE SYSTEM RFZ DIGE 1 0 1 16 PROBLEM SPC RFZ DATION IN BIT 16 DCL Rfz DATION IN BIT 16 CREATED RFZ Steuerung TASK DCL Rfz_Zustand BIT 16 Xkoord BIT 8 Ykoord BIT 4 Zkoord BIT 1 Positionierung TAKE Rfz Zustand FROM Riz Xkoord Rfz_Zustand BIT 1 8 Ykoord Rfz_Zustand BIT 9 12 Zkoord Rfz_Zustand BIT 13 berpr fung der Ist Position END Steuerung Dieses Programmst ck kann flexibler programmiert werden indem zus tzlich die Anfangsposition der Teilketten Xkoord Ykoord und Zkoord in Variablen Anf_X Anf_Y Anf_Z festgehalten werden Steuerung TASK DCL Anf_X Anf_Y Anf_Z INV FIXED INIT 1 9 13 Xkoord Rfz_Zustand BIT AnfX Anf 7 Ykoord Rfz_Zustand BIT Anf_Y Anf Y 3 Zkoord Rfz_Zustand BIT Ant 4 END Steuerung Es sind auch Zuweisungen an Kettenausschnitte m glich au erdem d rfen sie als Operanden in Ausdr cken auftreten Teile eines Ausdrucks k nnen geklammert werden um die Reihenfolge der Ausdrucksberechnung vgl 6 3 zu beeinflussen z B 6 6 6 1 1 Monadische Operatoren Die fo
88. eisung hinter FIN ausgef hrt wird Die allgemeine Form der Leeranweisung lautet Leeranweisung 7 3 Die zweite Auspr gung der Anweisungsauswahl hat folgende Form Anweisungsauswahl 2 CASE Case Index ALT Case Liste Anweisung OUT Anweisung FIN Case Index Ausdruck mit Wert vom Typ FIXED oder CHAR 1 Case Liste Index Bereich Index Bereich Index Bereich Konstante Konstante Alle angegebenen Konstanten m ssen vom Typ des Case Index Ausdrucks sein CHAR 1 oder FIXED sind erlaubt Bei Ausf hrung der Anweisungsauswahl 2 wird der Case Index ausgewertet Ist der Wert in einer der angegebenen Case Listen enthalten so wird die zugeordnete Anweisungsfolge ausgef hrt anderenfalls wird die Anweisungsfolge hinter OUT sofern angegeben ausgef hrt Sofern die ausgew hlte Anweisungsfolge keinen Sprung aus der Anweisungsaus wahl enth lt wird anschlie end die Anweisung hinter FIN ausgewertet Beispiele DCL Operator chr CHAR 1 x y FIXED CASE Operator ALT ALT ALT ALT CASE ALT 0 CALL Error OUT FIN CASE chr ALT 2 CALL uppercase ALT a z CALL lowercase FIN CASE chr ALT U a e i o u CALL Vocal chr FIN 7 4 Eine gemischte Verwendung der beiden Auspr gungen der Anweisungsauswahl ist nicht vorgesehen So ist beispiel
89. eld so zu spezifizieren Feld FIXED IDENTICAL Auf Modulebene deklarierte Prozeduren werden vom Compiler reentrant f hig bersetzt so da sie von mehreren Tasks siehe 9 simultan benutzt werden k nnen Der rekursive Aufruf von Prozeduren ist f r alle auch f r die einge schachtelten Prozeduren erlaubt Da f r jede Task aber nur ein begrenzter Speicherbereich f r die lokalen Daten der aufgerufenen Prozeduren Stack zur Verf gung steht sollte der Programmierer im Sinne von sicheren Programmen die Rekursion vermeiden oder geeignet begrenzen 8 5 8 2 Aufruf von Prozeduren CALL Unterprogramm Prozeduren werden mit Hilfe des Schl sselwortes CALL oder nur mit ihrem Bezeichner aufgerufen Call Anweisung CALL Name Unterprogramm Prozedur Liste aktueller Parameter Liste aktueller Parameter Ausdruck Ausdruck Beispiel SPC Ausgabe PROC P FIXED N FIXED GLOBAL DCL Pos Nr FIXED Zuweisungen an Pos und Nr CALL Ausgabe Pos Nr Die Call Anweisung bewirkt da den formalen Parametern der bezeichneten Proze dur die angegebenen aktuellen Parameter in der Reihenfolge der Niederschrift zugeordnet werden und dann der Prozedurk rper ausgef hrt wird Anschlie end wird die auf die Call Anweisung folgende Anweisung ausgef hrt Der Aufruf einer Funktionsprozedur erfolgt nicht als selbst ndige Anweisung sondern innerhalb von Ausdr cken unter Angabe des Bezeichners und der aktuellen
90. emente e 2 dimensionale Gliederung DIM Anzahl Zeilen Anzahl Elemente oder DIM Anzahl Elemente e 1 dimensionale Gliederung DIM Anzahl Elemente oder DIM Die Gliederung gibt zudem an wieviele Datenelemente bei Ausf hrung einer Daten bertragungsanweisung mindestens bertragen werden e Fehlen die Angaben TFU und MAX so k nnen einzelne Datenelemente Zeilen oder Seiten bertragen werden 10 7 e Die Angabe TFU bedeutet da nur Zeilen oder Seiten bertragbar sind Ist die aktuelle Anzahl der Datenelemente in einer Daten bertragungs anweisung kleiner als die Anzahl der Datenelemente einer Zeile bzw Seite so wird diese Zeile bzw Seite implizit mit Leerzeichen ALPHIC Datenstationen oder Nullen BASIC Datenstationen aufgef llt Beispiel DCL Drucker DATION OUT ALPHIC DIM 60 120 TFU PUT PEARL TO Drucker Diese PUT Anweisung bewirkt da die f nf Zeichen R L in einer neuen Zeile von Drucker ausgegeben werden e TFU MAX entspricht TFU Die m glichen Zugriffsarten zu einer Datenstation bestimmt das Zugriffsattribut Zugriffsattribut DIRECT FORWARD FORBACK NOCYCL CYCLIC STREAM NOSTREAM DIRECT bedeutet da ausgehend von einem bertragenen Datenelement auf ein beliebiges Datenelement unter Angabe der Position des Elements siehe 10 4 10 5 direkt zugegriffen werden kann Die Attribute FORWARD und FORBACK bedeuten sequentiellen Zugriff d
91. en an Variablen f r ganze Zahlen nur Werte vom Typ ganze Zahl zugewiesen werden Au erdem m ssen die Typen der Operanden von dyadischen Operatoren vertr glich sein vgl 6 1 2 Deshalb stehen einige Operatoren zur Verf gung die eine gegebenenfalls n tige Wandlung des Typs von Objekten bewirken 6 8 Die folgende Tabelle beschreibt f r jeden aufgef hrten monadischen Typwand lungsoperator e welchen Typ der Operand haben darf e welchen Typ das Ergebnis der Operation hat und e die Bedeutung des Operators Dabei steht a f r irgendeinen Operanden e f r das Ergebnis g f r die Genauigkeit und Ig f r die L nge des Operanden und des Ergebnisses Syntax TOFIXED a TOFLOAT a TOBIT a TOCHAR a ENTIER a ROUND a Typ des Operanden a CHARACTER 1 BIT Ig FIXED g FIXED g FIXED FLOAT g FLOAT g Typ des Ergebnisses e FIXED 8 FIXED g FLOAT g BIT 19 CHARACTER 1 FIXED g FIXED g 6 9 Bedeutung e hat als Wert die ganze Zahl die dem Zeichen laut ASCII Code zugeordnet ist e hat als Wert die Interpretation des Bitmusters von a als ganze Zahl mit 9 19 hat als Wert die a entsprechende Gleitpunktzahl e hat als Wert die Interpretation des Bitmusters von a als Bitkette mit lg g e hat als Wert das Zeichen das der ganzen Zahl laut ASCII Code zugeordnet ist e gr te ganze Zahl kleiner gleich a e n chste g
92. en ist im selben Aufruf die Parameter bertragung von Tab an A korrekt da lediglich ein bisher noch nicht vereinbarter Zuweisungsschutz f r Tab entstanden ist Die Zuweisung R1 Pi ist unzul ssig da andernfalls der Zuweisungsschutz f r Pi durch erlaubte Zuweisungen an CONT R1 aufgehoben werden k nnte Die Zuweisung R2 Tab 5 7 ist dagegen zul ssig eine Wert nderung des Tabellenelementes ber CONT R2 ist nicht m glich 5 14 1 Benannte Konstanten INV Konstanten Mit dem Attribut INV deklarierte Objekte vom Typ FIXED BIT CHAR 1 CLOCK und DURATION behandelt der Compiler als benannte Konstanten Die Namen dieser Objekte d rfen nach ihrer Deklaration mit Initialisierung bei der Deklaration und Initialisierung weiterer Objekte benutzt werden Dabei d rfen sie sowohl als Dimensionsgrenzenangabe bei Felddeklarationen als auch in Initialisierungslisten eingesetzt werden Beispiel Ein berwachungsprogramm soll f r verschiedene Projekte mit unterschiedlichen Anzahlen von unterlagerten Steuerungen angepa t werden Die Anzahl der Nachrichtenpuffer und zugeh rigen Synchronisiervariablen vergl 9 3 lassen sich durch ndern der Konstante AnzahlSteuerungen leicht anpassen DCL AnzahlSteuerungen INV FIXED INIT 11 DCL NachrichtenPuffer AnzahlSteuerungen CHAR 100 DCL Pufferzugriff AnzahlSteuerungen BOLT F r ein weiteres Projekt mit einer anderen Anzahl von Steuerungen mu nur die benannte Konstante Anzah
93. en zu Feldern zusammengefa t werden d rfen 5 11 Strukturen Felder erlauben die Zusammenfassung skalarer Variablen des gleichen Typs unter einem Bezeichner die einzelnen Variablen werden mit diesem Bezeichner und ihrem Index angesprochen Bei vielen Automationsaufgaben insbesondere bei solchen mit dispositivem Charak ter m ssen jedoch Datenstrukturen beschrieben werden deren Komponenten unterschiedliche Typen besitzen Beispiel Die Beitr ge f r die Fernseh Nachrichtensendungen eines Tages sind auf Magnetaufzeich nungsger ten MAZ gespeichert die Beitragsfolge einer bestimmten Nachrichtensendung dieses Tages wird von Redakteuren mit Hilfe eines Rechners zusammengestellt der die entsprechenden MAZ steuert Dazu ist f r jeden Beitrag ein Datensatz n tig der z B folgende Struktur besitzt Identit tskennzeichen des Beitrages e Archivnummer e Hinweise ob der Beitrag bereits in der ersten zweiten oder dritten Nachrichtensendung dieses Tages gesendet wurde Anfangsposition des Beitrages auf dem Band Endeposition des Beitrages auf Band Kennzeichen ob Originalton vorhanden ist e L nge des gegebenenfalls zu speichernden Texts e Ein gegebenenfalls zu speichernder Text Solche Datenstrukturen lassen sich problemorientiert als Struktur beschreiben die obige Struktur Beitrag wird beispielsweise wie folgt vereinbart DCL Beitrag STRUCT Identnr Archiv FIXED schon_gesendet 3 BIT 1 A
94. erator dyadischer Operator I lt gt lt gt gt lt lt gt Bezeichner dyadischer Operator Operand Konstante Name Funktionsaufruf bedingter Ausdruck Dereferenzierung Kettenausschnitt Ausdruck Zuweisung PRIO NameSTask TASK NameSTask TRY 5 Name Bezeichner Index Index Name Index Ausdruck mit ganzer Zahl als Wert Funktionsaufruf Bezeichner Funktionsprozedur Liste aktueller Parameter Liste aktueller Parameter Ausdruck Ausdruck 1 bedingter Ausdruck IF Ausdruck vom Typ BIT 1 THEN Ausdruck ELSE Ausdruck FIN Dereferenzierung CONT NameS Referenz Funktionsaufruf Kettenausschnitt NameS Kette BIT CHAR CHARACTER konstanter FIXED Ausdruck konstanter FIXED Ausdruck Ausdruck Ausdruck konstanter FIXED Ausdruck Ausdruck Ausdruck 13 A 3 4 4 Anweisungen Anweisung Bezeichner Sprungziel IT unmarkierte Anweisung unmarkierte Anweisung Leeranweisung Zuweisung Block sequentielle Steueranweisung Echtzeit Anweisung Convert Anweisung EA Anweisung Leeranweisung Zuweisung Names Variable Dereferenzierung Kettenausschnitt Name Struktur Ausdruck Block BEGIN Vereinbarung Anweisung END Bezeichner Block sequentielle Steueranweisung bedingte Anwe
95. erer Tasks END Start Messen TASK PRIO 1 Taskk rper END Messen MODEND Nach dem Laden wird zuerst die Task Start gestartet 5 Variablen und Konstanten 5 1 Vereinbarung von Variablen und Konstanten Bei seiner Ausf hrung benutzt und ver ndert ein PEARL Programm u a ganze Zahlen Gleitpunktzahlen Bitketten Zeichenketten Uhrzeiten und Zeitdauern Diese Daten treten in Form von Konstanten oder als Werte von Variablen auf Konstanten identifizieren sich durch ihre Schreibweise und behalten ihren Wert w hrend des gesamten Programmablaufs Variablen bezeichnen Daten ihre Werte die sich w h rend des Programmablaufs ndern k nnen Der Wertebereich einer Variablen ist im allgemeinen auf eine Art von Daten z B Bit ketten beschr nkt die den Typ der Variablen bestimmt Bitketten Variablen haben nur Bitketten als Werte Dieser Typ mu bei der Deklaration oder Spezifikation einer Variablen zusammen mit ihrem Bezeichner festgelegt werden Beispiel DECLARE Schalter BIT Deklaration einer Variablen Schalter vom Typ Bitkette der L nge 1 SPECIFY Status 16 GLOBAL Spezifikation einer globalen Variablen Status vom Typ Bitkette der L nge 16 Eine Variable bezeichnet ein Datenelement z B eine ganze Zahl eine Bitkette usw im folgenden werden zun chst solche skalaren Variablen behandelt Die M glichkei ten skalare Variablen zu Feldern und Strukturen zusammenzufassen sind in 5 10
96. es G ltigkeitsbereichs der neuen Einplanung im Beispiel bis zum Ende der einplanenden Prozedur Verlassen einer Prozedur Task nach Ausf hrung einer Signal Reaktion Tritt innerhalb des G ltigkeitsbereichs der Einplanung einer Signal Reaktion dieses Signal ein so wird nach Ausf hrung der entsprechenden Signal Reaktion die Prozedur Task in der die Signal Reaktion eingeplant ist durch ein implizites RETURN TERMINATE verlassen wenn die Signal Reaktion nicht durch eine GOTO Anweisung verlassen wird G ltigkeit von Signal Einplanungen w hrend der Ausf hrung einer Signal Reaktion Ist die Signal Reaktion auf Prozedur Ebene eingeplant so sind w hrend der Ausf hrung dieser Signal Reaktion nur noch die ON Einplanungen g ltig die bereits vor dem Aufruf dieser Prozedur ausgef hrt wurden Ist die Signal Reaktion auf Task Ebene eingeplant sind w hrend der Ausf hrung dieser Signal Reaktion keine ON Einplanungen mehr g ltig G ltigkeit von Signal Einplanungen nach Verlassen einer Signal Reaktion durch GOTO Wird die Bearbeitung einer auf Prozedur bzw Task Ebene eingeplanten Signal Reaktion mit GOTO verlassen sind danach die bereits vor der Ausl sung des Signals ausgef hrten Signal Einplanungen insbesondere die des ausgel sten Signals wieder g ltig 112 Zum Test der f r ein Signal eingeplanten Reaktion kann der Eintritt eines Signals analog zum Eintritt eines Interrupts simuliert werden Induce Anweisung IN
97. exklusiv belegtes Betriebsmittel an so wird ihr vom Betriebssystem der Prozessor entzogen von den auf die Benutzung des Prozessors wartenden Tasks erh lt sodann diejenige mit der h chsten Priorit t den Prozessors zugeteilt Gleichprioren lauff higen Tasks wird der Prozessor nach der Round Robin Strategie zugeteilt Eine solche priorit tsgesteuerte Neuvergabe eines Prozessors findet jedesmal statt wenn eine seiner Betriebssystemfunktionen angesprochen wird z B bei Eintritt eines Interrupts oder bei der Durchf hrung von Anweisungen zur Steuerung von Tasks zur Synchronisierung zur Ein und Ausgabe usw 9 1 9 1 Vereinbarung von Tasks TASK Die Vereinbarung von Tasks erfolgt analog zur Deklaration von Prozeduren Im Gegensatz zu Prozeduren d rfen Tasks jedoch nur auf Modulebene also nicht innerhalb von Prozedur oder Taskk rpern vereinbart werden Au erdem sind Parameter unzul ssig Da in einem Taskk rper jedoch alle auf Modulebene vereinbarten PEARL Objekte benutzt und soweit m glich ver ndert werden d rfen kann der Datenaustausch mit einer Task durch Daten erfolgen die auf Modulebene vereinbart sind Insbesondere der Zugriff mehrerer Tasks auf dieselben Daten sollte jedoch mit den in 9 3 beschriebenen Mitteln sorgf ltig synchronisiert werden Der Datenaustausch durch E A Anweisungen ist ebenfalls m glich hier bernehmen die Ein und Ausgabe Funktionen bereits die Synchronisierung Beispiel Eine Task Protokoll h
98. g lichkeiten einzugebendes Format Wert von Datenelement Bitkette 11111 B 5 11111000 201 B2 3 10000100 235 B3 3 01001110 AB 4 2 10101011 10 28 10 5 5 Das Zeit Format T Zeit Format Feldweite Dezimalstellen Das Zeit Format beschreibt die externe Darstellung von Uhrzeitangaben Die Feld weite bedeutet die Gesamtzahl w der f r die Darstellung verf gbaren Zeichenposi tionen Dezimalstellen steht f r die Anzahl d der Ziffern f r die Sekundenbruchteile der Uhrzeit 1 Ausgabe Die Uhrzeit wird rechtsb ndig in einem Feld der L nge w in der Form Ziffer Ziffer Ziffer Ziffer Ziffer Ziffer pgz ausgegeben Ist die erste Ziffer eine Null wird sie durch ein Leerzeichen ersetzt Im Fall 0 werden Dezimalpunkt und Sekundenbruchteile nicht mit ausgegeben Nimmt der Ausgabewert nicht das ganze Feld ein so wird der linke Teil mit Leerzeichen aufgef llt 2 Eingabe Es wird ein Feld der L nge w eingelesen das eine Uhrzeit in einer erlaubten Darstellung enthalten mu siehe 1 Vorangehende oder nachfolgende Leerzeichen werden ignoriert Beispiele Wert Format Ausgabe 12 30 Uhr 5 2 Sek T 12 1 12 30 05 2 8 Uhr T 8 8 00 00 10 29 10 5 6 Das Dauer Format D Dauer Format D Feldweite Dezimalstellen Das Dauer Format beschreibt die externe Darstellung von Zeitdauern Der Wert der Feldweite bedeutet die Gesamtzahl w der f r die Darstellung verf gbare
99. g einer Fortsetzungsanweisung fortgesetzt werden siehe 9 2 5 9 2 5 Fortsetzen einer Task CONTINUE Eine angehaltene Task kann durch die folgende Anweisung sofort zu einer bestimm ten Uhrzeit nach einer bestimmten Zeitdauer oder nach Eintritt eines Interrupts fortgesetzt werden Task Fortsetzen einfache Startbedingung CONTINUE Priorit t einfache Startbedingung AT Ausdruck Uhrzeit AFTER Ausdruck Dauer WHEN Namesinterrupt Ist Name Task angegeben so bewirkt die Anweisung da sich die bezeichnete Task sofort Form ohne Startbedingung oder zu dem durch die Startbedingung bestimmten Zeitpunkt um den ihr zugeordneten Prozessor bewirbt gegebenenfalls mit der angegebenen Priorit t die dann die vereinbarte Priorit t ersetzt Die Form ohne Name Task bewirkt da sich die ausf hrende Task zu dem durch die Startbedingung bestimmten Zeitpunkt erneut um den Prozessor bewirbt gege benenfalls mit der angegebenen Priorit t die dann die vereinbarte Priorit t ersetzt Beispiel Die Task Erfassung soll eine Ausgabe veranlassen und sich erst nach Eintritt des Interrupts Weiter fortsetzen dann jedoch mit erh hter Priorit t Erfassung TASK PRIOS Erfassung von Daten WHEN Weiter CONTINUE PRIO5 Ausgabe SUSPEND Erfassung von Daten END Erfassung In Bild 9 1 sind die durch Ausf hrung von CONTINUE Anweisung m glichen Zustands berg nge einer Task graphisch verans
100. g einer Return Anweisung beendet Anders d rfen Funktionsprozeduren nicht verlassen werden Die Abarbeitung einer Unterprogramm Prozedur wird beendet durch e die Ausf hrung der Return Anweisung in der Form RETURN e oder die Ausf hrung der letzten Anweisung des Prozedurk rpers Der Prozedurk rper kann Vereinbarungen enthalten z B die Vereinbarungen lokaler Variablen die dann nur innerhalb des Prozedurk rpers bekannt sind Es k nnen aber 8 4 auch weitere Prozeduren sogenannte eingeschachtelte Prozeduren vereinbart werden die dabei auftretenden Aspekte der Eindeutigkeit von Namen die auch bei der Vereinbarung von Prozeduren in Taskk rpern auftreten sind in 4 3 im Zusammenhang mit Bl cken beschrieben Durch den Aufruf werden den spezifizierten formalen Parametern der Prozedur als aktuelle Parameter Variable oder Ausdr cke zugeordnet Auf welche Art von zwei M glichkeiten diese Zuordnung erfolgt wird dadurch bestimmt ob das Attribut IDENTICAL angegeben ist oder nicht Beide Arten werden in 8 2 Aufruf von Proze duren erkl rt Die Anzahl n der Kommata in der virtuellen Dimensionsliste gibt an da der Parame ter ein n 1 dimensionales Feld ist Formale Feldparameter virtuelle Dimensionsli ste ist vorhanden d rfen nur zusammen mit dem IDENTICAL Attribut spezifiziert werden Soll z B das eindimensionale Feld A 10 FIXED an eine Prozedur P mit dem entsprechenden formalen Parameter Feld bergeben werden so ist F
101. g von Signalen m ssen sie unter ihrem Benutzernamen im Problemteil auf Modulebene spezifiziert werden Beispiel IO_SIGNAL und ENDF sind Systemnamen c_error_open ist eine vordefinierte Konstante MODULE SYSTEM OPEN ERR IO_SIGNAL c_error_open EOF ENDF PROBLEM SPC ERR EOF SIGNAL MODEND Die allgemeine Form der Spezifikation von Signalen lautet SIGNAL Spezifikation SPECIFY SPC Bezeichner Angabe SIGNAL Global Attribut Die f r den Eintritt eines Signals vorgesehene Reaktion wird mit der folgenden Anweisung eingeplant Einplanung Signal Reaktion ON Name Signal RST Name Fehlervariable FIXED Signal Reaktion Signal Reaktion unmarkierte Anweisung Anstelle von unmarkierte Anweisung sind alle Anweisungen au er der Anweisung Einplanung Signal Reaktion zugelassen insbesondere also auch Bl cke oder Proze duraufrufe Die Anweisung Einplanung Signal Reaktion ist innerhalb von BEGIN und REPEAT Bl cken sowie als Signal Reaktion nicht erlaubt G ltigkeitsbereich der Einplanung einer Signal Reaktion Der G ltigkeitsbereich der Einplanung einer Signal Reaktion erstreckt sich von der Ausf hrung der entsprechenden ON Anweisung bis zum Ende der einpla nenden Task bzw Prozedur Falls eine weitere Einplanung f r dasselbe Signal z B in einer von der einplanenden Task aufgerufenen Prozedur durchlaufen wird verdeckt diese die vorhergehende Einplanung bis zum Ende d
102. gemeine Form des Klassenattributs lautet Klassenattribut ALPHIC BASIC Typ der bertragungsdaten Typ der bertragungsdaten ALL einfacher Typ zusammengesetzter Typ einfacher Typ Typ ganze Zahl Typ Gleitpunktzahl Typ Bitkette Typ Zeichenkette Typ Uhrzeit Typ Dauer zusammengesetzter Typ EA Struktur Bezeichner f r neuen Typ aus einfachen Typen EA Struktur STRUCT EA Strukturkomponente EA Strukturkomponente 10 5 EA Strukturkomponente Bezeichner Angabe einfacher Typ EA Struktur Bezeichner f r neuen Typ aus einfachen Typen Der Typ der bertragungsdaten darf also auch eine mehrfach strukturierte Struktur oder ein neu vereinbarter Typ sein wobei jedoch keine Komponente vom Typ Refe renz sein darf Beispiel TYPE Art_Struktur STRUCT Nr Anzahl FIXED Gewicht FLOAT DCL Art Datei DATION INOUT At Struktur Tab DATION INOUT FIXED Die Angabe ALL schlie t alle anderen M glichkeiten von Typ der bertragungsdaten ein Beispiel Auf einem Plattenspeicherger t mit dem Systemnamen PSP31 und dem Benutzernamen Platte sollen eine Datei File1 f r die Eingabe von FIXED Gr en und eine Datei File2 f r die Ein und Ausgabe von FLOAT Gr en mit rechnerinternem Format kreiert werden SYSTEM Platte PSP31 PROBLEM SPC Platte DATION INOUT ALL DCL File1 DATION IN FIXED CREATED Platte DCL File2 DATION INOUT FLOAT CREATED P
103. gen m ssen auf Modulebene erfolgen 9 24 9 4 Interrupts und Interrupt Anweisungen 9 4 1 Vereinbarung von Interrupts und Software Interrupts Ein Interrupt Unterbrechung ist eine Meldung des gesteuerten Prozesses ber einen Unterbrechungs Eingang des Interruptwerks an das Betriebssystem das nach Eintritt des Interrupts die vom Programmierer daf r vorgesehene Reaktion ein zuleiten hat z B Bei Eintritt des Interrupts Fertig soll die Task Nachschub gestartet werden Die zur Verf gung stehenden Unterbrechungseing nge eines Rechensystems sind im Benutzerhandbuch unter Angabe ihrer System Namen beschrieben Die hiervon f r ein PEARL Programm ben tigten Unterbrechungseing nge werden im Systemteil deklariert wobei ihnen Benutzernamen zugeordnet werden k nnen Unter diesen Benutzernamen werden sie dann als Interrupts im Problemteil spezifiziert um sie in den Task Steueranweisungen siehe 9 2 und den Interrupt Anweisungen benutzen zu k nnen Beispiel MODULE SYSTEM Fertig Hard_Int 7 Hard_Int ist der Systemname PROBLEM SPECIFY Fertig INTERRUPT Initialisierung TASK WHEN Fertig ACTIVATE Nachschub END Initialisierung Nachschub TASK PRIORITY2 Taskk rper END Nachschub Die allgemeine Form einer Interrupt Spezifikation lautet Interrupt Spezifikation SPECIFY SPC Bezeichner Angabe INTERRUPT IRPT Global Attribut 9 25 Die meisten modernen Computer und Betri
104. gnal Benutzernamen Vereinbarung Bezeichner Benutzername Bezeichner Systemname nngz index nngz Kanal nngz Position nngz Breite Bezeichner Benutzername Bezeichner SIGNAL Systemname Bezeichner Fehlernummer Bezeichner Fehlernummer nngz ganze Zahl ohne Genauigkeit nicht negativ Grundelemente Ziffer 0 1 2 3 4151 16 71 819 Buchstabe Bezeichner Buchstabe Buchstabe Ziffer _ 17 Konstante ganze Zahl Gleitpunktzahl Bitkettenkonstante Zeichenkettenkonstante Uhrzeitkonstante Dauerkonstante NIL ganze Zahl ganze Zahl ohne Genauigkeit Genauigkeit ganze Zahl ohne Genauigkeit Ziffer 011 Genauigkeit ganze Zahl ohne Genauigkeit Gleitpunktzahl Gleitpunktzahl ohne Genauigkeit Genauigkeit Gleitpunktzahl ohne Genauigkeit Ziffer Ziffer Ziffer Exponent Ziffer Exponent Exponent E Ziffer 5 Bitkettenkonstante 1 21 1 B2 Ziffer B2 B3 Ziffer B3 B4 Ziffer B4 B1 Ziffer 0 1 B2 Ziffer 0 1 2 3 B3 Ziffer 0 1 2 3 4 5 6 7 B4 Ziffer 0 1 2 3 4 5 6 7 8 9 a b cid e f A B C D EJ F Zeichenkettenkonstante Zeichen au er Apostroph Kontrollzeichen Sequenz Zeichen au er Apostroph Ziffer Buchstabe _ 1 II I l lt gt weitere druckbare
105. hiedlichen L ngen speichern Dazu ben tigen die Routinen nur die Adresse und die L nge der zu speichernden S tze Bei strenger Typpr fung m te f r jede Anwendung ein neues Datenbankinterface mit den gew nschten Anwendertypen programmiert werden PEARL 90 bietet zwei verschiedene syntaktische Auspr gungen f r die berlagerung unterschiedlicher Datentypen Beide Formen erlauben ausschlie lich die Typumwandlung von Adressen der Objekte bei der Zuweisung bzw Identifizierung Eine Datenkonvertierung findet in keinem Fall statt F r die Wandlung von Basistypen gibt es eine ausreichende Anzahl von Standardoperatoren in PEARL siehe 6 1 monadische und dyadische Operatoren 6 4 1 Der BY Mit dem BY TYPE Operator kann der Typ einer Variablen Adresse in einen beliebigen anderen Zeigertyp gewandelt werden Typwandlungs Ausdruck Name Typ Der Typ der Variablen Name wird durch den Operator BY TYPE in den angegebe nen Typ gewandelt Das Ergebnis des Typ Wandlungs Ausdrucks ist die Adresse von Name mit dem Typ Typ Diese Typwandlung ist eine Compiler interne Aktion die eine Fehlermeldung des Compilers verhindert Zur Laufzeit wird keine Aktion ausgef hrt insbesondere bleibt der Inhalt von Name unver ndert 6 23 Beispiel berlagerung von Datenobjekten bei der Zuweisung DCL var TYP_A DCL REF ptr var BY TYPE Die Adresse der Variablen va
106. hrung der Anweisung REQUEST S1 blockiert Falls keine andere Task eine Freigabe ausf hrt bleiben die Blockierungen st ndig bestehen Zur Vermeidung solcher Situationen k nnen bei Sperr Anweisungen Listen von Sema Variablen angegeben werden 9 20 Durch Ausf hrung der Anweisung REQUEST Name Sema wird die laufende Task angehalten falls f r eine der bezeichneten Sema Variablen der Zustand gesperrt notiert ist die Task wird erst wieder fortgesetzt wenn keine der Sema Variablen mehr sperrt Sperrt keine der bezeichneten Sema Variablen so wird die ausf hrende Task fortgesetzt nachdem die Werte dieser Sema Variablen um 1 erniedrigt wurden Die Anweisung RELEASE Name Sema Name Sema wirkt als ob f r jede der bezeichneten Sema Variablen in ungeteilter Form eine Freigabe Anweisung ausgef hrt w rde Durch folgende Programmorganisation lie e sich die Verklemmung im letzten Beispiel vermeiden Task 1 Task 2 REQUEST 51 52 REQUEST 51 52 1 Abschnitt 1 Abschnitt 2 Abschnitt 2 Abschnitt RELEASE S1 S2 RELEASE 51 52 Die Reihenfolge der Sema Variablen in den Listen ist ohne Bedeutung Nach dem TRY Operator darf nur eine einzelne Sema Variable angegeben werden die Angabe einer Liste von Sema Variablen ist nicht m glich Die allgemeine Formen f r die Deklarationen von Sema Variablen sowie Sperr und Freigabe Anweisungen lauten Sema Deklaration DECLARE DCL Bezeichne
107. ibt PEARL e A 2 ergibt PE Die Eingabe der Zeichenkette PEARL _ an eine CHAR 5 Variable Text im Format D A ist quivalent zu Text PEARL e A 5 ist quivalent zu Text PEARL e A 7 ist quivalent zu Text PEARL 2 ist quivalent zu Text PE_ _ Zeichenketten Format S Die Variable im Zeichenketten Format mu vom Typ FIXED sein 1 2 Ausgabe Identisch zum A Format der Wert der angegebenen Variablen bestimmt die Breite des Ausgabefeldes Eingabe Es werden maximal 19 L nge der zugeh rigen Zeichenkettenvariablen oder bis zum n chsten Satz Terminator Zeichen eingelesen ansonsten gelten die gleichen Regeln wie beim A Format Zus tzlich wird die Anzahl gelesener Zeichen ohne Satz Terminator der Variablen des S Formats zugewiesen Welche Satz Terminatoren f r welche Ger te definiert sind ist dem jeweiligen PEARL Benutzerhandbuch zu entnehmen 10 26 Beispiel Es sollen Kommandozeilen vom Terminal eingelesen werden DCL buffer CHAR 80 DCL length FIXED GET buffer FROM terminal BY Sc length Nach der Eingabe abc lt RETURN gt auf der Tastatur die Taste lt RETURN gt erzeugt einen Satz Terminator enth lt die Variable buffer die Zeichen abc und die Variable length den Wert 10 5 4 Das Bit Format B Bit Format B1 B2 B4 Ausdruck Anzahl Zeichen Das Bit Format beschreibt die externe Darstellung von Bitketten Bit Gr e
108. ichnerliste Bezeichner Bezeichner Zum besseren Verst ndnis oder zur genaueren Beschreibung der Definition einer Sprachform werden h ufig Elemente mit einem erl uternden oder einschr nkenden Kommentar versehen der von dem Element durch das Symbol getrennt wird Beispiel Ger teliste Bezeichner Ger t Bezeichner Ger t 3 6 4 Programmstruktur 4 1 Moduln Ein PEARL Programm setzt sich aus einem oder mehreren Teilen sogenannten Moduln zusammen die unabh ngig bersetzt werden Jeder Modul besteht aus einem Systemteil und oder einem Problemteil Die allgemeine Form eines PEARL Programms lautet PEARL Programm Modul Modul MODULE Bezeichner des Moduls Systemteil Problemteil Problemteil MODEND Systemteil SYSTEM Vereinbarung Problemteil PROBLEM Vereinbarung Im Systemteil werden die Verbindungen des projektierten Rechners mit den Elemen ten des technischen Prozesses Me wertgeber Stellglieder usw und der Stan dardperipherie Tastatur Monitor Drucker Platten B nder usw beschrieben Dabei kann der Programmierer den Eing ngen zum Interruptwerk und den in E A An weisungen im Problemteil angesprochenen Peripherieelementen frei w hlbare Namen zuordnen um sich im Problemteil auf diese rechnerunabh ngigen Namen beziehen zu k nnen Im Problemteil wird der Algorithmus zur L sung der gestellten Automationsaufgabe besch
109. igen aktuellen Wert ersetzt Beispiel Durch die Anweisung READ x FROM File1 BY POS 3 2 8 wird das achte Datenelement der zweiten Zeile der dritten Seite von File1 nach x eingelesen Folgt anschlie end die Anweisung READ x FROM File1 BY POS 4 5 so wird das f nfte Datenelement der vierten Zeile der dritten Seite von File1 nach x eingelesen 10 16 SOP Name Seite Name Zeile Name Spalte ist das Gegenst ck zu POS Mit SOP k nnen die aktuellen Positionen einer Dation den angegebenen Programmvariablen zugewiesen werden Es d rfen nicht mehr Namen in SOP angegeben werden als die angesprochene Dation Dimensionen hat Im folgenden stehe i f r den Wert des jeweiligen Ausdrucks X Ausdruck bezieht sich auf die erste Dimension der Gliederung und bestimmt das i te Element nach i positiv bzw vor i negativ dem aktuellen Element in der aktuellen Zeile der Datenstation 0 bezeichnet das aktuelle Element SKIP Ausdruck bezieht sich auf die zweite Dimension der Gliederung und bestimmt den Anfang das erste Element der i ten Zeile nach i positiv bzw vor i negativ der aktuellen Zeile in der aktuellen Seite der Datenstation i 0 bezeichnet die aktuelle Zeile PAGE Ausdruck bezieht sich auf die dritte Dimension der Gliederung und bestimmt den Anfang der Lien Seite nach positiv bzw vor i negativ der aktuellen Seite der Datenstation 1 0 bezeichnet die aktuelle Seite
110. ine Fehlermeldung Enth lt die Start Anweisung jedoch eine Start bedingung so wird die bezeichnete Task weitergef hrt und ihr erneuter Start entsprechend der Startbedingung eingeplant gepuffert wobei eine ggf bereits bestehende Einplanung durch die neue ersetzt wird Eine eventuell angegebene Priorit t berschreibt die in der Vereinbarung der bezeichneten Task angegebene Priorit t 9 8 Das nachfolgende Bild veranschaulicht die M glichkeiten eine Task direkt oder unter verschiedenen Startbedingungen zu starten Start per Anweisung Start per Interrupt 1 WHEN Namesinterrupt nein nein m verz gerter Start GEN verz gerter Start SC ja ja verz gerter AT Uhrzeit AFTER Dauer Start z B 12 00 00 z B 5 SEC nein periodischer Start periodischer ALL Dauer nein Endebedingung ws UNTIL Uhrzeit DURING Dauer Endekriterium z B 12 30 00 z B 20 MIN ACTIVATE Bezeichner Task 1 Nach dem Eintreffen des Interrupts wird die Task unter der zugeh rigen Start bedingung wieder neu eingeplant Die alte Einplanung wird unwirksam 9 9 Eine Task wird beendet wenn sie die abschlie ende END Anweisung ihres K rpers erreicht oder durch Ausf hrung einer auf sie bezogenen Anweisung zum Beenden von Tasks siehe 9 2 3 Beispiel Die Task Druckmessung soll alle 5 Sekunden den Druck in einem Beh lter messen und die Task Kontrolle bergeben steigt
111. ine niedrigere Zahl einen h heren Rang bedeutet Rang dyadische Operatoren Auswertungsreihenfolge 1 FIT LWB UPB von rechts nach links 2 gt lt REM von links nach rechts 3 lt gt SHIFT von links nach rechts 4 lt gt lt gt von links nach rechts 5 IS ISNT von links nach rechts 6 AND von links nach rechts 7 OR EXOR von links nach rechts Alle monadischen Standard Operatoren haben den Rang 1 Die Reihenfolge der Berechnung eines Ausdrucks wird au erdem in der blichen Weise durch die Klammerung von Teilen des Ausdrucks beeinflu t z B wird bei dem Ausdruck a b zuerst c d berechnet dann dieses erste Zwischenergebnis von b substrahiert und erst dann dieses zweite Zwischenergebnis mit a multipliziert Allgemein erfolgt die Berechnung eines Ausdrucks nach folgenden Regeln e Der Teilausdruck mit dem rangh chsten Operator wird zuerst berechnet sofern hierdurch nicht eine der beiden folgenden Regeln verletzt wird e Treten mehrere Operatoren des gleichen Rangs auf so erfolgt die Berech nung im Fall 2 gt Rang gt 7 von links nach rechts im Fall Rang 1 von rechts nach links Beispiel a b entspricht a b e Geklammerte Teilausdr cke werden nach obigen Regeln vollst ndig berech net bevor sie mit einem anderen Teilausdruck verkn pft werden Beispiel Die Striche zeigen welche Teilausdr cke bei der Berechnung gebildet und mit an
112. interlegt Protokolltexte in der Variablen Text die durch die Task Aus gabe an ein Terminal ausgegeben werden sollen Die erforderlichen Synchronisierungsan weisungen werden in 9 3 erl utert PROBLEM DCL Text CHAR 60 Protokoll TASK Text Protokolltext 27 END Protokoll Ausgabe TASK PUT Text TO Drucker BY LIST END Ausgabe Die allgemeine Form einer Task Deklaration lautet Task Deklaration Bezeichner TASK Priorit tsangabe MAIN Global Attribut Taskk rper END Priorit tsangabe PRIORITY PRIO ganze Zahl ohne Genauigkeit gr er Null Taskk rper Vereinbarung Anweisung 9 2 Wird in der Task Deklaration keine Priorit t angegeben wird die Priorit t 255 angenommen Die allgemeine Form einer Task Spezifikation lautet Task Spezifikation SPECIFY SPC Bezeichner Task TASK Gilobal Attribut Die mit MAIN gekennzeichneten Tasks werden beim Programm oder Systemstart gem ihrer Priorit t gestartet Alle MAIN Tasks m ssen in einem Modul deklariert sein Das Global Attribut wird in 4 4 erkl rt 9 1 1 Referenzen auf Tasks REF TASK Die Steuerung von allen Task Aktivit ten ist auch ber Referenzen auf Objekte vom Typ TASK m glich Die Deklaration von entsprechenden Referenzvariablen kann so geschehen Task Referenz Deklaration DECLARE DCL Bezeichner Angabe Dimensions Attribut Zuweisungsschutz REF TASK Global
113. ion benutzt werden sollen Dann mu allerdings eine Position angegeben sein Die Angaben in der Positionsliste beziehen sich auf die Gliederung der Datenstation und bestimmen die Datenelemente die bertragen werden sollen Deshalb m ssen die Werte der Ausdr cke vom Typ FIXED und mit der Gliederung vertr glich sein Bei Benutzung einer absoluten d h vom aktuellen Datenelement unabh ngigen Position mu die Datenstation das Zugriffsattribut DIRECT besitzen Eine relative Position bezeichnet den Abstand des zu bertragenden Datenelements vom aktuel len Datenelement in diesem Fall mu die Datenstation das Zugriffsattribut FORWARD FORBACK oder DIRECT haben 10 15 Im einzelnen haben die m glichen Positionsangaben folgende Bedeutung COL Ausdruck bezieht sich auf die erste Dimension von rechts der Gliederung und bestimmt das i te Element in der aktuellen Zeile der Datenstation wenn i gleich dem Wert des Ausdrucks ist LINE Ausdruck bezieht sich auf die zweite Dimension der Gliederung und bestimmt die i te Zeile in der aktuellen Seite der Datenstation wenn i gleich dem Wert des Ausdrucks ist Beispiel Der Gliederung 5 10 entspricht ein 2 dimensionales Feld 2 LINE 2 COL 2 POS AusdruckS Seite Ausdruck Zeile Ausdruck Spalte gibt die Position eines Datenelements in der n dimensionalen Gliederung 1 2 3 einer Datenstation an Fehlende Ausdr cke werden durch den jeweil
114. isung Anweisungsauswahl Wiederholung Exit Anweisung Prozedur Aufruf Return Anweisung Sprung Anweisung bedingte Anweisung IF Ausdruck vom Typ BIT 1 THEN Anweisung ELSE Anweisung Il FIN Anweisungsauswahl Anweisungsauswahl 1 Anweisungsauswahl 2 Anweisungsauswahl 1 CASE Ausdruck mit ganzer Zahl als Wert ALT Anweisung 7 OUT Anweisung ll FIN A 14 Anweisungsauswahl 2 CASE Case Index ALT Case Liste Anweisung IV OUT Anweisung ll FIN Case Index Ausdruck mit Wert vom Typ FIXED oder CHAR 1 Case Liste Index Bereich Index Bereich Index Bereich konstanter FIXED Ausdruck konstanter FIXED Ausdruck Zeichenkettenkonstante der L nge 1 Zeichenkettenkonstante der L nge 1 Wiederholung FOR Bezeichner Laufvariable FROM Ausdruck Anfangswert BY Ausdruck Schrittweite TO Ausdruck Endwert WHILE Ausdruck Bedingung REPEAT Vereinbarung Anweisung END Bezeichner Schleife Exit Anweisung EXIT Bezeichner Block oder Schleife Prozedur Aufruf CALL Name Unterprogramm Prozedur Liste aktueller Parameter Return Anweisung RETURN Ausdruck Sprung Anweisung Bezeichner Marke Echtzeit Anweisung Task Steueranweisung Task Koordinierungsanweisung Interrupt Anweisung Signal Anweisung Task Steueranweisung Task Starten Task Beenden
115. it k nnen Tasks mit Priorit ten versehen werden F r die Vereinbarung und das Zusammenspiel von Tasks untereinander und mit dem technischen Proze bietet PEARL folgende M glichkeiten e Vereinbarung von Tasks z B Nachschub TASK PRIORITY 2 Taskk rper Vereinbarungen Anweisungen END e Start Aktivierung z B ACTIVATE Nachschub e Beenden z B TERMINATE Drucken e Anhalten z B SUSPEND Statistik e Fortsetzen z B CONTINUE Statistik e Verz gern z B AFTER 5SEC RESUME 2 1 Entsprechend den Anforderungen von Automationsaufgaben k nnen manche dieser Anweisungen f r die wiederholte Ausf hrung eingeplant werden z B f r den Fall des Eintritts einer Uhrzeit den Ablauf einer Zeitdauer oder den Eintritt einer Meldung WHEN fertig ACTIVATE Nachschub Bedeutung Jedes Mal wenn der Interrupt fertig auftritt ist die Task Nachschub zu aktivieren Einplanungen k nnen auch den zeitlich periodischen Start vorsehen AT 12 0 0 ALL 1SEC UNTIL 12 15 0 ACTIVATE Messen Sofern nicht entsprechende Ma nahmen dies verhindern f hren verschiedene Tasks ihre Anweisungen unabh ngig voneinander aus Mitunter ist jedoch eine Synchronisierung zweier oder mehrerer Tasks erforderlich z B wenn eine Task Daten erzeugt und in einen Puffer ablegt Hier darf der Erzeuger nicht schneller arbeiten als der Verbraucher Komplexere Synchronisationsprobleme treten auf wenn z B eine Task exklusiv weil schreibend auf eine Da
116. lSteuerungen den aktuellen Gegebenheiten angepa t werden Die davon abh ngigen Speicherbereiche werden durch den Compiler angepa t Da der Compiler f r die benannten Konstanten keine Laufzeit Objekte erzeugt d rfen sie nicht einer Referenz Variablen zugewiesen werden Ebenso k nnen sie nicht als aktueller Parameter einer Prozedur benutzt werden wenn der formale Parameter mit dem IDENTICAL Attribut oder als Referenzvariable spezifiziert wurde vergl 8 2 5 28 5 14 2 Konstante Ausdr cke vom Typ FIXED An allen Stellen an denen der Compiler Konstanten erwartet d rfen auch konstante Ausdr cke stehen Diese Ausdr cke d rfen als Operanden nur Konstanten auch benannte Konstanten enthalten Sie werden durch den Compiler ausgewertet und das Ergebnis an den entsprechenden Stellen eingesetzt konstanter Ausdruck Gleitpunktzahl Dauerkonstante konstanter FIXED Ausdruck konstanter FIXED Ausdruck Term Term Faktor Z REM Faktor 1 Faktor ganze Zahl konstanter FIXED Ausdruck TOFIXED ZeichenkettenkonstanteSder L nge 1 Bitkettenkonstante Bezeichner benannte Konstante FIT konstanter FIXED Ausdruck Konstante Ausdr cke vom Typ FIXED k nnen z B an folgenden Stellen verwendet werden Angabe von Dimensionsgrenzen bei Felddeklarationen Genauigkeitsangaben bei FIXED und FLOAT Objekten L ngenangaben bei CHAR
117. latte Das Quelle Senke Attribut und Klassenattribut m ssen f r jede Datenstation verein bart werden Nicht so die nun beschriebenen Attribute f r die Gliederung und die Zugriffsm glichkeiten einer Datenstation 10 6 Die kleinste Datenmenge die von oder zu einer Datenstation bertragen wird hei t Datenelement Ihr Typ ist durch das Klassenattribut bestimmt Mehrere Daten elemente k nnen zu einem Satz synonym Zeile und mehrere S tze zu einem Abschnitt synonym Seite zusammengefa t werden d h die Gesamtheit der Elemente bildet ein 1 2 oder 3 dimensionales Feld Dazu ist im Gliederungsattribut die Anzahl der Datenelemente einer Zeile die Anzahl der Zeilen einer Seite und die Anzahl der Seiten mitzuteilen Gliederung DIM pgz pgz pgz 1 Dabei bezeichnet die jeweils am weitesten rechts stehende pgz Angabe immer die Anzahl der Elemente je Zeile die n chste gegebenenfalls fehlende pgz Angabe die Anzahl der Zeilen je Seite und die dann folgende gegebenenfalls fehlende pgz Angabe die Anzahl der Seiten Die Angabe bedeutet da die entsprechende Anzahl nicht begrenzt ist Beispielsweise kann eine Datenstation Drucker mit 120 Zeichen je Zeile 60 Zeilen je Seite und beliebig vielen Seiten die Gliederung 60 120 erhalten M glich sind die folgenden Kombinationen e 3 dimensionale Gliederung DIM Anzahl Seiten Anzahl Zeilen Anzahl Elemente oder DIM Anzahl Zeilen Anzahl El
118. lb der deklarierten Kettenl nge liegen 6 4 Das Ergebnis eines solchen Kettenausschnitt Ausdrucks hat den Typ BIT Ig bzw CHARL Ig wobei Ig Ende Anfang 1 gilt Bei Bitketten mu der Compiler die L nge lg errechnen k nnen damit weitere Typpr fungen bei der Verwendung des Kettenausschnitt Ausdrucks m glich sind Folgende F lle werden vom Compiler unterschieden 1 Name CHAR Ausdruck 2 Name BIT CHAR konstanter FIXED Ausdruck konstanter FIXED Ausdruck 2 3 Name CHAR Ausdruck1 Ausdruck2 FIXED Konstante 4 4 Name CHAR Ausdruck Anfang Ausdruck Ende Im Fall 1 ist die L nge des Kettenausschnitts gleich 1 Ausdruck bezeichnet die Bit Nr bzw die Character Position Im Fall 2 errechnet der Compiler die Werte der beiden konstanten Ausdr cke und ermittelt daraus die L nge lg Konstante Ende Konstante Anfang 1 Im Fall 3 m ssen Ausdruck1 und Ausdruck2 gleich sein Dann ergibt sich die L nge aus der additiven Konstanten lg FIXED Konstante 1 Im Fall 4 kann der Compiler die L nge des Kettenausschnitts nicht berechnen Dies ist f r Bitketten nicht erlaubt Der Fall 4 liefert eine variable Zeichenkette d h die L nge ist erst zur Laufzeit berechenbar Variable Zeichenketten k nnen au er in Verbindung mit dem CAT Operator berall benutzt werden Beispiel Ein Regalf rderzeug sei ber 16 aufeinanderfolgende Stellen an
119. lenliste bestimmt nicht durch die Format Positions Liste Sind mehr Formate als Variablen vorhanden so werden die berz hligen Formate ignoriert Sind noch Variablen vorhanden wenn die Format Positionsliste schon abgearbeitet ist so wird wieder mit dem ersten Element der Format Positionsliste begonnen In jedem Fall ist die ber tragung beendet wenn die Variablenliste ersch pft ist Diese Ausf hrungen gelten analog f r die Put Anweisung wenn Variable durch Ausdruck ersetzt wird Die Datenstation mu das Klassenattribut ALPHIC eine Gliederung und ein Zugriffs attribut besitzen Die Wahl des Zugriffsattributs schr nkt evtl die Positionierungs m glichkeiten ein vgl 10 4 Die Format Positionsliste besteht aus Format und Positionsangaben Zur Verein fachung der Schreibweise d rfen in der Liste Wiederholungsfaktoren benutzt werden Beispielsweise l t sich die Format Positionsliste X 2 F 12 3 2 F 12 3 X 2 F 12 3 10 21 einfacher so schreiben 3 2 F 12 3 Die folgende Tabelle zeigt die zugelassenen Zuordnungen zwischen Formaten und den Typen der zu bertragenden Datenelemente Format Datentyp Fixed Format FIXED FLOAT Float Format FIXED FLOAT Bit Format BIT Zeichenketten Format CHARACTER Zeit Dauer CLOCK Dauer Format DURATION List Format alle angegebenen Datentypen Im einzelnen haben die Formate folgende Form und Bedeutung die Positionsanga ben wurden in 10 4 erkl rt
120. lgende Tabelle beschreibt f r jeden aufgef hrten monadischen Operator e welchen Typ der Operand haben darf e welchen Typ des Ergebnis der Operation hat und e die Bedeutung des Operators Dabei steht a f r irgendeinen Operanden g f r die Genauigkeit Ig f r die L nge des Operanden und e f r das Ergebnis der Operation Syntax Typ des Typ des Bedeutung Operanden a Ergebnisses e FIXED g FIXED g keine FLOAT 9 FLOAT 9 DURATION DURATION FIXED g FIXED g Umkehrung des FLOAT 9 FLOAT 9 Vorzeichens von a DURATION DURATION NOT a BIT Ig BIT Ig Umkehrung aller Bitstellen von a Beispiel DCL X Y FLOAT B BIT 4 3 1001 Y X Y hat den Wert 3 B NOTB B hat den Wert 0110 B 6 7 Syntax ABSa SIGN a LWBa UPBa Typ des Operanden a FIXED g FLOAT g DURATION FIXED g FLOAT g DURATION Feld Feld CHAR o Typ des Ergebnisses e FIXED g FLOAT g DURATION FIXED 1 FIXED 31 FIXED 31 FIXED 15 Bedeutung Absolutbetrag von 1 f r a gt 0O ei 0 f r a 0 1 f ra lt O e untere Grenze der ersten Dimension von a obere Grenze der ersten Dimension von a 19 Im allgemeinen m ssen bei einer Zuweisung der Typ der links vom Zuweisungs zeichen angegebenen Variablen und der Typ des Wertes des zugewiesenen Ausdrucks bereinstimmen vgl Punkt 6 3 Insbesondere d rf
121. lung aller Datentypen und ihrer Verwendungs m glichkeiten eine Beschreibung der verf gbaren vordefinierten Funktionen eine vollst ndige Darstellung der Syntax da in den einzelnen Abschnitten aus didaktischen Gr nden nicht immer alle syntaktischen M glichkeiten beschrieben werden sowie eine Liste aller Schl sselw rter 1 1 2 Wesentliche Merkmale von PEARL 2 1 Multitasking Eigenschaften Ein DV Programm zur on line Steuerung oder Auswertung eines technischen Prozesses mu m glichst schnell auf spontane Meldungen des Prozesses oder zeitliche Ereignisse reagieren k nnen Deshalb gen gt es meist nicht die einzelnen Programmschritte sequentiell d h in zeitlich unver nderlicher Reihenfolge anzuordnen und durchzuf hren Vielmehr mu die mehr oder weniger komplexe Automationsaufgabe problemgerechte Teilaufgaben mit unterschiedlicher Dringlichkeit zerlegt und die Programmstruktur dieser Aufgabenstruktur angepa t werden Dabei entstehen selbst ndige Programmteile f r Teilaufgaben die zeitlich sequentiell innerhalb anderer Aufgaben bearbeitet werden k nnen z B Prozeduren es entstehen aber auch selbst ndige Programmelemente f r Teilaufgaben die aufgrund eines zeitlich nicht unbedingt festgelegten Ansto es z B einer St rmeldung aus dem Proze sofort zeitlich parallel zu allen anderen Aufgaben bearbeitet werden m ssen Die Ausf hrung eines solchen Programmelements wird Task genannt zur Festlegung ihrer Dringlichke
122. ma Variable frei ist f hrt der Operator eine REQUEST Anweisung aus und liefert den Wert 1 B als Ergebnis Falls die Sema Variable bereits den Zustand gesperrt hat wird keine REQUEST Anweisung ausgef hrt und der Wert 0 B geliefert Die laufende Task wird bei der Ausf hrung des TRY Operators nicht blockiert Beispiel In einem Dialogsystem darf die Funktion function_1 nur einmal aktiv sein die Task Dialog soll aber nicht blockiert werden PROBLEM DCL func_1 GEMA Dialog TASK IF TRY func_1 THEN Sema Variable func_1 hatte den Zustand frei CALL function_1 Funktion ausfuehren RELEASE func_1 Sema wieder freigeben ELSE Sema Variable func_1 hatte den Zustand gesperrt PUT Funktion 1 zur Zeit nicht moeglich TO Terminal FIN END Dialog Durch fehlerhafte Synchronisierungen k nnen sich Tasks gegenseitig st ndig blockieren eine solche Systemverklemmung engl deadlock k nnte beispielsweise durch folgende Programmorganisation entstehen Task T1 Task 2 REQUEST 51 REQUEST S2 1 Abschnitt 1 Abschnitt REQUEST S2 REQUEST S1 2 Abschnitt 2 Abschnitt RELEASE S2 RELEASE Si RELEASE 51 RELEASE S2 Befinden sich die Tasks T1 und T2 zugleich in ihrem ersten Abschnitt so entsteht eine Ver klemmung denn einerseits wird T1 durch die Ausf hrung der Anweisung REQUEST S2 blockiert weil T2 bereits die Sperre mit der Sema Variablen S2 aufgebaut hat und anderer seits wird T2 durch Ausf
123. mes Variable Ausschnitt Name Variable Ausschnitt il FROM NameS Dation BY Position Position TI Write Anweisung WRITE Ausdruck Ausschnitt Ausdruck Ausschnitt TO Name Dation BY Position Position Ausschnitt Name Feld Index Index Index Index Ausdruck mit ganzer Zahl als Wert Position absolute Position relative Position RST Name Fehlervariable FIXED absolute Position COL LINE Ausdruck POS Ausdruck Ausdruck Ausdruck SOP Name relative Position X SKIP Ausdruck ADV Ausdruck Ausdruck Ausdruck Bei der Eingabe mit der Read Anweisung werden die angesteuerten Datenelemente nacheinander gelesen und den Variablen in der Variablenliste korrespondierend zu gewiesen Die Zuweisung zu den Variablen erfolgt dabei nach den allgemeinen Re geln f r Zuweisungen Ist ein Element der Variablenliste ein Feld so werden die angesteuerten Daten zeilenweise zugewiesen ist es eine Struktur so werden die Daten den Strukturkomponenten in der durch die Strukturvereinbarung festgelegten Reihenfolge zugewiesen Der einfacheren Schreibweise wegen k nnen in der Variablenliste aufeinanderfol gende Elemente der letzten Dimension eines Feldes in Form eines Ausschnitts angegeben werden Sei etwa Liste ein Feld mit zehn Elementen Liste 1 Liste 10 dann sind die b
124. mms werden aus Zeichen des folgenden Zeichensatzes erstellt Allerdings d rfen Zeichenkettenkonstanten und Kommentare jedes Zeichen enthalten das ISO 646 und nationale Varianten von ISO 646 zulassen 3 1 Zeichensatz Der Zeichensatz von PEARL ist eine Teilmenge des ISO 7 Bit Zeichensatzes ISO 646 Er enth lt e die Gro buchstaben A bis Z e die Kleinbuchstaben bis z e die Ziffern 0 bis 9 und e die Sonderzeichen Unterstrich Zwischenraum zur Verdeutlichung wird manchmal auch der Unterstrich _ benutzt Ausrufungszeichen Beginn des Zeilenkommentars Apostroph runde Klammer auf runde Klammer zu Komma Punkt Semikolon Doppelpunkt Pluszeichen z B f r Addition Vorzeichen Minuszeichen z B f r Subtraktion Vorzeichen Stern z B f r Multiplikation Schr gstrich z B f r Division Gleichheitszeichen z B f r Zuweisung Kleiner Zeichen Gr er Zeichen Strukturklammerungszeichen Strukturklammerungszeichen R ckschr gstrich f r Steuerzeichen in Zeichenketten DI xw aaa mm A II x 1 nn Die folgenden Zeichenkombinationen werden jeweils als eine Einheit zusammen gesetztes Symbol interpretiert Ke Exponentiationssymbol e Kommentar Beginn Kommentar Ende Symbol f r ganzzahlige Division Gleich Symbol Ungleich Symbol lt Kleiner Gleich Symbol gt _ Gr er Gleich Symbol lt gt Cyclic Shift Symbol gt lt Verkettungssymbol N Einleitung einer
125. n und zwar vgl 5 4 in bin rer Form durch das Format B Ausdruck in Form von Tetraden durch das Format B2 Ausdruck in Form von Oktaden durch das Format Ausdruck hexadezimaler Form durch das Format 4 Ausdruck Der Wert des Ausdrucks im Bit Format bedeutet die Gesamtzahl w der f r die Darstellung verf gbaren Zeichenpositionen 1 Ausgabe Ist der Ausdruck im Format angegeben so wird die Bitkette in der oben dar gestellten Form linksb ndig in ein Feld der L nge w ausgegeben Besteht sie aus mehr als w Zeichen wird sie rechts abgeschnitten besteht sie aus weni ger als w Zeichen wird das Feld rechts mit Nullen aufgef llt Ist w nicht ange geben und hat das Bit Format also die Form B B1 B2 B3 B4 so wird die Kette in ein Feld ausgegeben dessen L nge gleich der Kettenl nge ist 10 27 2 Eingabe Der Ausdruck mu angegeben werden Es wird ein Feld der L nge w eingelesen das eine Bitkette der oben beschriebenen Form enthalten mu Das Feld darf nicht ausschlie lich aus Leerzeichen bestehen Der Kette vorangehende oder nachfolgende Leerzei chen werden ignoriert Die Aussagen zur Eingabe mit dem A Format gelten sinngem Beispiele Die Ausgabe der Bitkette 0101110 im Format e B 5 ergibt 01011 e B2 3 ergibt 113 e B3 3 ergibt 270 e 4 2 ergibt 5 Die Variable Bitkette sei vom Typ BIT 8 f r die Eingabe ergeben sich etwa folgende M
126. n Beispiel Typ Struktur und Typ Dation werden in 5 11 und 10 2 definiert Typ Prozedur und TASK in 8 3 und 9 1 1 Typ VOID und REF CHAR in 6 4 2 und 5 9 1 Zeigt eine Referenz Variable R auf ein Feld mit den Elementen F i j oder auf eine Struktur S mit den Komponenten S Ki so werden ausgehend von R die Elemente von F oder die Komponenten von S ohne Benutzung von CONT mit R i j K oder R Ki angesprochen Eine Referenz Variable wird au erdem implizit dereferenziert e wenn sie aktueller Parameter eines Prozeduraufrufs ist und der zugeh rige formale Parameter keine Referenz Variable ist e wenn sie als Operand eines dyadischen Operators benutzt wird sofern dieser nicht gerade f r Werte von Referenz Variablen definiert ist wie IS siehe un ten Beispiel DCL rk REF FIXED k FIXED rk k k 2 k rk 1 aequivalent k k 1 Um beispielsweise das Ende einer Kette zu kennzeichnen steht eine Referenz Va riable NIL Nullzeiger zur Verf gung die einen bestimmten konstanten Wert besitzt Zum Vergleich der Werte von Referenz Variablen k nnen die dyadischen Operatoren IS oder ISNT benutzt werden IS ISNT liefert das Ergebnis 1 B 0 B wenn die beiden angegebenen Referenz Variablen denselben verschiedene Wert e besitzen andernfalls das Ergebnis 0 B 1 B 5 11 Beispiel DCL Nextauftrag REF Typ_Auftrag IF Nextauftrag IS NIL THEN FIN 5 9 1 Variable Zeichenkettenzeiger REF C
127. nd L ngen nicht durch die Schreibweise bei Konstanten oder die Deklaration bei Variablen festgelegt ist L ngenvereinbarung LENGTH FIXED FLOAT Genauigkeit CHARACTER CHAR L nge Beispiel PROBLEM LENGTH FIXED 15 LENGTH FLOAT 53 DCL A FIXED A hat den Typ FIXED 15 X FLOAT X hat den Typ FLOAT 53 Y FLOAT 23 Y hat den Typ FLOAT 23 F r eine L ngenvereinbarung gelten die gleichen G ltigkeitsregeln wie f r Variablendeklarationen siehe 4 3 Blockstruktur 5 7 Uhrzeiten CLOCK Eine Uhrzeitkonstante besteht aus einer positiven ganzen Zahl f r die Stunden angabe einer ganzen Zahl zwischen 0 und 59 f r die Minutenangabe und einer Gleit punktzahl zwischen 0 und 59 999 f r die Sekundenangabe jeweils durch Doppel punkt getrennt Die Stundenangabe wird modulo 24 interpretiert Beispiel 11 30 00 bedeutet 11 30 Uhr 15 45 3 5 bedeutet 15 45 Uhr und 3 5 Sekunden 25 00 00 bedeutet 1 Uhr Variablen f r Uhrzeiten werden mit dem Typ Attribut CLOCK vereinbart Typ Uhrzeit CLOCK Beispiel DCL Zeit CLOCK Zeit 12 30 00 5 8 5 8 Zeitdauern DURATION Eine Dauerkonstante setzt sich aus einer Stundenangabe Minutenangabe und Sekundenangabe zusammen wobei einzelne dieser Angaben fehlen k nnen Eine Stundenangabe besteht aus einer ganzen Zahl und der Zeichenfolge HRS eine Minutenangabe aus einer ganzen Zahl und der Zeichenfolge MIN eine Seku
128. nd der Anzahl der angegebenen Alternativen so wird die zugeordnete Anweisungsfolge ausgef hrt anderenfalls wird die zugeordnete Anweisungsfolge hinter OUT sofern angegeben ausgef hrt Sofern die ausgew hlte Anweisungsfolge keinen Sprung aus der Anweisungs auswahl enth lt wird anschlie end die Anweisung hinter FIN ausgewertet 7 2 Beispiel Das obige Problem l t sich folgenderma en programmieren Versorgung TASK PRIO7 Steuerung PROC Nr FIXED Geraet Auftrag BIT 8 Auftragsinf RETURNS FIXED Prozedurk rper zur Erledigung des Steuerauftrags END Steuerung Bildung eines Auftrags f r das Ger t mit dem Index Nr nochmal CASE ALT ALT ALT ALT OUT FIN Ende END In diesem Beispiel wird die Leeranweisung benutzt Sie besteht nur aus einem Semikolon und hat keine Auswirkungen Nach dem Schl sselwort ALT mu mindestens eine Anweisung folgen dies darf auch die Leeranweisung sein Sie ist ohne Wirkung und nur in bedingten Anweisungen und Anweisungsauswahlen von Interesse In dem Beispiel wird durch die Leeranweisung erreicht da im Erfolgsfall Auftrag Steuerung Nr Auftrag Auftrag erledigt Auftragsinf falsch CALL Fehler 2 GOTO Ende Geraet tot ACTIVATE Geraetausfall PRIO 2 CALL Fehler 3 GOTO Ende Geraet fkt falsch CALL Geraetkontrolle nochmal Ergebnis ausser Bereich CALL Fehler 5 Versorgung erledigt direkt die Anw
129. nden angabe aus einer Gleitpunktzahl und der Zeichenfolge SEC Beispiele 5 MIN 30 SEC bedeutet 5 Minuten und 30 Sekunden 05 SEC bedeutet 50 Millisekunden 5HRS 10 SEC bedeutet 5 Stunden und 10 Sekunden Die ganzen Zahlen und Gleitpunktzahlen in Zeitkonstanten d rfen keine Genau igkeitsangaben enthalten Variablen f r Zeitdauern m ssen mit dem Typ Attribut DURATION vereinbart werden Typ Dauer DURATION DUR Beispiel DCL Verzoegerung DUR Verzoegerung 0 1 SEC 5 9 5 9 Referenzen REF F r die indirekte Adressierung stehen in PEARL sogenannte Referenz Variablen Zeigervariablen Pointer zur Verf gung Referenz Variablen haben als Werte die Namen von Variablen sie zeigen auf Variablen Analog zu den bisher eingef hrten Variablen ist dabei der Wertebereich einer Referenz Variablen auf einen Typ von Variablen beschr nkt der bei der Vereinbarung der Referenz Variablen angegeben wird siehe jedoch 5 13 berlagerung von Datenstrukturen Auf den Wert einer Referenzvariablen die referierte Variable bezieht man sich mittels des monadischen Operators CONT von content dieser Vorgang wird Dereferenzierung genannt Beispiele DCL 1 FIXED x FLOAT rk1 rk2 REF FIXED Fixed Referenz Variable x REF FLOAT Float Referenz Variable kl zk rki zeigt auf ki sl rki zeigt auf rk2 rk2 zeigt auf Zeigerzuweisung rx zeigt auf x rx K
130. ne r externe n Darstellung Diese Art der Daten bertragung wird f r den Dateiverkehr sequentielle und direkte Zugriffe erlaubt sowie f r die Ubertragung von Proze daten eingesetzt Beispiele READ Stammsatz FROM Stammdatei BY POS 10 WRITE Datensatz TO Logbuch TAKE Me wert FROM TemperaturSensor SEND Ein TO Motor Die bertragung der Daten mit Formatsteuerung d h mit Umwandlung zwischen internem Format und der externen Darstellung mit den auf der Datenstation zur Verf gung stehenden M glichkeiten Damit ist z B die Darstellung in den Zeichen des Zeichensatzes der Daten station gemeint Beispiele PUT Ereignis TO Drucker BY F 5 GET Quittung FROM Terminal Die Namen der Datenstationen sind frei w hlbar Dies wird durch die Aufteilung eines PEARL Programms in rechnerabh ngige und weitgehend rechnerunabh ngige Teile erreicht Zur Ansprache spezieller Ger te bietet der Compiler ein Treiber Interface an das der PEARL Programmierer selbst Ger tetreiber anschlie en kann 2 3 2 3 Programmstruktur Programmsysteme zur L sung komplexer Automationsaufgaben sollten modular aufgebaut werden PEARL kommt dieser Forderung dadurch entgegen da ein PEARL Programm aus einem oder mehreren getrennt bersetzbaren Moduln besteht Bez ge zwischen Moduln sind mittels sogenannter globaler Objekte z B Variablen Prozeduren Tasks m glich Damit die Anweisungen f r die Daten bertragung sowie f r die
131. neuer Typ D D D D D D X X X REF x D D X D Prozedur S D D TASK D D REF CHAR x D D x x x REF PROC D D D D D D REF TASK D D D D x D D REF STRUCT x D D D D x D Objekte vom Typ SEMA BOLT IRPT SIGNAL DATION oder Feld d rfen nur mittels Identifizierung IDENT als Prozedur Parameter bergeben werden 2 A 2 Vordefinierte Funktionen Dieser Anhang beschreibt die dem PEARL Compiler bekannten Funktionen Sie k nnen in den einzelnen Modulen benutzt werden ohne sie vorher zu spezifizieren Falls eine der Funktionen in einem Modul spezifiziert wird darf auf Modul Ebene kein Objekt mit deren Namen existieren A 2 1 Die Funktion NOW Die Funktionsprozedur NOW liefert die aktuelle Uhrzeit bzw Systemzeit als einen Wert vom Typ CLOCK zur ck Eine Spezifikation der Funktion sieht folgenderma en aus SPC NOW PROC RETURNS CLOCK GLOBAL A 2 2 Die Funktion DATE Das aktuelle Datum erh lt man durch einen Aufruf der Funktionsprozedur DATE Das Funktionsergebnis ist eine Zeichenkettenkonstante der L nge 10 die das Datum in der Form Jahr Monat Tag enth lt Hier ein Beispiel f r den 5 Dezember 1991 1991 12 05 Die Funktion kann so spezifiziert werden SPC DATE PROC RETURNS CHAR 10 GLOBAL A 3 Syntax In der vorliegenden Syntaxbeschreibung werden folgende Meta Zeichen benutzt Meta Zeichen Bedeutung Einf hr
132. nfang Ende FIXED Originalton BIT 1 Textlaenge FIXED Text CHAR 200 Eine Struktur wird in eckige Klammern eingeschlossen diese werden hier im Text fett gedruckt um sie von den metasprachlichen Zeichen und zu unterscheiden In der Programmniederschrift werden nur die eckigen Klammern oder ihre Ersatz symbole und benutzt Anders als Feldelemente werden die Komponenten einer Struktur nicht ber den gemeinsamen Bezeichner und einen Index sondern ber den gemeinsamen Bezeichner und ihren in der Vereinbarung angegebenen Bezeichner angesprochen wobei die beiden Bezeichner durch einen Punkt getrennt werden Beispiel Durch die Anweisung Beitrag Anfang 1027 erh lt die Komponente Anfang der Struktur Beitrag den Wert 1027 zugewiesen Wie die Vereinbarung von Beitrag zeigt d rfen die Komponenten von Strukturen Felder sein die Feldelemente werden dann wie gewohnt mit ihrem indizierten Bezeichner angesprochen dem der Strukturbezeichner vorangestellt ist etwa in der Form IF Beitrag schon_gesendet i THEN FIN Eine Strukturkomponente kann jedoch auch selbst wieder eine Struktur sein wodurch nicht nur lineare sondern auch hierarchische Datenstrukturen nachgebildet werden k nnen Beispiel Eine Personaldatei enthalte die Beschreibungen von Mitarbeitern diese Beschreibungen haben jeweils folgende Struktur Vorname m Name Nachname M Stra e und Hausnummer Person
133. nsliste 8 Typ VOID STRUCT nur in Verbindung mit REF erlaubt Sema Attribut SEMA Resident Attribut Global Attribut PRESET konstanter FIXED Ausdruck konstanter FIXED Ausdruck Bolt Attribut BOLT Resident Attribut Global Attribut Resident Attribut RESIDENT Global Attribut GLOBAL Bezeichner Modul Initialisierungsattribut INITIAL INIT Init Element Init Element Init Element Konstante Bezeichner benannte Konstante konstanter Ausdruck Dation Attribut Typ Dation Resident Attribut Global Attribut CREATED Bezeichner Benutzername f r Sytemdation Typ Dation DATION Quelle Senke Attribut Klassenattribut Topologie Zugriffsattribut Kontroll Attribut Quelle Senke Attribut IN OUT INOUT Klassenattribut ALPHIC BASIC Typ der Ubertragungsdaten Typ der bertragungsdaten ALL einfacher Typ Bezeichner f r neu vereinbarten Typ Typ Struktur eine Struktur als Transfer Typ darf keine Referenz Variablen enthalten A 9 Topologie DIM konstanter FIXED Ausdruck konstanter FIXED Ausdruck konstanter FIXED Ausdruck TFU MAX DIM virtuelle Dimensionsangabe nur bei SPC erlaubt Zugriffsattribut DIRECT FORWARD FORBACK NOCYCL CYCLIC STREAM NOSTREAM Kontroll Attribut CO
134. nstation zugeordnet Anderenfalls oder wenn IDF fehlt erfolgt eine Fehlermeldung bzw Setzen der RST Variablen mit der Fehlernummer NEW Es wird ein Datenbestand mit dem IDF Namen angelegt und mit der angege benen Datenstation identifiziert Ist bereits ein Datenbestand mit diesem Na men vorhanden oder fehlt IDF so erfolgt eine Fehlermeldung bzw Setzen der RST Variablen mit der Fehlernummer ANY Existiert bereits ein Datenbestand mit dem IDF Namen so wird dieser mit der angegebenen Datenstation identifiziert Anderenfalls wird hierf r ein neuer Datenbestand angelegt Fehlt IDF so wird ein neuer Datenbestand unter einem vom System bestimmten Namen angelegt und mit der angegebenen Datenstation identifiziert CAN von cancel Der Datenbestand ist nach Ausf hrung der Close Anweisung siehe unten nicht mehr zug nglich zu machen PRM von permanent Der Datenbestand ist nach Ausf hrung der Close Anwesiung noch vorhanden und nach erneuter Ausf hrung einer Open Anweisung mit demselben IDF Na men wieder zug nglich Bei fehlenden Open Parametern werden ANY und PRM angenommen 10 10 Durch die Ausf hrung der Close Anweisung wird eine Datenstation geschlossen d h sie ist dann erst wieder nach Ausf hrung einer Open Anweisung benutzbar Close Anweisung CLOSE Name Dation BY Close Parameter Close Parameter TI Die in der Open Anweisung getroffenen Einstellungen f r das Schlie en einer Datenstation k nnen dur
135. nten Objekts entsprechen Genaueres wird bei der Vorstellung der einzelnen Objekte definiert 4 5 4 3 Blockstruktur G ltigkeit von Objekten Bl cke werden dazu benutzt Task oder Prozedurk rper zu strukturieren und den G ltigkeitsbereich und die Lebensdauer von PEARL Objekten zu beeinflussen Ein Block ist eine Zusammenfassung von Vereinbarungen und Anweisungen Block BEGIN Vereinbarung Anweisung END Bezeichner Block Bl cke gelten als Anweisungen und d rfen deshalb nur innerhalb von Tasks und Prozeduren auftreten dort allerdings auch ineinander geschachtelt Der Eintritt in einen Block erfolgt mit der Ausf hrung von BEGIN Verlassen wird ein Block durch die Anweisung des zugeh rigen END oder durch eine Verzweigung zu einer Anwei sung au erhalb des Blocks z B durch die Exit Anweisung vgl 7 5 Spr nge in einen Block hinein sind nicht erlaubt Innerhalb von Bl cken d rfen keine Prozeduren definiert werden Den in einem Block vereinbarten lokalen Objekten wird erst bei Eintritt in den Block Speicherplatz zugewiesen dieser wird bei Verlassen des Blocks wieder aufgegeben Wie Tasks Prozeduren und Wiederholungen k nnen Bl cke also Objekte dynamisch einf hren und entfernen und bieten somit die M glichkeit den zur Verf gung stehenden Speicherplatz mehrfach zu nutzen Deshalb m ssen einige Regeln f r die Lebensdauer und den G ltigkeitsbereich dieser Objekte getroffen werden Die Lebensd
136. om Zuweisungszeichen angegebenen Variablen und der Typ des Wertes des Ausdrucks m ssen bereinstimmen mit folgenden Ausnahmen e Einer FLOAT Variablen darf der Wert einer FIXED Variablen bzw eine ganze Zahl zugewiesen werden e Die Genauigkeit einer links vom Zuweisungszeichen stehenden Zahlen Variablen darf gr er sein als die Genauigkeit des Wertes des Ausdrucks e Eine links stehende Bit bzw Zeichenkette darf eine gr ere L nge als der zuzuweisende Wert haben dieser wird gegebenenfalls rechts mit Nullen bzw Leerzeichen erg nzt Operatoren f r n tige Typwandlungen sind in 6 1 2 beschrieben Beispiele DCL I J FIXED 15 FIXED 31 X Y FLOAT Bit8 BIT 8 Bit12 BIT 12 4 CHAR 4 Text10 CHAR 10 Dauer 2 DURATION Zeit 2 CLOCK l 2 0 Falsch 3 X J 5 0 K J Falsch Text10 Ergebnis Text10 hat den Wert Ergebnis __ Bit8 A9F B4 Falsch weil zu lang Dauer 1 1 HRS Dauer 2 30 MIN Zeit 1 11 00 00 Zeit 2 Zeit 1 IF Zeit 1 lt 12 00 00 THEN Dauer 1 ELSE Dauer 2 FIN Bit8 10001100 B Bit12 Bit8 gt lt 11 Bit 12 hat den Wert 100011001100 B Bit8 Bit8 CSHIFT 3 Bit8 hat den Wert 01100100 B Bit12 Bit12 SHIFT 6 Bit12 hat den Wert 000000100011 B 6 21 Es besteht die M glichkeit Variablen mit einem Attribut f r Zuweisungsschutz vgl 5 15 zu vereinbaren Zuweisungen an sol
137. on Write Anweisung WRITE Ausdruck Ausschnitt Ausdruck Ausschnitt 11 TO Name Dation BY Position Position Read Anweisung READ Name Ausschnitt Name Ausschnitt FROM Name Dation BY Position Position Send Anweisung SEND Ausdruck TO Name Dation BY RST S CTRL Format RST S CTRL Format II Take Anweisung Name FROM NameS Dation BY RST S CTRL Format RST S CTRL Format II RST S CTRL Format RST Name Fehlervariable FIXED Name Variable FIXED CONTROL Ausdruck Ausdruck Ausdruck Ausschnitt NameS Feld Index Index Index bei einer indizierten Feldansprache darf in der letzten Dimension ein Bereich angegeben werden Ausdruck Ausdruck die Elemente dieses eindimensionalen Slices werden in aufsteigender Reihenfolge von der EA verarbeitet Format oder Position Faktor Format Position Faktor Format oder Position Format oder Position Faktor Ausdruck ganze Zahl gr er Null ganze Zahl ohne Genauigkeit gr er Null A 18 Ausdruck Ausdruck Ausdruck B B1 B2 B3 B4 A Ausdruck T D Ausdruck Ausdruck Bezeichner Format Name L ngenvariable FIXED Position RST Name Fehlervariable FIXED X SKIP PAGE Ausdruck POS ADV Ausdruck Ausdruck Ausdruck
138. on RESERVE B Hat B den Zustand Sperre m glich erh lt B den Zustand gesperrt ande renfalls wird die ausf hrende Task angehalten und in eine Warteschlange eingereiht die B zugeordnet ist Wirkung von FREE B bekommt den Zustand Sperre m glich Au erdem werden alle aufgrund einer RESERVE Anweisung in der Warteschlange von B wartenden Tasks be freit diese wiederholen ihre Sperr Anweisungen in der Reihenfolge ihrer Priorit t Wartet keine Task aufgrund einer RESERVE Anweisung so werden alle anderen wartenden Tasks befreit die dann ihrerseits die ENTER Anwei sung in der Reihenfolge ihrer Priorit t wiederholen Wirkung von ENTER Hat B den Zustand gesperrt oder befindet sich in der Warteschlange von B eine Task aufgrund einer RESERVE Anweisung so wird die ausf hrende Task angehalten und in die Warteschlange von B eingereiht Anderenfalls erh lt B den Zustand Sperre nicht m glich um exklusiven Zugriff zu verbieten au erdem wird die intern notierte Anzahl Z der benutzenden Tasks um 1 erh ht D h Tasks die ENTER B ausf hren werden erst nach den Tasks fortgesetzt die einen exklusiven Zugriff auf das Betriebsmittel ben tigen Wirkung von LEAVE Ist Z 1 so wirkt diese Anweisung wie FREE Andernfalls wird 2 um 1 erniedrigt und B beh lt den Zustand Sperre nicht m glich 9 23 Beispiel Eine Task Messung ermittelt laufend Werte von Vergleichsgr en aus einem zu
139. p Echtzeit Objekt Typ Echtzeit Objekt SEMA BOLT IRPT INTERRUPT SIGNAL Resultat Attribut RETURNS Resultat Typ 8 3 Resultat Typ einfacher Typ Typ Referenz Typ Struktur Bezeichner f r Typ Die allgemeine Form der Spezifikation einer Prozedur lautet wie folgt Prozedur Spezifikation SPECIFY SPC Bezeichner Prozedur ENTRY PROC Liste der Parameter f r SPC Resultat Attribut Global Attribut Liste der Parameter f r SPC Parameter Spezifikation Parameter Spezifikation Parameter Spezifikation Bezeichner virtuelle Dimensionsliste Zuweisungsschutz Parametertyp IDENTICAL IDENT In der Parameter Spezifikation hat die optional angebbare Liste der Parameter nur einen dokumentarischen Wert jedoch ist es so m glich den Kopf einer Prozedur deklaration in ein anderes Modul zu kopieren und durch Erg nzen des Schl ssel wortes SPECIFY eine korrekte Spezifikation der Prozedur zu erzeugen Unterprogramm Prozeduren werden ohne Funktionsprozeduren mit Resultat Attribut vereinbart Der Resultat Typ bestimmt den Typ des berechneten Ergebnisses das an die Aufrufstelle zur ckgegeben wird Diese R ckgabe erfolgt mittels der Return Anweisung in der Form RETURN Ausdruck Der Wert des Ausdrucks mu also den durch das Resultat Attribut spezifizierten Typ besitzen Die Abarbeitung des Prozedurk rpers einer Funktionsprozedur wird durch Ausf h run
140. r erh lt den Typ TYP_B damit ist die Zuweisung an den Zeiger ptr korrekt Uber den Zeiger ptr kann jetzt auf ein Datenobjekt vom Typ TYP_B zugegriffen werden das die Variable var berlagert Beispiel berlagerung von Datenobjekten beim Prozeduraufruf SPC p1 ENTRY REF TYP_B GLOBAL SPC p2 ENTRY TYP_B IDENT GLOBAL DCL var CALL var BY TYPE CALL p2 var BY TYPE TYP B Der Typ des formalen Parameters var wird durch den Operator BY TYPE in den Typ TYP_B gewandelt In beiden F llen wird die Adresse der Variablen var als Zeiger auf ein Objekt vom Typ TYP_B an die Prozeduren bergeben Beide Aufrufe sind somit korrekt Durch das Abschalten der Typ Kontrolle begibt sich der Programmierer in einen Bereich in dem ihn der Compiler auf keine Fehler mehr hinweisen kann In keinem Fall darf mit Hilfe einer berlagerten Datenstruktur ber das Ende des zugrundeliegenden Speicherbereichs hinaus gelesen oder geschrieben werden da es sonst zu schwerwiegenden Fehlern beim Ablauf des Programmes kommen kann dabei ist ein Datenverlust noch das kleinste Problem Der Programmierer sollte auch keinerlei Annahmen ber die Ablage der Daten inner halb des berlagerten Speicherbereichs ausnutzen Die Ablage der Daten ist i a abh ngig von der Zielmaschine Programme die eine Datenkonvertierung mit Hilfe von berlagerten Datenstrukturen vornehmen sind hardwareabh ngig und nur noch mit gro em
141. r Angabe Dimensionsattribut SEMA Global Attribut PRESET ganze Zahl ohne Genauigkeit ganze Zahl ohne Genauigkeit Request Anweisung REQUEST Name Sema Name Sema Release Anweisung RELEASE Name Sema Name Sema TRY Operator TRY Name Sema 9 21 Es sind also auch Felder von Sema Variablen m glich die einzelnen Elemente wer den in den Sperr und Freigabe Anweisungen indiziert angesprochen Sema Variablen m ssen auf Modulebene vereinbart werden Bei der Deklaration k nnen Sema Variablen auch explizit durch PRESET Angabe initialisiert werden die betreffenden Sema Variablen erhalten die angegebenen Werte entsprechend der Reihenfolge zugewiesen Beispiel Den Sema Variablen Si und S2 sollen bei ihrer Deklaration die Werte 3 und 5 zugewiesen werden DCL 51 52 SEMA PRESET 3 5 Die allgemeine Form f r die Spezifikation von Sema Variablen lautet Sema Spezifikation SPECIFY SPC Bezeichner Angabe virtuelles Dimensionsattribut GEMA Global Attribut Identifikationsattribut 9 3 2 Bolt Variablen BOLT und Anweisungen ENTER LEAVE RESERVE FREE Angenommen in verschiedenen Tasks werden dieselben Daten zur Rechnung benutzt aber nicht modifiziert z B Vergleichsgr en f r berwachungsprozesse zus tzlich soll eine andere Task diese Daten neu ermitteln z B Vorgabe neuer berwachungsdaten Es soll gew hrleistet sein da sich die Abl uf
142. r Nummer Fehlernummer ausgel st werden Beispiel Das Signal TaskSignal soll mit der Fehlernummer 1010 simuliert werden und die verursachende Task mit der Ausgabe der Fehlernummer auf der Konsole reagieren PROBLEM SPC TaskSignal SIGNAL DCL FehlerNummer FIXED Regler TASK PRIO 20 ON TaskSignal RST FehlerNummer PUT FehlerNummer TO Konsole Test END Regler Start TASK MAIN ALL Ta ACTIVATE Regler END Start Test PROC INDUCE TaskSignal RST 1010 END Test Anhang A A 1 Datentypen und ihre Verwendbarkeit Die folgende bersicht zeigt f r jeden der zur Verf gung stehenden Datentypen ob Objekte dieses Typs zu Feldern zusammengefa t werden als Strukturkomponente auftreten formaler Prozedurparameter sein Ergebnis einer Funktionsprozedur sein Wert einer Referenz Variablen sein von und zu Datenstationen bertragen werden mit Zuweisungsschutz versehen werden global sein oder mit dem Initialisierungsattribut versehen werden d rfen A 1 Typ Verwendung Feld Struk Para Resultat Ref Dation INV GLO INIT tur meter Typ Wert Klasse BAL FIXED X D D D x D FLOAT D D D D D D D D BIT D X D D D D D D CHAR D D D D D D D D CLOCK D D D D D D D X D DUR D D D D D D D D SEMA D D BOLT D D D IRPT x D D SIGNAL D e D D D DATION D D D D Feld D D D D D D STRUCT D D D D D D D
143. r verursachenden Task und es wird eine Feh lermeldung ausgegeben Diese Standard Reaktion des PEARL Systems wird unter dr ckt durch die Angabe von RST NameS Fehlervariable FIXED in der Parameterliste der OPEN CLOSE Anweisung bzw als Format oder Posi tions Element in den anderen Daten bertragungsanweisungen Name mu eine Variable vom Typ FIXED bezeichnen in die im Fehlerfall eine Fehlernummer ungleich Null eingetragen wird Bei fehlerfreier Ausf hrung der E A Anweisung wird die Variable auf Null gesetzt M gliche Fehler und ihre Identifizierung sind dem PEARL Benutzerhandbuch des jeweiligen Rechnersystems zu entnehmen Die RST Angabe kann an beliebiger Stelle in der Format oder Positionsliste von PUT GET WRITE READ und CONVERT Anweisungen stehen auch mehrfache Angaben mit unterschiedlichen Variablen sind erlaubt Die RST Angabe schaltet die Fehlerreaktion erst um wenn das RST Element in der Format Positionsliste ausge wertet wird Eine E A Anweisung wird bei Erkennung eines Fehlers sofort abgebro chen und die zu diesem Zeitpunkt g ltige Fehlerreaktion Zuweisung einer Fehler nummer an eine RST Variable oder die Systemreaktion durchgef hrt 10 9 Interface f r zus tzliche Treiber Die Vielfalt der insbesondere in der PC Welt existierenden E A Controller und Ge r te erlaubt es dem Compiler Lieferanten nicht alle E A Ger te im Systemteil zu be r cksichtigen und Systemnamen daf r einzurichten Damit t
144. rd nur der ganzzahlige Anteil der Dezimalzahl ohne Dezimalpunkt gerundet ausgegeben 1 5 Mit Ausnahme der Null direkt vor dem Dezimalpunkt werden f hrende Nullen unterdr ckt 2 Eingabe 2 1 Es wird ein Feld der L nge w gelesen das eine dezimale Festkommazahl in folgender Darstellung enth lt 1 1 1092 9211 2 2 Leerzeichen die der Zahl vorangehen oder nachfolgen werden ignoriert 2 3 Ist das ganze Feld leer wird der Wert 0 eingelesen 2 4 Tritt in der Darstellung kein Dezimalpunkt auf so werden die letzten d Ziffern als Stellen nach einem Dezimalpunkt interpretiert Es mu gt sein 2 5 Tritt in der Darstellung ein Dezimalpunkt vor den letzten b Ziffern auf so hat dieser Vorrang vor der Spezifikation durch d In diesem Fall ist die Angabe von bedeutungslos Es mu gt b sein 2 6 Istw lt 0 so erfolgt keine Zuweisung es wird ein Fehler gemeldet Beispiel Wert Format Ausgabe 13 5 F 7 2 _13 50 275 2 F 4 1 E Fehlermeldung 22 8 F 5 23 212 73 F 9 2 2 21273 00 212 73 F 9 2 212 73 10 23 10 5 2 Das Float Format E Float Format Feldweite Dezimalstellen Signifikanz Signifikanz Ausdruck mit ganzer Zahl als Wert Das Float Format beschreibt die externe Darstellung dezimaler Gleitpunktzahlen der Form Gleitpunktzahl wobei der Exponent aus zwei Ziffern besteht Feldweite und Dezimalstellen haben dieselbe Be
145. ren Moduln mu es angegeben werden Die allgemeine Form des Global Attributs lautet Global Attribut GLOBAL Bezeichner eines Moduls Der gegebenenfalls angegebene Bezeichner des Moduls hat nur dokumentarischen Wert Bei der Spezifikation eines Objekts m ssen alle Attribute aus seiner Deklaration mit Ausnahme einer angegebenen Priorit t Genauigkeit oder L nge bernommen wer den In letzterem Ausnahmefall wird f r den Bereich des Programms in dem die Spezifikation gilt die in der entsprechenden L ngenvereinbarung vgl 5 6 definierte Genauigkeit oder L nge eingesetzt 4 9 Beispiel MODULE PROBLEM TASK PRIO GLOBAL Taskk rper END PROC FIXED IDENT GLOBAL Prozedurk rper END MODEND MODULE PROBLEM SPC T TASK GLOBAL ENTRY FIXED IDENT GLOBAL INIT TASK DCL TAB 10 20 FIXED CALL TAB ACTIVATE END INIT MODEND Die verschiedenen Formen der Spezifikation globaler Objekte werden bei der Vor stellung der Objekte definiert 4 5 Ausf hrung eines Programms Nach dem Laden eines PEARL Programms startet das PEARL Laufzeitsystem automatisch alle Tasks die mit dem Attribut MAIN gekennzeichnet sind gem ihrer Priorit t Alle mit MAIN versehenen Tasks m ssen in einem Modul deklariert sein Beispiel MODULE Main SYSTEM PROBLEM Start TASK MAIN Aktivierung und Einplanungen and
146. rieben Hierzu vereinbart der Programmierer folgende Objekte e Variablen und Konstanten f r ganze Zahlen Gleitpunktzahlen Bitketten Zeichenketten Zeitdauern Uhrzeiten Referenzen e Sprungmarken e Prozeduren f r mehrfach auftretende Teilaufgaben e Tasks f r die zeitliche parallele Abarbeitung von Aufgaben e Bl cke f r die Strukturierung von Prozeduren und Tasks 4 1 e Interrupts e Signale e Synchronisiervariablen Sema und Bolt Variablen sowie e Datenstationen und Formate f r die Ein Ausgabe Die erforderlichen Anweisungen werden in den Prozeduren und Tasks zusammen mit weiteren lokalen Vereinbarungen die nur dort ben tigt werden angegeben Da bei gilt allgemein da Objekte erst dann in Anweisungen benutzt werden d rfen wenn sie vereinbart worden sind Beispiel MODULE SYSTEM Beschreibung der Verbindungen und Einf hrung von Namen f r die Peripherieelemente PROBLEM Vereinbarung von Konstanten und Variablen Vereinbarung von Interrupts Vereinbarung von Datenstationen Vereinbarung einer Task Vereinbarung lokaler Konstanten und Variablen Anweisungen Vereinbarung einer Prozedur Vereinbarung lokaler Konstanten und Variablen Vereinbarung lokaler Prozeduren Anweisungen MODEND Objekte werden auf Modulebene d h au erhalb von Prozeduren und Tasks oder in Prozeduren oder in Tasks vereinbart Auf Modulebene vereinbarte Objekte sind im ganzen Modul bekannt und k nnen von jeder Task und Proze
147. rite Anweisung zur Ausgabe von Daten ohne Wandlung der rechnerinternen Darstellung bin re Ein und Ausgabe Es k nnen Daten von oder zu den angeschlossenen Ger ten z B eine Datei auf Platte oder Magnetband bertragen werden Die entsprechenden Datenstationen m ssen mit dem Klassenattribut Typ der bertragungsdaten vereinbart worden sein Beispiele 1 Die Spalten 4 und 5 in der Gliederung Tabelle vgl das Beispiel auf Seite 10 9 sollen durch neu berechnete Werte ersetzt werden DCL x y z FLOAT FOR Zeile FROM 1 TO 300 REPEAT Berechnung von x 2 WRITE x SIN y z TO Tabelle BY POS Zeile 4 END 2 Eine Task Messung holt periodisch 14 Temperaturwerte Procedure Get_Temp verarbeitet sie und schreibt sie sequentiell in Bl cken zu 14 Werten in ein Logbuch auf Platte SYSTEM File DISC PROBLEM SPC Get Temp PROC i FIXED RETURNS FIXED 15 GLOBAL SPC File DATION INOUT ALL DCL Logbuch DATION OUT FIXED 15 DIM 14 TFU FORWARD CREATED File DCL Anz Temp INV FIXED 15 INIT 14 Star TASK MAIN OPEN Logbuch Positionierung auf den Anfang ALL 10 SEC ACTIVATE Messung END Start Messung TASK DCL Temperatur Anz_Temp FIXED 15 FOR i TO Anz_Temp REPEAT Temperatur i Get_Temp i END Verarbeitung der Messwerte WRITE Temperatur TO Logbuch END Messung 10 13 Die allgemeinen Formen der Read und Write Anweisungen lauten Read Anweisung READ Na
148. rnamen angesprochen die Eigenschaften der Daten stationen sind zuvor unter Auff hrung dieser Namen zu vereinbaren In herk mmlichen Programmiersprachen wird die Zuordnung der im Programm verwendeten logischen Bezeichnungen Benutzernamen f r Datenstationen zu den Ger ten eines speziellen Rechensystems durch zus tzliche Steuerangaben beim Einrichten eines bersetzer Programms Job Control Angaben getroffen In PEARL erfolgen diese Zuordnungen in einheitlicher Schreibweise durch Vereinbarungen im Systemteil 10 1 Systemteil Der Systemteil dient der Beschreibung der verwendeten E A Konfigurationen eines PEARL Programms Allen Ger ten eines Rechnersystems die direkt mit PEARL E A Anweisungen angesprochen werden k nnen mu ein Systemname zugeordnet sein Eine Liste dieser Ger te und ihrer Systemnamen findet man im PEARL Benut zerhandbuch des jeweiligen Zielsystems Im Systemteil m ssen den Systemnamen der ben tigten Ger te frei w hlbare Benutzernamen zugeordnet werden Nur ber diese Benutzernamen k nnen die Ger te dann in E A Anweisungen des Problemteils angesprochen werden Gibt es mehrere Ger te des gleichen Typs k nnen diese auch durch einen dem Systemnamen angeh ngten Index unterschieden werden Ein Systemname hat also folgende allgemeine Form System Name Bezeichner nngz index nngz ganze Zahl ohne Genauigkeit nicht negativ 10 1 F r die meisten Proze ger te sind weitere Angaben erforderlich
149. rotzdem spezielle E A Ger te von PEARL aus ansprechbar sind kann f r bestimmte Betriebssysteme ein Treiber Interface vorgesehen werden an das der PEARL Programmierer selbst Treiber anschlie en kann Dieses Interface ist im jeweiligen Benutzerhandbuch im Kapitel Offene Treiber Schnittstelle beschrieben 10 35 11 Signale Bei der Ausf hrung bestimmter Anweisungen k nnen interne Ereignisse sogenannte Signale eintreten die zu einer Unterbrechung der laufenden Task f hren solche Signale sind beispielsweise ein berlauf bei einer arithmetischen Operation eine Division durch Null oder das Erreichen des Endes einer Datei end of file Ein Abbruch des Programms kann dadurch vermieden werden da bei Auftreten eines Signals eine entsprechende Fehlerbehandlung erm glicht wird Die f r ein Programm ben tigten Signale werden im Systemteil erkl rt wobei ihnen frei w hlbare Benutzernamen zugeordnet werden k nnen Zus tzlich kann eine Fehlerliste angegeben werden mit der die Signal Einplanung auf eine oder mehrere spezielle Fehlernummern eingeschr nkt wird Benutzernamen Vereinbarung f r SIGNAL Bezeichner Benutzername Bezeichner SIGNAL Systemname Bezeichner Fehlernummer Bezeichner Fehlernummer Die auf einem bestimmten Computer m glichen Signale und die zugeordneten Fehlernummern sind in dem jeweiligen Benutzerhandbuch unter Angabe ihrer Systemnamen und Bedeutung beschrieben Vor der Benutzun
150. rtet Bevor sie die Tasks Produzent_1 Produzent_2 startet mu In_den_Puffer den Zustand frei erhalten PROBLEM DCL In_den_Puffer Aus_dem_Puffer GEMA Ausgabe TASK RELEASE ACTIVATE Produzent_1 ACTIVATE Produzent 2 REPEAT REQUEST Aus_dem_Puffer Ausgabe auf den Protokolldrucker RELEASE In_den_Puffer END Schleife END Ausgabe Produzent_1 TASK REPEAT Aufbereiten der Nachricht REQUEST In_den_Puffer Puffern RELEASE Aus_dem_Puffer END Schleife END Produzent 1 Produzent_2 TASK REPEAT Aufbereiten der Nachricht REQUEST In_den_Puffer Puffern RELEASE Aus_dem_Puffer END Schleife END Produzent_2 Erkl rung Ausgabe wartet zun chst auf die Freigabe von Aus_dem_Puffer d h auf die Pufferung einer Nachricht weil Aus_dem_Puffer nur von Produzent_1 und Produzent_2 freigegeben werden kann Nach erfolgter Ausgabe gibt Ausgabe In_den_Puffer frei l t also eine Pufferung zu und wartet auf einen neuen Auftrag Produzent_1 und Produzent_2 k nnen nur dann eine Nachricht puffern wenn f r In_den_Puffer der Zustand frei definiert ist nach dem Puffern ei ner Nachricht geben sie Aus_dem_Puffer frei und sto en damit Ausgabe Der Zustand einer Sema Variablen kann mit dem monadischen Operator TRY Name Sema erfragt werden Der Operator liefert als Ergebnis einen BIT 1 Wert der in allen logischen Ausdr cken verwendet werden kann Wenn die Se
151. satz und schreib_satz werden von verschiedenen Anwen dungsprogrammen aufgerufen Sie k nnen S tze unterschiedlicher L nge speichern und lesen Dazu ben tigen die Datenbankroutinen nur die Adressen und die L ngen der S tze nicht jedoch die anwendungsspezifischen Datentypen 6 26 7 Anweisungen zur Steuerung des sequentiellen Ablaufs Eine Task oder Prozedur Vereinbarung definiert eine Folge von Anweisungen die bei der Ausf hrung der Task oder Prozedur in der definierten Reihenfolge sequenitiell abgearbeitet werden sofern nicht daf r vorgesehene Steueranweisungen die Reihenfolge der Abarbeitung beeinflussen Solche Steueranweisungen sind e die bedingte Anweisung e die Anweisungsauswahl e die Leeranweisung e die Wiederholung e die Sprung Anweisung e die Exit Anweisung 7 1 Bedingte Anweisung IF Mit Hilfe der bedingten Anweisung wird in Abh ngigkeit vom Ergebnis eines Aus drucks festgelegt mit welcher Anweisung der Programmablauf fortgesetzt werden soll bedingte Anweisung IF Ausdruck THEN Anweisung ELSE Anweisung IEN Das Ergebnis des Ausdrucks mu vom Typ BIT 1 sein Liefert der Ausdruck den Wert 1 B wahr so werden die Anweisungen hinter THEN ausgewertet anderenfalls werden sofern angegeben die Anweisungen hinter ELSE ausgewertet Sofern die Ausf hrung der Anweisungen hinter THEN bzw ELSE nicht zu einem Sprung aus der bedingten Anweisung f hrt wird anschlie end die Anweisung hinter FIN
152. st geschieht die Zuordnung mittels Identifizie rung anderenfalls durch Wert bertragung Im Fall der Wert bertragung auch call by value genannt wird beim Aufruf der Proze dur f r jeden vereinbarten formalen Parameter ein neues Objekt vereinbart das den Typ des formalen Parameters besitzt und lokal bzgl des Prozedurk rpers ist d h die formalen Parameter werden lokale Variablen vom spezifizierten Typ Sodann werden die Werte der aktuellen Parameter den entsprechenden formalen Parametern zugewiesen Eine Zuweisung an einen formalen Parameter durch eine Anweisung im Prozedurk rper bewirkt also keine Ver nderung des aktuellen Parameters Au erdem d rfen in diesem Fall beliebige Ausdr cke als aktuelle Parameter bergeben werden Bei der Zuordnung mittels Identifizierung auch call by reference genannt wird ein formaler Parameter mit dem entsprechenden aktuellen Parameter identifiziert d h unter dem Namen des formalen Parameters bezieht man sich im Prozedurk rper auf die Daten des aktuellen Parameters Eine Zuweisung an einen formalen Parameter im Prozedurk rper bedeutet hier also eine Zuweisung an die Variable die als entsprechender aktueller Parameter bergeben wurde Deshalb d rfen in diesem Fall keine beliebigen Audr cke sondern nur Namen von Variablen als aktuelle Parame ter bergeben werden 8 7 Beispiel PROBLEM P1 PROC pi FIXED o FLOAT IDENT pi 3 pj 5 0 END P1 P2 PROG DCL i j FIX
153. stante Ausdr cke vom Typ EIAEID A 5 29 6 Ausdr cke und ZUWEISUNG Eses Tekesin ekna seee rN Naaa SEN EERE AAEE Ea Tana SENER R A EKKAN L EAER TEn EREE 6 1 6 1 EEE ge 6 1 6 1 1 Operatoren 6 7 6 1 2 Dyadische Operatoren 6 10 6 1 3 Berechnung von Ausdr cken A 6 17 6 2 Operatorvereinbarung OPERATOR 6 19 6 3 EE 6 20 6 3 1 Zuweisungen f r skalare Variablen 6 20 6 3 2 Zuweisungen f r Strukturen 6 22 6 4 berlagerung von Datenstrukturen EE 6 23 DAT Der BY TYPE Operafor r 2 22 an Enns 6 23 6 4 2 Der VOID Datentyp A 6 25 7 Anweisungen zur Steuerung des sequentiellen Ablaute nenn 7 1 7 1 Bedingte Anweisung EEEE a E 7 1 7 2 Anweisungsauswahl CASE und Leeranweleung 7 2 7 3 Wiederholung FOR REPEAT san EE 7 5 7 4 Sprung Anweisung OGOTO 7 8 GD Exit Anweisung EXIT neigen 7 8 gt lte TE 8 1 8 1 Vereinbarung von Prozeduren DROE 8 3 8 2 Aufruf von Prozeduren CAL 8 6 8 3 Referenzen auf Prozeduren REF PROC 8 9 9 Parallele itia aiaa a i aa 9 1 9 1 Ver
154. sweise nicht korrekt CASE ErrNum ALT 1 CALL ok ALT 0 CALL nothing_done ALT 99 1 ErrorMsg ErrNum Die Auswahl mu deterministisch sein Spr nge in eine Anweisungsauswahl hinein sind verboten 7 3 Wiederholung FOR REPEAT H ufig mu eine Anweisungsfolge wiederholt ausgef hrt werden wobei sich nur ein Parameter ndert Beispielsweise sollen verschiedene Ger te berpr ft werden Anz_Geraete sei die Anzahl der Ger te FOR i FROM 1 BY 1 TO Anz Geraete REPEAT berpr fung von Geraet i END Allgemein sind solche Programmschleifen wie folgt aufgebaut Wiederholung FOR Bezeichner Laufvariable FROM Ausdruck8 Anfangswert BY Ausdruck Schrittweite TO Ausdruck Endwert WHILE Ausdruck Bedingung REPEAT Vereinbarung Anweisung END Bezeichner Schleife Die hinter REPEAT aufgef hrten Vereinbarungen und Anweisungen d h der Schleifenk rper werden so oft durchlaufen wie dies durch die davor angegebene Vorschrift vorgegeben ist anschlie end wird die hinter END folgende Anweisung ausgef hrt Es ist jedoch auch m glich den Schleifenk rper vorzeitig durch eine Sprung Anweisung oder die Exit Anweisung vgl 7 5 zu verlassen Spr nge in den Schleifenk rper hinein sind nicht zugelassen 7 5 Im Schleifenk rper sind alle Anweisungen zugelassen insbesondere k nnen also Wiederholungen ineinandergeschachtelt werden FOR i TO 10 REPEAT FOR k TO 10 REPE
155. t lt b CHAR Ig1 CHAR Ig2 93 oder CAT b BIT Ig1 BIT Ig2 BIT Ig3 a lt gt b BIT Ig FIXED g BIT Ig oder CSHIFT b a SHIFTb FIXED g BIT Ig Bedeutung 193 max 191 192 Der k rzere Operand wird rechts um Ig2 191 Nullen verl ngert Die folgende Tabelle zeigt den Wert der Lien Bitstelle des Ergeb nisses in Abh ngigkeit des Wertes der i ten Bitstelle vonaundb _ aANDb aORb aEXORb 11 1 1 0 10 0 1 1 01 0 1 1 00 0 0 0 Verkettung Das Ergebnis ist eine Zeichen bzw Bitkette der L nge Ig3 Ig1 lg2 die aus der Kette a gefolgt von der Kette b besteht Zyklische Verschiebung von a um b Stellen nach links gt 0 bzw rechts b lt 0 a wird um b Stellen nach links gt 0 bzw rechts b lt 0 verschoben wobei Nullen nachgezogen werden Da die Genauigkeit des Ergebnisses einer Addition Subtraktion Multiplikation oder Division gleich dem Maximum der Genauigkeiten der beiden Operanden ist kann es vorkommen da bei diesen Operationen entstehende berl ufe abgeschnitten werden Deshalb steht der dyadische Operator FIT zur Verf gung Syntax Typvona Typ von b Typ des Ergebnisses a FIT b FIXED g1 FIXED g2 FIXED g2 FLOAT g1 FLOAT g2 FLOAT g2 Er bewirkt da die Genauigkeit des Operanden a in die Genauigkeit des Operanden b gewandelt wird Er hat den Rang 1 Beispiel DCL FIXED 15 FIXED 31 DCL BIT 16 32
156. tei zugreifen mu andere jedoch untereinander simultan weil lesend zugreifen k nnen Zur L sung solcher Synchronisationsprobleme enth lt PEARL die Datentypen SEMA und BOLT mit zugeh rigen Anweisungen wie z B REQUEST Foerderstrecke RELEASE Kommunikationspuffer Wesentlich ist da diese Multitasking Anweisungen rechnerunabh ngig sind d h PEARL Programme k nnen ohne nderung z B auf iRMX OS 2 Unix oder VAX VMS Systemen ablaufen Hinzu kommt der gro e Vorteil da der PEARL Programmierer sein Multitasking Problem problemorientiert mit hohem Komfort programmieren kann ohne sich in die Eigenheiten der verschiedenen Betriebssysteme vertiefen zu m ssen z B in die Handhabung von Fork und Message queue Mechanismen bei Unix Die Umsetzung der problemorientierten Multitasking Anweisungen von PEARL in die Mechanismen der Multitasking Betriebssysteme bernimmt der PEARL Compiler 2 2 2 2 Ein und Ausgabe M glichkeiten Die bertragung von Daten zu bzw von Ger ten der Standardperipherie Drucker Lochkartenleser Platte usw oder Proze peripherie Me wertgeber Stellglieder usw sowie die Verwaltung von Dateien erfolgen in PEARL mit Hilfe rechnerunab h ngiger Anweisungen Ger te und Dateien werden unter dem Begriff Datenstation zusammengefa t Im wesentlichen werden zwei Arten der Daten bertragung unterschieden Die bertragung der Daten ohne Formatsteuerung d h ohne Umwandlung in oder an ei
157. ten Variable BY Format oder Position Convert Format oder Position Convert 7 Convert From Anweisung CONVERT NameSVariable Name Variable FROM Ausdruck Zeichenkette BY Format oder Position Convert Format oder Position Convert Il Format oder Position Convert Faktor Format Position Convert Faktor Format oder Position Convert Format oder Position Convert Position Convert RST Name Fehlervariable FIXED X Ausdruck POS ADV Ausdruck SOP Name Positionsvariable FIXED EA Anweisung Open Anweisung Close Anweisung Put Anweisung Get Anweisung Write Anweisung Read Anweisung Send Anweisung Take Anweisung Open Anweisung OPEN Name Dation BY Open Parameter Open Parameter RST Name Fehlervariable FIXED IDF 2 Zeichenkettenkonstante OLD NEW ANY CAN PRM Close Anweisung CLOSE Name Dation BY Close Parameter Close Parameter Close Parameter RST Name Fehlervariable FIXED CAN PRM A 17 Put Anweisung PUT Ausdruck Ausschnitt Ausdruck Ausschnitt TO Names Dation BY Format oder Position Format oder Position Get Anweisung GET Name Ausschnitt Name Ausschnitt FROM Names Dation BY Format oder Position Format oder Positi
158. uck Uhrzeit z B AT 12 00 00 ACTIVATE Diese Beispiele zeigen da ein Ausdruck zumindest eine Konstante ein Bezeichner ein indizierter Bezeichner oder ein aritnmetischer Ausdruck z B 2 i sein kann Bezeichner indizierte Bezeichner und Namen von Strukturkomponenten werden allgemein unter dem Begriff Name zusammengefa t Name Bezeichner Index Index 1 Index Ausdruck mit ganzer Zahl als Wert 6 1 Beispiele 3 A i j 2 k A B A B C A 3 B C i j Die Bezeichner der Komponenten einer Struktur k nnen unabh ngig von den Bezeichnern au erhalb der Struktur gew hlt werden DCL Person STRUCT siehe oben Ort CHAR 15 Person Adresse Ort Ort Die in Ausdr cken angegebenen Namen m ssen im allgemeinen Namen von skala ren Variablen sein in den Ausdruckslisten der Ausgabe Anweisungen vgl 10 4 10 5 10 6 10 7 d rfen jedoch auch Bezeichner von Feldern angegeben werden Allgemein hat ein Ausdruck die Form Ausdruck monadischer Operator dyadischer Operator Ausdruck Monadische Operatoren haben nur einen Operanden dyadische Operatoren haben zwei Operanden monadischer Operator NOT ABS SIGN LWB UPB SIZEOF CONT TOFIXED TOFLOAT TOBIT TOCHAR ENTIER ROUND Bezeichner Benutzer definierter monadischer Operator dyadischer Operator 1 4 REM lt LT gt GT lt LE gt
159. ukturkomponente Bezeichner Angabe Typ Attribut in Struktur Vereinbarung Typ Attribut in Struktur Vereinbarung Dimensionsattribut einfacher Typ Typ Referenz Bezeichner f r Typ Typ Struktur Die allgemeine Form der Struktur Spezifikation lautet Struktur Spezifikation SPECIFY SPC Struktur Angabe S Struktur Angabe S Struktur Angabe S Bezeichner Angabe Hauptstruktur virtuelles Dimensionsattribut Zuweisungsschutz Typ Struktur Global Attribut Identifikationsattribut 5 21 5 12 Typvereinbarung TYPE Eine bestimmte Struktur kann beispielsweise als Parameter oder als Unterstruktur in anderen Strukturen oder als Typ der bertragungsdaten einer Datenstation auftre ten Dabei mu jedesmal der Typ dieser Struktur angegeben werden was bei komplexen Strukturen umfangreichen Schreibaufwand erfordern kann Deshalb und zur Erh hung der Lesbarkeit des Programms kann der Typ einer Struktur unter einem frei w hlbaren Bezeichner als neuer Datentyp vereinbart und unter diesem Bezeichner z B dazu benutzt werden Variablen dieses Datentyps zu vereinbaren Beispiele 1 PROBLEM TYPE Nachricht STRUCT Identnr Archiv FIXED schon_gesendet 3 BIT 1 Anfang Ende FIXED Originalton BIT 1 Textlaenge FIXED Text CHAR 200 DCL Inhalt_MAZ DATION INOUT Nachricht TASK DCL Beitrag Nachricht READ Beitrag FROM Inhalt_MAZ END 5 22
160. und BIT Objekten in Initialisierungslisten auch bei PRESET Priorit tsangaben bei Task Deklarationen Anweisungen und in den Konstantenlisten der CASE Anweisung auf der rechten Seite einer Zuweisung Oft sind mehrere Objekte eines Programmes Variablen Konstanten voneinander abh ngig L t sich diese Abh ngigkeit durch eine einfache Formel beschreiben kann die Konfigurierung eines Programmes evtl durch Anpassen einiger weniger Konstanten erledigt werden 5 29 Beispiel Es soll eine Warnung ausgegeben werden wenn ein Puffersystem bis auf die letzten 10 ausgef llt ist DCL MaxPuffer INV FIXED INIT 1000 DCL WarnGrenze INV FIXED INIT MaxPuffer MaxPuffer 10 DCL Puffer FIXED DCL aktuellerPufferIndex FIXED INIT 1 aktuellerPufferIndex aktuellerPufferIndex 1 IF aktuellerPufferIndex gt WarnGrenze THEN Warnung ausgeben FIN 5 30 6 Ausdr cke und Zuweisungen 6 1 Ausdr cke Ausdr cke werden bei verschiedenen Sprachformen benutzt etwa als Index bei der Ansprache von Feldelementen Bezeichner Feld Ausdruck Ausdruck z B Tab 2 i als Referenzwert bei der Return Anweisung in Funktionsprozeduren siehe 8 1 RETURN Ausdruck z B RETURN Nr als Parameter beim Aufruf von Prozeduren siehe 8 2 Liste akt Parameter Ausdruck Ausdruck z B CALL P Tab 2 i als Startbedingung f r Tasks siehe 9 2 1 AT Ausdr
161. und wenn ja wie Systemnamen ge ndert werden k nnen F r die meisten PEARL Systeme gibt es zus tzlich die M glichkeit vom Anwender erstellte Ger tetreiber einschlie lich ihrer Systemnamen in das PEARL System zu integrieren und mit PEARL E A Anweisungen anzusprechen 10 2 Vereinbarung von Datenstationen DATION im Problemteil 10 2 1 System Datenstationen Vor ihrer Benutzung m ssen System definierte Datenstationen unter Angabe ihres zugeordneten Benutzernamens im Problemteil spezifiziert werden F r die Vereinba rungen aus dem obigen Beispiel kann dies so erfolgen SPC termin DATION IN ALPHIC termout DATION OUT ALPHIC file DATION INOUT ALL tty_1 DATION IN ALPHIC tty_4 DATION INOUT ALL counter DATION IN BASIC schalter DATION OUT BASIC motor DATION OUT BASIC Die allgemeine Form lautet Dation Spezifikation SPECIFY SPC Bezeichner Angabe Typ Dation Global Attribut Die verschiedenen Attribute in einer System Dation Spezifikation beschreiben die grundlegenden Eigenschaften des physikalischen Ger tes mit dem kommuniziert werden soll Die Eigenschaften eines Ger tes und die m glichen Attribute sind f r alle Ger te im Benutzerhandbuch beschrieben 10 3 10 2 2 Benutzerdefinierte Datenstationen Durch eine Dation Deklaration wird eine logische sogenannte benutzerdefinierte Datenstation oder Benutzer Dation auf einem physikalischen Ger t System Dation erzeugt Die Zuordnung zu einem Ger t
162. ung eines Namens Nichtterminal Symbol f r eine Sprachform Klammerung optionaler Teile einer Sprachform Trennung von alternativen Teilen einer Sprachform Zusammenfassung mehrerer Elemente zu einem neuen Element ein oder mehrfache Wiederholung des vorangehenden Elementes oder mehrerer durch oder geklammerte Elemente trennt einen erl uternden Kommentar von einem Sprachform Namen IT Kommentarklammern schlie t einen erl uternden Text ein der evtl anstelle einer formalen Beschreibung die Sprachform genauer erkl rt Alle anderen in den Syntaxregeln vorkommenden Elemente sind entweder Namen von Sprachformen oder Terminal Symbole Beispiele f r Terminal Symbole sind die PEARL Schl sselworte fett gedruckt oder die Zeichen Strichpunkt Klammer auf und Klammer zu oder das Apostroph die Terminal Symbole eckige Klam mer auf und eckige Klammer zu werden fett gedruckt um sie von den Meta Symbolen f r optionale Teile unterscheiden zu k nnen Achtung die runden Klammern sind keine Meta Zeichen und haben deshalb auch keine gruppierende Wirkung Das Symbol PEARL Programm ist das Startsymbol der folgenden Syntaxbeschrei bung A 3 1 Programm PEARL Programm Modul Modul MODULE Bezeichner des Moduls Systemteil Problemteil Problemteil MODEND A 4 A 3 2 A 3 3 Systemteil Systemteil SYSTEM Benutzernamen Vereinbarung f r Dation Interrupt oder Si
163. ungsschutz INV Variablen k nnen mit einem Zuweisungsschutz dem Attribut INV von invariant deklariert werden um abgesehen von der Initialisierung Zuweisungen an diese Variablen zu verbieten Das Attribut INV wird unmittelbar vor dem Typ Attribut ange geben Beispiel DCL Pi INV FLOAT INIT 3 141 Pi 3 Ergibt Fehlermeldung des Compilers Ein einmal f r ein Objekt in seiner Deklaration vereinbarter Zuweisungsschutz kann nicht aufgehoben werden er mu deshalb in Spezifikationen dieses Objekts ber cksichtigt werden aber auch bei bertragungen als aktueller Prozedurparameter oder bei der Benutzung als Wert von Referenz Variablen Andererseits darf auf eine dieser Arten ein bei der Deklaration noch nicht vereinbarter Zuweisungsschutz ent stehen Beispiel P PROC INV FIXED IDENT FLOAT IDENT Prozedurk rper END DCL 10 20 FIXED INV FLOAT INITIAL 3 141 Ri REF FLOAT R2 REF INV FIXED SPC pi FLOAT IDENT Pi Falsch CALLP Tab Pi Falsch R1 Falsch R2 Tab 5 7 Die Spezifikation von pi ist falsch weil Zuweisungen an pi erlaubt werden und somit der Zuweisungsschutz von Pi unterlaufen wird 5 27 Der Aufruf von P ist falsch weil der zu Pi geh rige formale Parameter x ohne Zuweisungs schutz INV vereinbart ist und somit im K rper von P ber eine Zuweisung an x eine verbotene Wert nderung von Pi erfolgen k nnte Dageg
164. ur durch spezielle Sperr und Freigabe Anweisungen ge ndert werden Sema Variablen werden wie folgt deklariert DCL Bezeichner Angabe SEMA Beispiel DCL Ein Aus SEMA Nach ihrer Deklaration hat eine Sema Variable den Zustand gesperrt Soll eine Sema Variable explizit den Zustand gesperrt erhalten ist folgende Sperr Anweisung auszuf hren REQUEST Name Sema Die Wirkung dieser Anweisung h ngt von dem aktuellen Wert der bezeichneten Sema Variablen ab Ist der Wert gr er Null wird er um 1 erniedrigt Ist der Wert gleich Null bleibt er unver ndert die ausf hrende Task wird je doch angehalten und in eine Warteschlange eingereiht die der Sema Vari ablen intern zugeordnet ist die Task wird blockiert Die Ausf hrung der Freigabe Anweisung RELEASE Name Sema bewirkt da der Wert der bezeichneten Sema Variablen um 1 erh ht wird Au er dem werden die in der Warteschlange der Sema Variablen stehenden Tasks befreit diese wiederholen ihre Sperr Anweisung in der Reihenfolge ihrer Priorit t Beispiel Mit diesen Hilfsmitteln l t sich nun das Problem der Pufferung von Nachrichten folgenderma Ben l sen F r die Eingabe von Nachrichten in den Puffer wird eine Sema Variable In_den_Puffer f r die Ausgabe aus dem Puffer eine Sema Variable Aus_dem_Puffer vereinbart Bei der Vereinba rung werden In_den_Puffer und Aus_dem_Puffer implizit mit gesperrt initialisiert Die Task Ausgabe wird von au en gesta
165. weisung bewirkt da der Programmablauf an der durch den Markenbe zeichner bestimmten Programmstelle fortgesetzt wird Diese Programmstelle mu eine Anweisung sein und darf nicht au erhalb des K rpers der Task oder Prozedur liegen die die Sprung Anweisung ausf hrt Beispiel messen lesen READ Wer FROM GOTO lesen Allgemein k nnen Anweisungen mehrfach mit Marken markiert werden d h die Marke wird durch Doppelpunkt getrennt unmittelbar vor der gegebenenfalls bereits markierten Anweisung angegeben 7 5 Exit Anweisung EXIT Die Exit Anweisung dient zum gezielten Verlassen von Bl cken und Schleifen Mit EXIT k nnen auch gezielt mehrfach geschachtelte Bl cke und Schleifen verlassen werden die dann am entsprechenden Ende einen Bezeichner das Sprungziel tra gen m ssen Exit Anweisung EXIT Bezeichner Block oder Schleife Fehlt der Bezeichner so wird der Programmablauf mit der Anweisung fortgesetzt die dem Ende des Blocks oder der Schleife folgt in der die Exit Anweisung steht Ist der Bezeichner angegeben so wird der Programmablauf mit der Anweisung fort gesetzt die dem Ende des bezeichneten Blocks oder der bezeichneten Schleife folgt Dabei mu die Exit Anweisung in einem inneren Block oder einer inneren Schleife stehen Die Exit Anweisung dient nicht zum Verlassen von Prozeduren oder Tasks 7 8 Beispiel BEGIN Analyse TO Anzahl REPEAT Vergleich IF Messwert lt
166. wie z B die Kanalnummer und bei digitalen E A Kan len kann sogar die Auswahl einzelner Bits gew nscht sein Nach dem Systemnamen ist deshalb f r Proze ger te folgende Erweiterung m glich Erweiterung Prozess Ger t nngz Kanalnummer nngz Position nngz Breite Mit Position kann z B die Anfangsbit Position des Ger teanschlusses einer digitalen Ein Aus gabe mit Breite die Anzahl der Bits dieses Ger teanschlusses angegeben werden Ein Systemteil besteht also aus einer Anzahl von Ger tezuordnungen folgender Form Ger te Zuordnung Benutzer Name System Name Erweiterung Prozess Ger t Benutzer Name Bezeichner F r das unten angegebene Beispiel eines Systemteils wird ein fiktives Rechner system mit folgenden Systemnamen vorausgesetzt System Name Ger t STDIN Standard Eingabe Konsole STDOUT Standard Ausgabe Konsole SERIAL F r E A mit seriellen Schnittstellen DISC Zum Lesen und Schreiben von Dateien Platte Floppy DIGEA Adapter f r digitale E A PEARL Beispiel f r Systemteil MODULE Beispiel SYSTEM termin STDIN termout STDOUT file DISC ty 1 SERIAL 1 Dy A SERIAL 4 counter DIGEA 0 schalter DIGEA 1 16 1 motor DIGEA 1 1 4 PROBLEM 10 2 Die verf gbaren Ger te und die zugeordneten Systemnamen m ssen dem jeweiligen Benutzerhandbuch einer PEARL Implementierung entnommen werden Dort ist auch beschrieben ob
167. wiesen Die Zuweisung zu den Variablen erfolgt dabei nach den allgemeinen Regeln f r Zuweisungen Die Eingabe ist beendet wenn die Variablenliste abgearbeitet ist Sind noch Listen elemente vorhanden aber keine Datenelemente mehr wird eine Fehlermeldung ausgegeben Bei Ausf hrung der Put Anweisung werden die Werte der in der Liste nach PUT angegebenen Ausdr cke in der aufgef hrten Reihenfolge ausgegeben In der Reihenfolge der Niederschrift ist jeder Variablen in der Variablenliste der Get Anweisung ein Format in der Format Positions Liste zugeordnet das die externe Darstellung der Daten auf der angegebenen Datenstation beschreibt und zur Wand lung in die rechnerinterne Darstellung benutzt wird Die Art des Formats wird durch den Typ der Variablen bestimmt Neben Formaten kann die Liste der Format Positio nen auch Positionsangaben vgl 10 4 zur Positionierung in der Datenstation enthal ten Ist die Variablenliste noch nicht ersch pft so werden die anstehenden Positio nierungen ausgef hrt und die eben genannte Zuordnung erst mit dem n chst fol genden Format fortgesetzt Ist die Variablenliste dagegen schon ersch pft so wer den die nachfolgenden Positionsangaben ausgewertet bis ein Format auftritt oder die Liste abgearbeitet ist Enth lt die Variablenliste ein Feld oder Ausschnitt so werden die folgenden Formate den Feldelementen nacheinander zugeordnet Die Anzahl der bertragenen Datenelemente wird nur durch die Variab
168. wird durch die CREATED Angabe festge legt Alle in den folgende Kapiteln beschriebenen Ein und Ausgabeanweisungen bezie hen sich auf Benutzer Dations die direkte Angabe von System Dations f hrt zu Laufzeitfehlern Dation Deklaration DECLARE DCL Bezeichner Angabe Typ Dation Global Attribut CREATED Name system def Dation Es d rfen demnach keine Felder von Datenstationen vereinbart werden Es ist jedoch m glich Felder von Referenzen auf Datenstationen zu deklarieren um Datenstationen auch indiziert ansprechen zu k nnen Die verschiedenen Attribute erm glichen es bereits zur bersetzungszeit Widerspr che zwischen den Eigenschaften von Datenstationen und ihrer Benutzungsweise in E A Anweisungen festzustellen Typ Dation DATION Quelle Senke Attribut Klassenattribut Gliederung Zugriffsattribut Kontroll Attribut Jede Datenstation ist Quelle und oder Senke einer Daten bertragung Die betref fende Eigenschaft mu bei der Vereinbarung angegeben werden Quelle Senke Attribut IN OUT INOUT IN bedeutet da diese Datenstation Quelle f r Daten ist d h sie darf nur in solchen Daten bertragungsanweisungen auftreten die diese Daten in den Arbeitsspeicher bertragen z B digitale Eingaben Tastatur Mit OUT spezifizierte Datenstationen d rfen nur als Senken f r Ausgaben aus dem Arbeitsspeicher benutzt werden z B Drucker Eine Datenstation mit dem Attribut INOUT l t Daten
169. x wert FROM sting in BY RST conv_error 4 10 2 10 33 10 7 Die Take und die Send Anweisung Die Take Anweisung dient zur Eingabe die Send Anweisung zur Ausgabe von Daten Diese Anweisungen sind f r die bertragung von Proze daten vorgesehen bzw zum Datenaustausch mit Benutzer spezifischen Treibern Die Datenstation mu das Klassenattribut BASIC besitzen Take Anweisung TAKE Name Variable FROM NameS Dation BY RST S CTRL Format RST S CTRL Format 1 Send Anweisung SEND Ausdruck TO Names Dation BY RST S CTRL Format RST S CTRL Format RST S CTRL Format RST Name Fehlervariable FIXED Name Variable FIXED CONTROL Ausdruck Ausdruck Ausdruck Die Typen der Variablen in der Take Anweisung bzw des Ausdrucks in der Send Anweisung sind implementationsabh ngig Die Parameterangaben RST S und CONTROL d rfen in beliebiger Reihenfolge doch jeweils nur einmal angegeben werden Die Bedeutungen der CONTROL und S Formate sind implementierungsabh ngig und deshalb dem jeweiligen Benutzer handbuch einer PEARL Implementierung zu entnehmen Beispiel SYSTEM Motor DIGEA 1 1 4 PROBLEM SPC Motor DATION OUT BASIC DCL Ein INV BIT 4 INIT 1010 1 SEND Ein TO Motor 10 34 10 8 Fehlerbehandlung in E A Anweisungen RST Normalerweise f hren Fehler die w hrend der Abarbeitung von E A Anweisungen erkannt werden zur Terminierung de
Download Pdf Manuals
Related Search
Related Contents
Toshiba PDR-T20 Digital Camera User Manual Fujitsu Wireless Optical Mouse MB Simple Serial モニタ SSM−2509 取扱説明書 エムシーアイ WaterWick SPATH6WWHD Instructions / Assembly : Free Download, Borrow, and Streaming : Internet Archive Chicago Electric 95235 User's Manual Samsung Galaxy S6 Manual de utilizare Cordless Impact Wrench Boulonneuse sans fil Llave de Impacto EN:ILU User Manual Copyright © All rights reserved.
Failed to retrieve file