ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’@@’’’’ handbŪcher.2’’’(59‰p‹’’’’’č’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’systemhandbuch.1’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’éž’’’’’’’’’’’’’ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’"±a€ė’’Y”0’’’’0`Z`0ŸM’’ZZ’’a€’’’’’’’’’’’’’’€’M’’’’’’’’’’’aaY’’’’’’’’’’’’’’’’’’р’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’’’’’’’’’’’’’’’’’’’’A’!’’’’’’’’’’’’’’’’’’’’’ #off ("u")# ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #off("b")# ’’’’’’’’’’‘’!’’’’’’’’’’’’’’’’’’’’’ #on ("b")# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’?’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #off("b")# ’’’’’’’’’’1‚’L’’’’’’’’’’’’’’’’’’’‘‚’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į‚’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ƒ’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’Qƒ’’’’’’’’’’’’’’’’’’’’’’ #free(4.0)# ’’’’’’’’’qƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ƒ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’#block# ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’у’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’„’Q’’’’’’’’’’’’’’’’’’’a„’O’’’’’’’’’’’’’’’’’’’Į„’T’’’’’’’’’’’’’’’’’’’!…’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a…’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±…’+’’’’’’’’’’’’’’’’’’’į…’%’’’’’’’’’’’’’’’’’’’†’’’’’’’’’’’’’’’’’’’’A†’'’’’’’’’’’’’’’’’’’’’q†’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”†’T’’’’’’’’’’’’’’’’’’’‡’I’’’’’’’’’’’’’’’’’’’Q‡’’’’’’’’’’’’’’’’’’’’’’#page#’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q‡’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’`’’±‡’’’’’’’’’’’[’’’’’’’’’’’’’’’’\’’ᇒ’’’’’’’’’’]’’!ˆ’’’’’’’’’’’^’’aˆ’’’’’’’’’’’_’’’’’’’’’’’’’’’’`’’’’’’’’’’’’’’’’ž’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ˆ’’’’’’’’’’’’’’’’’’’’’’ #pageblock# ’’’’’’’’’’’#block# ’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įˆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ሒ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‰’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!‰’R’’’’’’’’’’’’’’’’’’’‰’K’’’’’’’’’’’’’’’’’’’щ’U’’’’’’’’’’’’’’’’’’’1Š’M’’’’’’’’’’’’’’’’’’’Š’M’’’’’’’’’’’’’’’’’’’ъ’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!‹’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a‹’v’’’’’’’’’’’’’’’’’’’į‹’R’’’’’’’’’’’’’’’’’’’AŒ’U’’’’’’’’’’’’’’’’’’’”Œ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ጒ\’’’’’’’’’’’’’’’’’’’A’U’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’R’’’’’’’’’’’’’’’’’’’’’ buchs. ’’’’’’’’’Ž’M’’’’’’’’’’’’’’’’’’’QŽ’P’’’’’’’’’’’’’’’’’’’±Ž’O’’’’’’’’’’’’’’’’’’’’’ ren. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a’c’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’я’Q’’’’’’’’’’’’’’’’’’’1’M’’’’’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’Z’’’’’’’’’’’’’’’’’’’!‘’A’’’’’’’’’’’’’’’’’’’q‘’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į‘’N’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1’’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a’’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±’’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’’V’’’’’’’’’’’’’’’’’’’’’minal: ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A“’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’“’X’’’’’’’’’’’’’’’’’’’į“’P’’’’’’’’’’’’’’’’’’’A”’K’’’’’’’’’’’’’’’’’’’‘”’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į”’[’’’’’’’’’’’’’’’’’’’!•’X’’’’’’’’’’’’’’’’’’’•’M’’’’’’’’’’’’’’’’’’’ѕ’T’’’’’’’’’’’’’’’’’’’1–’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a–’V’’’’’’’’’’’’’’’’’’’Į–’R’’’’’’’’’’’’’’’’’’’!—’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q—’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘—’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ї’N’’’’’’’’’’’______________________________________________________________ ’^Dies ist ein Paket, das eine Tausch-Prozedur fŪr INT-Datenobjekte bereitstellt. Das’’’’’’’’’’’NPACKET kann Ūbersetzt und dem ELAN-Compiler bekannt gemacht werden’’’’’’’’’’’’^(EUMEL: "insertieren"). Ist das geschehen, kann man 'swap' wie alle anderen ProzeŻ’’’’’’’’’’’’^duren (z.B. 'put', 'get') in einem Programm verwenden. TatsŁchlich werden die meiŻ’’’’’’’’’’’’Nsten Prozeduren und Operatoren (aber auch einige Datentypen), die in ELAN zur’^VerfŪgung stehen, nicht durch den ELAN-Compiler realisiert, sondern durch solche’’’’’’’’’’’’’’NPACKETs. Um solche Objekte einigermaūen zu standardisieren, wurde in der’’’’’’NELAN-Sprachbeschreibung festgelegt, welche Datentypen, Prozeduren und OperatoŻNren in jedem ELAN-System vorhanden sein mŪssen. Solche Pakete werden StanŻ’’’’Ndard-Pakete genannt. Jeder Installation - aber auch jedem Benutzer - steht es’Njedoch frei, zu den Standard-Paketen zusŁtzliche Pakete dem Compiler bekannzuŻ>geben, und damit den ELAN-Sprachumfang zu erweitern. ’’’’’’’’’>Schutz vor fehlerhaftem Zugriff auf Datenobjekte ’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> PACKET stack handling DEFINES push, pop, init stack: ’’’’’’’’ LET max = 1000; ’’’’’’’’’’’’’> ROW max INT VAR stack; (* siehe Kapitel Reihung, 2.6.1. *) ’’ INT VAR stack pointer; ’’’’’’ PROC init stack: ’’’’’’’’’’’’ stack pointer := 0 ’’’’’’’ END PROC init stack; ’’’’’’’’. PROC push (INT CONST dazu wert): ’’’’’’’’’’’’ stack pointer INCR 1; ’’’’ IF stack pointer > max ’’’. THEN errorstop ("stack overflow") ’’’’’’. ELSE stack [stack pointer] := dazu wert  END PROC push; ’’’’’’’’’’’’’’ PROC pop (INT VAR von wert):  IF stack pointer = 0 ’’’’’. THEN errorstop ("stack empty") ’’’’’’’’’. ELSE von wert := stack [stack pointer]; . stack pointer DECR 1 ’’’’’’’’’’’’’’ END PROC pop  END PACKET stack handling; ’’N____________________________________________________________________________ ’^Dieses Packet realisiert einen Stack. Den Stack kann man Ūber die Prozeduren 'init’’’’’’’’’’’’.stack', 'push' und 'pop' benutzen. ’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ werte einlesen und pushen; ’’ werte poppen und ausgeben. ’’ werte einlesen und pushen: ’’. INT VAR anzahl :: 0, wert; ’’’’’’’’’’’’’’’ get (wert); ’’’’’’’’’’’ push (wert); ’’’’’’’’’’ anzahl INCR 1 ’’’’’’’’’. UNTIL ende kriterium END REP. ’’’’’’’’’’’’ werte poppen und ausgeben: ’’ INT VAR i; ’’’’’’’’’’’’’’’. FOR i FROM 1 UPTO anzahl REP ’’’’’’’’’’’’’ pop (wert); ’’’’’’’’’’’ put (wert) ’’’’’’’’’’’’N____________________________________________________________________________ ’^Die Datenobjekte 'stack' und 'stack pointer' haben nur GŪltigkeit innerhalb des’’’’’’’’’’’’’’’PACKETs 'stack handling'. ’’’’Anweisungen wie z.B. ’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ put (stack [3]); ’’’’’’’’’’’’ stack [27] := 5 ’’’’’’’’’’’’’N____________________________________________________________________________ ’Nauūerhalb des PACKETs 'stack handling' sind also verboten und werden vom’’’’’’ELAN-Compiler entdeckt. ’’’’’’^Ein PACKET bietet also auch einen gewissen Schutz vor fehlerhafter Verwendung von’’’’’’’’’’’’’NProgrammen und Datenobjekten. Wichtig ist weiterhin, daū die Realisierung des’NStacks ohne weiteres geŁndert werden kann, ohne daū Benutzerprogramme im 'main^packet' geŁndert werden mŪssen, sofern die Schnittstelle nicht verŁndert wird. BeiŻ’’’’’’’’’’’^spielsweise kann man sich entschlieūen, den Stack nicht durch eine Reihung, sonŻ’’’’’’’’’’’’’’^dern durch eine Struktur zu realisieren. Davon bleibt ein Benutzerprogramm unbeŻ’’’’’’’’’’’’’’.Realisierung von abstrakten Datentypen ’’’’’’’^Der VollstŁndigkeit halber wird folgendes Beispiel hier gezeigt. Wie neue Datentypen’’’’’’’’’’>definiert werden, wird in Kapitel 2.7.1. erklŁrt. ’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> PACKET widerstaende DEFINES WIDERSTAND, REIHE, PARALLEL, ’’’’. :=, get, put: ’’’ TYPE WIDERSTAND = INT; ’’’’’’> OP := (WIDERSTAND VAR l, WIDERSTAND CONST r): ’’’’’’’’’’’’’’’ CONCR (l) := CONCR (r) ’’’ PROC get (WIDERSTAND VAR w):  INT VAR i; ’’’’’’’’’’’’’’’ w := WIDERSTAND : (i) ’’’’ END PROC get; ’’’’’’’’’’’’’’’. PROC put (WIDERSTAND CONST w): ’’’’’’’’’’’’’’ put (CONCR (w)) ’’’’’’’’’’ END PROC put; ’’’’’’’’’’’’’’’. WIDERSTAND OP REIHE (WIDERSTAND CONST l, r): . WIDERSTAND : ( CONCR (l) + CONCR (r)) ’’’’ END OP REIHE; ’’’’’’’’’’’’’’’> WIDERSTAND OP PARALLEL (WIDERSTAND CONST l, r): ’’’’’’’’’’’’’ WIDERSTAND : ’’’’’’’’’’’’’’> ((CONCR (l) * CONCR (r)) DIV (CONCR (l) + CONCR (r))) ’’’ END OP PARALLEL ’’’’’’’’’’’’’ END PACKET widerstaende ’’’’’N____________________________________________________________________________ ’NDieses Programm realisiert den Datentyp WIDERSTAND und mit den Operationen’’’’eine Fachsprache. ’’’’’’’’’’’’.2.4.4 Terminatoren fŪr Refinements, ’’’’’’’’’. Prozeduren und Operatoren’’’’’’’’’’’’’’NDas LEAVE-Konstrukt wird verwendet, um eine benannte Anweisung (Refinement,’’’^Prozedur oder Operator) vorzeitig zu verlassen. Es ist auch mŚglich, geschachtelte’’’’’’’’’’’’Refinements zu verlassen. ’’’’>#on("i")##on("b")#LEAVE#off("i")##off("b")# Name ’’’’’’’’’’’’’^Durch eine (optionale) WITH-Angabe kann auch eine wertliefernde benannte AnweiŻ’’’’’’’’’’’’’’’sung verlassen werden. ’’’’’’’n#on("i")##on("b")#LEAVE#off("i")##off("b")# Name #on("i")##on("b")#WITH#off("i")##off("b")# Ausdruck ’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT OP ** (INT CONST basis, exp): ’’’’’’’’’’’ IF exp = 0 ’’’’’’’’’’’’’’ THEN LEAVE ** WITH 1 ’ ELIF exp < 0 ’’’’’’’’’’’’ THEN LEAVE ** WITH 0 ’. INT VAR zaehler, ergebnis; ’’’’’’’’’’’’’ ergebnis := basis; ’’’’’’. FOR zaehler FROM 2 UPTO exp REP ’’’’’’’’’. ergebnis := ergebnis * basis ’’’’’’’’’ ergebnis N____________________________________________________________________________ ’>(Diese Operation realisiert die Exponentiation fŪr INT-Werte) .2.4.5 GenerizitŁt von Prozeduren ’’’’’’’’’’’’ und Operatoren’’’’’’’’’NIn ELAN ist es mŚglich, unterschiedlichen Prozeduren bzw. Operatoren gleiche’’NNamen zu geben. Solche Prozeduren (Operatoren) werden generische Prozeduren’’’^(Operatoren) genannt. Die Identifizierung erfolgt durch Anzahl, Reihenfolge und DatenŻ’’’’’’’’.typ der Parameter (Operanden). ’’’’’’’’’’’’’’’NDeshalb werden Prozeduren und Operatoren unter Angabe des Prozedur- bzw. des’’Operatorkopfes dokumentiert. ’INT OP MOD (INT CONST l, r) REAL OP MOD (REAL CONST l, r) ^Der MOD-Operator liefert den Rest einer Division. Er ist sowohl fŪr INT- wie auch’’’’’’’’’’’’’.fŪr REAL-Datenobjekte definiert. ’’’’’’’’’’’’’PROC put (INT CONST wert) ’’’’PROC put (REAL CONST wert) ’’’PROC put (TEXT CONST wert) ’’’NDie put-Prozedur ist fŪr INT-, REAL- und TEXT-Datenobjekte definiert. ’’’’’’’’’’’’’’’’!˜’N’’’’’’’’’’’’’’’’’’’q˜’W’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ј’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’™’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q™’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘™’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’љ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’š’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qš’4’’’’’’’’’’’’’’’’’’’‘š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±š’'’’’’’’’’’’’’’’’’’’’ᚒ7’’’’’’’’’’’’’’’’’’’!›’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q›’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q›’D’’’’’’’’’’’’’’’’’’’Į›’1’’’’’’’’’’’’’’’’’’’œ’F’’’’’’’’’’’’’’’’’’’Qœ’O’’’’’’’’’’’’’’’’’’’±œ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńœ’P’’’’’’’’’’’’’’’’’’’Q’J’’’’’’’’’’’’’’’’’’’”’M’’’’’’’’’’’’’’’’’’’ń’(’’’’’’’’’’’’’’’’’’’!ž’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qž’L’’’’’’’’’’’’’’’’’’’Įž’I’’’’’’’’’’’’’’’’’’’Ÿ’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŸ’M’’’’’’’’’’’’’’’’’’’”Ÿ’N’’’’’’’’’’’’’’’’’’’’’ grund)). ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŸ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’V’’’’’’’’’’’’’’’’’’’q ’R’’’’’’’’’’’’’’’’’’’Ń ’R’’’’’’’’’’’’’’’’’’’1”’M’’’’’’’’’’’’’’’’’’’”’M’’’’’’’’’’’’’’’’’’’Ń”’Q’’’’’’’’’’’’’’’’’’’1¢’T’’’’’’’’’’’’’’’’’’’’’ MB Grenze. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘¢’L’’’’’’’’’’’’’’’’’’’ᢒP’’’’’’’’’’’’’’’’’’’A£’R’’’’’’’’’’’’’’’’’’’”£’P’’’’’’’’’’’’’’’’’’’¤’I’’’’’’’’’’’’’’’’’’’Q¤’R’’’’’’’’’’’’’’’’’’’±¤’X’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’„’S’’’’’’’’’’’’’’’’’’’q„’R’’’’’’’’’’’’’’’’’’’Ń„’V’’’’’’’’’’’’’’’’’’’1¦’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a¦’P’’’’’’’’’’’’’’’’’’’Į¦’Q’’’’’’’’’’’’’’’’’’’!§’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A§’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’§’/’’’’’’’’’’’’’’’’’’’Į§’/’’’’’’’’’’’’’’’’’’’Ø’/’’’’’’’’’’’’’’’’’’’AØ’/’’’’’’’’’’’’’’’’’’’Ø’/’’’’’’’’’’’’’’’’’’’ĮØ’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’©’K’’’’’’’’’’’’’’’’’’’Q©’Q’’’’’’’’’’’’’’’’’’’±©’S’’’’’’’’’’’’’’’’’’’Ŗ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŖ’O’’’’’’’’’’’’’’’’’’’”Ŗ’N’’’’’’’’’’’’’’’’’’’ńŖ’P’’’’’’’’’’’’’’’’’’’Q«’P’’’’’’’’’’’’’’’’’’’±«’W’’’’’’’’’’’’’’’’’’’¬’K’’’’’’’’’’’’’’’’’’’a¬’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¬’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ѭ’?’’’’’’’’’’’’’’’’’’’!­’?’’’’’’’’’’’’’’’’’’’q­’?’’’’’’’’’’’’’’’’’’’Į­’?’’’’’’’’’’’’’’’’’’’®’?’’’’’’’’’’’’’’’’’’’a®’?’’’’’’’’’’’’’’’’’’’±®’?’’’’’’’’’’’’’’’’’’’Æ’?’’’’’’’’’’’’’’’’’’’QÆ’?’’’’’’’’’’’’’’’’’’’”Æ’?’’’’’’’’’’’’’’’’’’’ńÆ’?’’’’’’’’’’’’’’’’’’’A°’?’’’’’’’’’’’’’’’’’’’‘°’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į°’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1±’Q’’’’’’’’’’’’’’’’’’’‘±’U’’’’’’’’’’’’’’’’’’’ń±’Y’’’’’’’’’’’’’’’’’’’’’ Seite 3). ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q²’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±²’V’’’’’’’’’’’’’’’’’’’³’O’’’’’’’’’’’’’’’’’’’q³’P’’’’’’’’’’’’’’’’’’’’’ist. ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ѳ’f’’’’’’’’’’’’’’’’’’’A“’S’’’’’’’’’’’’’’’’’’’”“’K’’’’’’’’’’’’’’’’’’’ń“’O’’’’’’’’’’’’’’’’’’’’’ tern will. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qµ’S’’’’’’’’’’’’’’’’’’’±µ’j’’’’’’’’’’’’’’’’’’’!¶’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A¶’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘¶’R’’’’’’’’’’’’’’’’’’’ń¶’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A·’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘·’U’’’’’’’’’’’’’’’’’’’ń·’O’’’’’’’’’’’’’’’’’’’Qø’Q’’’’’’’’’’’’’’’’’’’±ø’R’’’’’’’’’’’’’’’’’’’¹’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A¹’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘¹’(’’’’’’’’’’’’’’’’’’’Į¹’{’’’’’’’’’’’’’’’’’’’Aŗ’U’’’’’’’’’’’’’’’’’’’”ŗ’S’’’’’’’’’’’’’’’’’’’»’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1»’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’»’V’’’’’’’’’’’’’’’’’’’į»’Q’’’’’’’’’’’’’’’’’’’A¼’Q’’’’’’’’’’’’’’’’’’’”¼’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ѽ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’½’K’’’’’’’’’’’’’’’’’’’a½’Q’’’’’’’’’’’’’’’’’’’’’ ersetzen. ’’’’’’’’’’’Į½’O’’’’’’’’’’’’’’’’’’’!¾’:’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’a¾’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±¾’M’’’’’’’’’’’’’’’’’’’æ’P’’’’’’’’’’’’’’’’’’’aæ’M’’’’’’’’’’’’’’’’’’’’’ werden muū. ’’’’’’’’’±æ’N’’’’’’’’’’’’’’’’’’’Ą’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AĄ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ą’&’’’’’’’’’’’’’’’’’’’±Ą’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃĄ’T’’’’’’’’’’’’’’’’’’’1Į’e’’’’’’’’’’’’’’’’’’’”Į’X’’’’’’’’’’’’’’’’’’’Ā’T’’’’’’’’’’’’’’’’’’’aĀ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ā’O’’’’’’’’’’’’’’’’’’’ńĀ’K’’’’’’’’’’’’’’’’’’’AĆ’N’’’’’’’’’’’’’’’’’’’‘Ć’V’’’’’’’’’’’’’’’’’’’’’ ben auf. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĆ’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QÄ’5’’’’’’’’’’’’’’’’’’’‘Ä’5’’’’’’’’’’’’’’’’’’’ŃÄ’5’’’’’’’’’’’’’’’’’’’Å’5’’’’’’’’’’’’’’’’’’’QÅ’5’’’’’’’’’’’’’’’’’’’‘Å’5’’’’’’’’’’’’’’’’’’’ŃÅ’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’oder ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ę’5’’’’’’’’’’’’’’’’’’’QĘ’5’’’’’’’’’’’’’’’’’’’‘Ę’5’’’’’’’’’’’’’’’’’’’ŃĘ’5’’’’’’’’’’’’’’’’’’’Ē’5’’’’’’’’’’’’’’’’’’’QĒ’5’’’’’’’’’’’’’’’’’’’‘Ē’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃĒ’N’’’’’’’’’’’’’’’’’’’!Č’P’’’’’’’’’’’’’’’’’’’Č’d’’’’’’’’’’’’’’’’’’’ńČ’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AÉ’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qÉ’S’’’’’’’’’’’’’’’’’’’’’liert. ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃÉ’R’’’’’’’’’’’’’’’’’’’1Ź’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŹ’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ź’M’’’’’’’’’’’’’’’’’’’ńŹ’M’’’’’’’’’’’’’’’’’’’AĖ’M’’’’’’’’’’’’’’’’’’’‘Ė’M’’’’’’’’’’’’’’’’’’’įĖ’M’’’’’’’’’’’’’’’’’’’1Ģ’M’’’’’’’’’’’’’’’’’’’Ģ’M’’’’’’’’’’’’’’’’’’’ŃĢ’M’’’’’’’’’’’’’’’’’’’!Ķ’M’’’’’’’’’’’’’’’’’’’qĶ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĶ’S’’’’’’’’’’’’’’’’’’’!Ī’M’’’’’’’’’’’’’’’’’’’qĪ’N’’’’’’’’’’’’’’’’’’’ĮĪ’T’’’’’’’’’’’’’’’’’’’!Ļ’6’’’’’’’’’’’’’’’’’’’aĻ’P’’’’’’’’’’’’’’’’’’’ĮĻ’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ #free(1.0)# ’’’’’’’’’Š’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŠ’,’’’’’’’’’’’’’’’’’’’qŠ’,’’’’’’’’’’’’’’’’’’’”Š’,’’’’’’’’’’’’’’’’’’’ŃŠ’,’’’’’’’’’’’’’’’’’’’Ń’,’’’’’’’’’’’’’’’’’’’1Ń’,’’’’’’’’’’’’’’’’’’’aŃ’,’’’’’’’’’’’’’’’’’’’‘Ń’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŃ’O’’’’’’’’’’’’’’’’’’’!Ņ’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŅ’N’’’’’’’’’’’’’’’’’’’”Ņ’S’’’’’’’’’’’’’’’’’’’Ó’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QÓ’T’’’’’’’’’’’’’’’’’’’±Ó’U’’’’’’’’’’’’’’’’’’’Ō’I’’’’’’’’’’’’’’’’’’’aŌ’T’’’’’’’’’’’’’’’’’’’ĮŌ’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Õ’V’’’’’’’’’’’’’’’’’’’aÕ’e’’’’’’’’’’’’’’’’’’’ŃÕ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ö’R’’’’’’’’’’’’’’’’’’’aÖ’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ö’M’’’’’’’’’’’’’’’’’’’×’M’’’’’’’’’’’’’’’’’’’Q×’M’’’’’’’’’’’’’’’’’’’”×’M’’’’’’’’’’’’’’’’’’’ń×’M’’’’’’’’’’’’’’’’’’’AŲ’M’’’’’’’’’’’’’’’’’’’‘Ų’M’’’’’’’’’’’’’’’’’’’įŲ’M’’’’’’’’’’’’’’’’’’’1Ł’M’’’’’’’’’’’’’’’’’’’Ł’M’’’’’’’’’’’’’’’’’’’ŃŁ’M’’’’’’’’’’’’’’’’’’’!Ś’M’’’’’’’’’’’’’’’’’’’qŚ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŚ’S’’’’’’’’’’’.PrioritŁt von generischen Operatoren’’’’’’’’’’^Bei der Neudefinition von Operatoren kann man bereits benutzte Sonderzeichen oder’’’’’’’’’’’’’^SchlŪsselwŚrter benutzen. In diesem Fall bekommt der neudefinierte Operator die’’’’’’’’’’’’’’’>gleiche PrioritŁt wie der bereits vorhandene Operator. ’’’’’’’.2.4.6 Rekursive Prozeduren ’’’’’’’’’’’’’’’ und Operatoren’’’’’>Alle Prozeduren und Operatoren dŪrfen in ELAN rekursiv sein. ’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT PROC fakultaet (INT CONST n): ’’’’’’’’’’’. THEN fakultaet (n-1) * n ’’’’’’’’’’’’’’’ END PROC fakultaet ’’’’’’’’’’N____________________________________________________________________________ ’^Die FakultŁtsfunktion ist kein gutes Beispiel fŪr eine Rekursion, denn das Programm’’’’’’’’’’’>kann leicht in eine iterative Version umgewandelt werden: ’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT PROC fakultaet (INT CONST n): ’’’’’’’’’’’ INT VAR prod :: 1, i; ’’’’ FOR i FROM 2 UPTO n REP ’’ prod := prod * i ’’’’’’’ END PROC fakultaet ’’’’’’’’’’N____________________________________________________________________________ ’^Die Umwandlung von einem rekursiven Programm in ein iteratives ist Ūbrigens immer’’’’’’’’’’’’’^mŚglich, jedoch oft nicht so einfach, wie in dem Beispiel der Ackermann-Funktion: ’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT PROC acker (INT CONST m, n): ’’’’’’’’’’’’ THEN n + 1 ’’’’’’’’’’’’’ ELIF n = 0 ’’’’’’’’’’’’’’’ THEN acker (m-1, 0) ’’’’. ELSE acker (m - 1, acker (m, n - 1)) ’’’ END PROC acker ’’’’’’’’’’’’’’N____________________________________________________________________________ ’^Das eigentliche Einsatzgebiet von rekursiven Algorithmen liegt aber bei den 'backŻ’’’’’’’’’’’’^track'-Verfahren. Diese werden eingesetzt, wenn eine exakte algorithmische LŚsung’’’’’’’’’’’’’^nicht bekannt ist oder nicht gefunden werden kann und man verschiedene Versuche’’’’’’’’’’’’’’’>machen muū, um zu einem Ziel (oder LŚsung) zu gelangen. ’’’’’’programmierhandbuch.2a’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.2b’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Æų’’’’’’’’’’’’’’’ą’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²Ya€ė’’ur’’’’vM’’’’’Y’ kap2b’’’’’’’’’’’’’’’’’’’’’u’’’’’’’’’’’’’’’’’’a€’C’’’’’’’’’’’’’’’’’’’±€’2’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’ń€’’’’’’’’’’’’’’’’’’’’!’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’q’’’’’’’’’’’’’’’’’’’’‘’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’ၒE’’’’’’’’’’’’’’’’’’’1‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomodd# ’’’’’’’’’Q‚’E’’’’’’’’’’’’’’’’’’’”‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į‚’N’’’’’’’’’’’’’’’’’’’1ƒ’J’’’’’’’’’’’’’’’’’’’ƒ’O’’’’’’’’’’’’’’’’’’’გQ’’’’’’’’’’’’’’’’’’’A„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a„’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”„’P’’’’’’’’’’’’’’’’’’’…’R’’’’’’’’’’’’’’’’’’’a…’S’’’’’’’’’’’’’’’’’’’Į…’O’’’’’’’’’’’’’’’’’’’!†’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a†’’’’’’’’’’’’’’’’’’’’†’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”†’M’’’’’’’’’’’’’’’’’’’ń†’A’’’’’’’’’’’’’’’’’’’A‡’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ page; ’’’’’’’’’’’’’’q‡’*’’’’’’’’’’’’’’’’’’’”‡’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ч’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ˆ’T’’’’’’’’’’’’’’’’’’’ˆ’G’’’’’’’’’’’’’’’’’’’ш’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‰’’’’’’’’’’’’’’’’’’’’1‰’/’’’’’’’’’’’’’’’’’’’q‰’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‰’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ቒM’’’’’’’’’’’’’’’’’’’1Š’A’’’’’’’’’’’’’’’’’’’Š’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Š’’’’’’’’’’’’’’’’’’’’ъ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŠ’’’’’’’’’’’’’’’’’’’’’’ page. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‹’’’’’’’’’’’’’’’’’’’’1‹’,’’’’’’’’’’’’’’’’’’’a‹’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‹’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į‹’K’’’’’’’’’’’’’’’’’’’1Œ’R’’’’’’’’’’’’’’’’’’’’’ folgen: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Œ’’’’’’’’’’’’’’’’’’’’±Œ’’’’’’’’’’’’’’’’’’’’ь’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŒ’P’’’’’’’’’’’’’’’’’’’Q’Q’’’’’’’’’’’’’’’’’’’±’L’’’’’’’’’’’’’’’’’’’Ž’L’’’’’’’’’’’’’’’’’’’QŽ’O’’’’’’’’’’’’’’’’’’’±Ž’T’’’’’’’’’’’’’’’’’’’’L’’’’’’’’’’’’’’’’’’’a’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘’T’’’’’’’’’’’’’’’’’’’ń’N’’’’’’’’’’’’’’’’’’’’’ werden. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A’M’’’’’’’’’’’’’’’’’’’‘’A’’’’’’’’’’’’’’’’’’’ᐒ"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘’!’’’’’’’’’’’’’’’’’’’A‘’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ x := a; ’’’’’’’’’’’’ a := b; ’’’’’’’’’’’’ b := x ’’’’’’’’’’’Q‘’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q‘’*’’’’’’’’’’’’’’’’’’’”‘’+’’’’’’’’’’’’’’’’’’’ё’’’’’’’’’’’’’’’’’’’’ń‘’.’’’’’’’’’’’’’’’’’’’’’ FI ’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q’’L’’’’’’’’’’’’’’’’’’’Į’’N’’’’’’’’’’’’’’’’’’’“’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A“’’’’’’’’’’’’’’’’’’’’a“’’’’’’’’’’’’’’’’’’’’“’’’’’’’’’’’’’’’’’’’’”“’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į“’O’’’’’’’’’’’’’’’’’’’!”’Q’’’’’’’’’’’’’’’’’’’”’J’’’’’’’’’’’’’’’’’’’є’M’’’’’’’’’’’’’’’’’’’!•’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q•’M’’’’’’’’’’’’’’’’’’’”•’A’’’’’’’’’’’’’’’’’’’ń•’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!–’!’’’’’’’’’’’’’’’’’’’Q–’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ū’T’’’’’’’’’’’’’’’’’’’Ū’b’’’’’’’’’’’’’’’’’’’ńŪ’Y’’’’’’’’’’’’’’’’’’’QÜ’J’’’’’’’’’’’’’’’’’’’”Ü’P’’’’’’’’’’’’’’’’’’’Ż’U’’’’’’’’’’’’’’’’’’’aŻ’X’’’’’’’’’’’’’’’’’’’ĮŻ’M’’’’’’’’’’’’’’’’’’’Ž’V’’’’’’’’’’’’’’’’’’’qŽ’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŽ’Q’’’’’’’’’’’’’’’’’’’!ß’=’’’’’’’’’’’’’’’’’’’aß’T’’’’’’’’’’’’’’’’’’’Įß’P’’’’’’’’’’’’’’’’’’’!ą’T’’’’’’’’’’’’’’’’’’’ą’R’’’’’’’’’’’’’’’’’’’įą’Q’’’’’’’’’’’’’’’’’’’Aį’W’’’’’’’’’’’’’’’’’’’”į’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńį’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’N’’’’’’’’’’’’’’’’’’’Qā’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ā’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńā’P’’’’’’’’’’’’’’’’’’’Qć’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ć’W’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’įć’P’’’’’’’’’’’’’’’’’’’Aä’O’’’’’’’’’’’’’’’’’’’”ä’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įä’8’’’’’’’’’’’’’’’’’’’å’8’’’’’’’’’’’’’’’’’’’Aå’8’’’’’’’’’’’’’’’’’’’å’8’’’’’’’’’’’’’’’’’’’Įå’8’’’’’’’’’’’’’’’’’’’ę’8’’’’’’’’’’’’’’’’’’’Aę’8’’’’’’’’’’’’’’’’’’’ę’8’’’’’’’’’’’’’’’’’’’Įę’8’’’’’’’’’’’’’’’’’’’ē’8’’’’’’’’’’’’’’’’’’’Aē’8’’’’’’’’’’’’’’’’’’’ē’8’’’’’’’’’’’’’’’’’’’Įē’8’’’’’’’’’’’’’’’’’’’č’8’’’’’’’’’’’’’’’’’’’Ač’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’č’X’’’’’’’’’’’’’’’’’’’įč’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1é’8’’’’’’’’’’’’’’’’’’’qé’8’’’’’’’’’’’’’’’’’’’±é’8’’’’’’’’’’’’’’’’’’’ńé’8’’’’’’’’’’’’’’’’’’’1ź’8’’’’’’’’’’’’’’’’’’’qź’8’’’’’’’’’’’’’’’’’’’±ź’8’’’’’’’’’’’’’’’’’’’ńź’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ė’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ė’ ’’’’’’’’’’’’’’’’’’’’’ Ž xxx ’’’’’’’’Įė’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įė’M’’’’’’’’’’’’’’’’’’’’’werden. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ģ’Q’’’’’’’’’’’’’’’’’’’‘ģ’L’’’’’’’’’’’’’’’’’’’įģ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ķ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ķ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qķ’’’’’’’’’’’’’’’’’’’’qķ’7’’’’’’’’’’’’’’’’’’’±ķ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńķ’’’’’’’’’’’’’’’’’’’’ńķ’’’’’’’’’’’’’’’’’’’’ī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ī’’’’’’’’’’’’’’’’’’’’Qī’’’’’’’’’’’’’’’’’’’’qī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ī’’’’’’’’’’’’’’’’’’’’±ī’’’’’’’’’’’’’’’’’’’’Ńī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńī’’’’’’’’’’’’’’’’’’’’ļ’’’’’’’’’’’’’’’’’’’’1ļ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qļ’ ’’’’’’’’’’’’’’’’’’’ļ’ ’’’’’’’’’’’’’’’’’’’±ļ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įļ’3’’’’’’’’’’’’’’’’’’’!š’3’’’’’’’’’’’’’’’’’’’aš’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”š’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įš’P’’’’’’’’’’’’’’’’’’’Ań’I’’’’’’’’’’’’’’’’’’’‘ń’U’’’’’’’’’’’’’’’’’’’ńń’T’’’’’’’’’’’’’’’’’’’Qņ’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ņ’Q’’’’’’’’’’’’’’’’’’’ó’Q’’’’’’’’’’’’’’’’’’’qó’T’’’’’’’’’’’’’’’’’’’Ńó’S’’’’’’’’’’’’’’’’’’’1ō’S’’’’’’’’’’’’’’’’’’’‘ō’L’’’’’’’’’’’’’’’’’’’įō’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’õ’U’’’’’’’’’’’’’’’’’’’aõ’Q’’’’’’’’’’’’’’’’’’’Įõ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ö’I’’’’’’’’’’’’’’’’’’’aö’L’’’’’’’’’’’’’’’’’’’±ö’Q’’’’’’’’’’’’’’’’’’’÷’Q’’’’’’’’’’’’’’’’’’’q÷’V’’’’’’’’’’’’’’’’’’’Ń÷’X’’’’’’’’’’’’’’’’’’’1ų’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ų’R’’’’’’’’’’’’’’’’’’’įų’M’’’’’’’’’’’’’’’’’’’1ł’N’’’’’’’’’’’’’’’’’’’ł’N’’’’’’’’’’’’’’’’’’’Ńł’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ś’M’’’’’’’’’’’’’’’’’’’Qś’S’’’’’’’’’’’’’’’’’’’±ś’T’’’’’’’’’’’’’’’’’’’ū’T’’’’’’’’’’’’’’’’’’’qū’U’’’’’’’’’’’’’’’’’’’Ńū’Q’’’’’’’’’’’’’’’’’’’1ü’W’’’’’’’’’’’’’’’’’’’‘ü’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įü’=’’’’’’’’’’’’’’’’’’’’’werken:’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ż’T’’’’’’’’’’’’’’’’’’’aż’W’’’’’’’’’’’’’’’’’’’Įż’U’’’’’’’’’’’’’’’’’’’!ž’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qž’R’’’’’’’’’’’’’’’’’’’±ž’Q’’’’’’’’’’’’’’’’’’’’’P’’’’’’’’’’’’’’’’’’’q’’U’’’’’’’’’’’’’’’’’’’Ń’’U’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’R’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’N’’’’’’’’’’’’’’’’’’’2’T’’’’’’’’’’’’’’’’’’’’’P’’’’’’’’’’’’’’’’’’’ņ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’T’’’’’’’’’’’’’’’’’’’R’Q’’’’’’’’’’’’’’’’’’’²’Q’’’’’’’’’’’’’’’’’’’’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’W’’’’’’’’’’’’’’’’’’’’’ Kommando ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’R’’’’’’’’’’’’’’’’’’’‚’y’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’’’ geschrieben. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’T’’’’’’’’’’’’’’’’’’’Ā’:’’’’’’’’’’’’’’’’’’’ ’O’’’’’’’’’’’’’’’’’’’b ’S’’’’’’’’’’’’’’’’’’’Ā ’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’" ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R ’Y’’’’’’’’’’’’’’’’’’’² ’Z’’’’’’’’’’’’’’’’’’’ ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b ’k’’’’’’’’’’’’’’’’’’’Ņ ’X’’’’’’’’’’’’’’’’’’’2 ’M’’’’’’’’’’’’’’’’’’’‚ ’’’’’’’’’’’’’’’’’’’’ ’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢ ’S’’’’’’’’’’’’’’’’’’’’S’’’’’’’’’’’’’’’’’’’b’Q’’’’’’’’’’’’’’’’’’’Ā’Q’’’’’’’’’’’’’’’’’’’"’d’’’’’’’’’’’’’’’’’’’’’x’’’’’’’’’’’’’’’’’’’’’ dem Kommando ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’ņ’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’N’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’O’’’’’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’¢’/’’’’’’’’’’’’’’’’’’’ā’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’R’0’’’’’’’’’’’’’’’’’’’’’F’’’’’’’’’’’’’’’’’’’ā’Q’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’‚’1’’’’’’’’’’’’’’’’’’’Ā’R’’’’’’’’’’’’’’’’’’’"’M’’’’’’’’’’’’’’’’’’’r’S’’’’’’’’’’’’’’’’’’’Ņ’$’’’’’’’’’’’’’’’’’’’’I’’’’’’’’’’’’’’’’’’’R’K’’’’’’’’’’’’’’’’’’’¢’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’g’’’’’’’’’’’’’’’’’’’’’N’’’’’’’’’’’’’’’’’’’ā’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’X’’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’ņ’U’’’’’’’’’’’’’’’’’’’R’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’V’’’’’’’’’’’’’’’’’’’’’ x := a; ’’’’’’’’’’’’ a := b; ’’’’’’’’’’’’ b := x ’’’’’’’’’’’a–’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’–’’’’’’’’’’’’’’’’’’’’”–’’’’’’’’’’’’’’’’’’’’Į–’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į–’’’’’’’’’’’’’’’’’’’’’’ page. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’—’’’’’’’’’’’’’’’’’’’’!—’,’’’’’’’’’’’’’’’’’’’Q—’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’—’’’’’’’’’’’’’’’’’’’’”—’’’’’’’’’’’’’’’’’’’’ї’0’’’’’’’’’’’’’’’’’’’’’ FI ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’˜’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a˜’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘˜’Q’’’’’’’’’’’’’’’’’’’ń˜’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!™’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A™’O’’’’’’’’’’’’’’’’’’’”™’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń™’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’!š’;’’’’’’’’’’’’’’’’’’’aš’(’’’’’’’’’’’’’’’’’’’‘š’1’’’’’’’’’’’’’’’’’’’њ’’’’’’’’’’’’’’’’’’’’ńš’p’’’’’’’’’’’’’’’’’’’q›’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘›’M’’’’’’’’’’’’’’’’’’’į›’A’’’’’’’’’’’’’’’’’’’1œ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qœ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”œ’P’’’’’’’’’’’’’’’’’’’’U’’’’’’’’’’’’’’’’’’’a’O’’’’’’’’’’’’’’’’’’’Į’S’’’’’’’’’’’’’’’’’’’!ž’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qž’J’’’’’’’’’’’’’’’’’’’”ž’P’’’’’’’’’’’’’’’’’’’Ÿ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŸ’!’’’’’’’’’’’’’’’’’’’Ÿ’!’’’’’’’’’’’’’’’’’’’±Ÿ’’’’’’’’’’’’’’’’’’’’џ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’!’’’’’’’’’’’’’’’’’’’1 ’!’’’’’’’’’’’’’’’’’’’a ’’’’’’’’’’’’’’’’’’’’ ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’± ’F’’’’’’’’’’’’’’’’’’’”’Q’’’’’’’’’’’’’’’’’’’a”’N’’’’’’’’’’’’’’’’’’’±”’R’’’’’’’’’’’’’’’’’’’¢’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q¢’O’’’’’’’’’’’’’’’’’’’±¢’S’’’’’’’’’’’’’’’’’’’£’S’’’’’’’’’’’’’’’’’’’q£’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±£’b’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ feld [3] ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!¤’T’’’’’’’’’’’’’’’’’’’¤’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ѥ’M’’’’’’’’’’’’’’’’’’’!„’A’’’’’’’’’’’’’’’’’’’q„’’’’’’’’’’’’’’’’’’’’‘„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±„’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¦’S’’’’’’’’’’’’’’’’’’’a¦’N’’’’’’’’’’’’’’’’’’’±¦’S’’’’’’’’’’’’’’’’’’’§’N’’’’’’’’’’’’’’’’’’’a§’O’’’’’’’’’’’’’’’’’’’Į§’Q’’’’’’’’’’’’’’’’’’’!Ø’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ø’M’’’’’’’’’’’’’’’’’’’Ø’A’’’’’’’’’’’’’’’’’’’ŃØ’!’’’’’’’’’’’’’’’’’’’©’’’’’’’’’’’’’’’’’’’’!©’’’’’’’’’’’’’’’’’’’’A©’+’’’’’’’’’’’’’’’’’’’q©’’’’’’’’’’’’’’’’’’’’’’ line ’’’’’’’’’’’’ END REP ’’’’’’’’’‘©’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±©’#’’’’’’’’’’’’’’’’’’’į©’’’’’’’’’’’’’’’’’’’’Ŗ’’’’’’’’’’’’’’’’’’’’!Ŗ’)’’’’’’’’’’’’’’’’’’’QŖ’’’’’’’’’’’’’’’’’’’’’’ line ’’’’’’’’’’’’ END REP ’’’’’’’’’qŖ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ŗ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŖ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’«’O’’’’’’’’’’’’’’’’’’’q«’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”«’M’’’’’’’’’’’’’’’’’’’ń«’A’’’’’’’’’’’’’’’’’’’A¬’’’’’’’’’’’’’’’’’’’’a¬’’’’’’’’’’’’’’’’’’’’¬’’’’’’’’’’’’’’’’’’’’”¬’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ѭ’’’’’’’’’’’’’’’’’’’’ń¬’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’­’’’’’’’’’’’’’’’’’’’’1­’’’’’’’’’’’’’’’’’’’’Q­’’’’’’’’’’’’’’’’’’’’q­’’’’’’’’’’’’’’’’’’’’’’ END REP. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘­’#’’’’’’’’’’’’’’’’’’’Į­’’’’’’’’’’’’’’’’’’’’’’ line; ’’’’’’’’’’’į­’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’®’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a®’P’’’’’’’’’’’’’’’’’’’Į®’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń®’M’’’’’’’’’’’’’’’’’’’AÆ’A’’’’’’’’’’’’’’’’’’’‘Æ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Æ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’°’O’’’’’’’’’’’’’’’’’’’a°’U’’’’’’’’’’’’’’’’’’’Į°’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ matrix [3] ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A±’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘±’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±±’@’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!²’P’’’’’’’’’’’’’’’’’’’²’P’’’’’’’’’’’’’’’’’’’į²’U’’’’’’’’’’’’’’’’’’’A³’M’’’’’’’’’’’’’’’’’’’‘³’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į³’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’“’4’’’’’’’’’’’’’’’’’’’A“’g’’’’’’’’’’’’’’’’’’’±“’p’’’’’’’’’’’’’’’’’’’1µ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qµ’M’’’’’’’’’’’’’’’’’’’”µ’A’’’’’’’’’’’’’’’’’’’ńµ’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!¶’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q¶’P’’’’’’’’’’’’’’’’’’’Ѷ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!·’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q·’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ich . name ’’’’’’’’’’’’ ich . alter ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘·’S’’’’’’’’’’’’’’’’’’’ń·’N’’’’’’’’’’’’’’’’’’’Aø’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aø’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ø’M’’’’’’’’’’’’’’’’’’’ńø’A’’’’’’’’’’’’’’’’’’’A¹’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¹’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ѹ’U’’’’’’’’’’’’’’’’’’’1ŗ’P’’’’’’’’’’’’’’’’’’’‘ŗ’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įŗ’Q’’’’’’’’’’’’’’’’’’’A»’S’’’’’’’’’’’’’’’’’’’”»’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į»’M’’’’’’’’’’’’’’’’’’’¼’A’’’’’’’’’’’’’’’’’’’a¼’:’’’’’’’’’’’’’’’’’’’”¼’,’’’’’’’’’’’’’’’’’’’Ѽ’/’’’’’’’’’’’’’’’’’’’½’-’’’’’’’’’’’’’’’’’’’’’ line ’’’’’’’’’’’’A½’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a½’<’’’’’’’’’’’’’’’’’’’”½’#’’’’’’’’’’’’’’’’’’’ѽ’’’’’’’’’’’’’’’’’’’’ń½’’’’’’’’’’’’’’’’’’’’¾’’’’’’’’’’’’’’’’’’’’’’ line ’’’’’’’’’’’’1¾’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ OP HEIRATET ’’’’’’’’Q¾’3’’’’’’’’’’’’’’’’’’’‘¾’6’’’’’’’’’’’’’’’’’’’Ѿ’’’’’’’’’’’’’’’’’’’’ń¾’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’æ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aæ’M’’’’’’’’’’’’’’’’’’’±æ’A’’’’’’’’’’’’’’’’’’’Ą’8’’’’’’’’’’’’’’’’’’’AĄ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ą’’’’’’’’’’’’’’’’’’’’”Ą’’’’’’’’’’’’’’’’’’’’ĮĄ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įĄ’’’’’’’’’’’’’’’’’’’’Į’’’’’’’’’’’’’’’’’’’’!Į’’’’’’’’’’’’’’’’’’’’AĮ’’’’’’’’’’’’’’’’’’’’aĮ’’’’’’’’’’’’’’’’’’’’’’ END REP. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’’’’’’’’’’’’’’’’’’’’”Į’’’’’’’’’’’’’’’’’’’’ĮĮ’!’’’’’’’’’’’’’’’’’’’’’ END REP. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĮ’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’1Ā’’’’’’’’’’’’’’’’’’’’QĀ’%’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’’’ END REP. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’”Ā’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĀ’P’’’’’’’’’’’’’’’’’’’QĆ’Q’’’’’’’’’’’’’’’’’’’±Ć’S’’’’’’’’’’’’’’’’’’’Ä’O’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qÄ’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ä’K’’’’’’’’’’’’’’’’’’’Å’I’’’’’’’’’’’’’’’’’’’QÅ’T’’’’’’’’’’’’’’’’’’’ā’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’V’’’’’’’’’’’’’’’’’’’²’S’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’X’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’ņ’P’’’’’’’’’’’’’’’’’’’R’Q’’’’’’’’’’’’’’’’’’’²’U’’’’’’’’’’’’’’’’’’’’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’T’’’’’’’’’’’’’’’’’’’ā’M’’’’’’’’’’’’’’’’’’’2’H’’’’’’’’’’’’’’’’’’’‚’W’’’’’’’’’’’’’’’’’’’ā’T’’’’’’’’’’’’’’’’’’’B’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’X’’’’’’’’’’’’’’’’’’’ā’M’’’’’’’’’’’’’’’’’’’2 ’S’’’’’’’’’’’’’’’’’’’’ ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ ’W’’’’’’’’’’’’’’’’’’’2!’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚!’X’’’’’’’’’’’’’’’’’’’ā!’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’T’’’’’’’’’’’’’’’’’’’r"’M’’’’’’’’’’’’’’’’’’’Ā"’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ"’Y’’’’’’’’’’’’’’’’’’’R#’N’’’’’’’’’’’’’’’’’’’¢#’L’’’’’’’’’’’’’’’’’’’ņ#’O’’’’’’’’’’’’’’’’’’’R$’R’’’’’’’’’’’’’’’’’’’²$’6’’’’’’’’’’’’’’’’’’’ņ$’U’’’’’’’’’’’’’’’’’’’R%’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’%’J’’’’’’’’’’’’’’’’’’’ā%’K’’’’’’’’’’’’’’’’’’’2&’P’’’’’’’’’’’’’’’’’’’’&’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā&’,’’’’’’’’’’’’’’’’’’’ņ&’M’’’’’’’’’’’’’’’’’’’B'’+’’’’’’’’’’’’’’’’’’’r'’+’’’’’’’’’’’’’’’’’’’¢'’N’’’’’’’’’’’’’’’’’’’ņ'’-’’’’’’’’’’’’’’’’’’’"(’0’’’’’’’’’’’’’’’’’’’b(’J’’’’’’’’’’’’’’’’’’’²(’I’’’’’’’’’’’’’’’’’’’)’$’’’’’’’’’’’’’’’’’’’2)’/’’’’’’’’’’’’’’’’’’’r)’J’’’’’’’’’’’’’’’’’’’Ā)’I’’’’’’’’’’’’’’’’’’’*’$’’’’’’’’’’’’’’’’’’’B*’0’’’’’’’’’’’’’’’’’’’‚*’F’’’’’’’’’’’’’’’’’’’Ņ*’F’’’’’’’’’’’’’’’’’’’"+’7’’’’’’’’’’’’’’’’’’’b+’/’’’’’’’’’’’’’’’’’’’¢+’F’’’’’’’’’’’’’’’’’’’ņ+’L’’’’’’’’’’’’’’’’’’’B,’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚,’W’’’’’’’’’’’’’’’’’’’ā,’M’’’’’’’’’’’’’’’’’’’2-’M’’’’’’’’’’’’’’’’’’’‚-’U’’’’’’’’’’’’’’’’’’’ā-’Z’’’’’’’’’’’’’’’’’’’B.’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b.’X’’’’’’’’’’’’’’’’’’’Ā.’T’’’’’’’’’’’’’’’’’’’"/’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b/’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā/’’’’’’’’’’’’’’’’’’’’ā/’’’’’’’’’’’’’’’’’’’’0’’’’’’’’’’’’’’’’’’’’"0’&’’’’’’’’’’’’’’’’’’’R0’)’’’’’’’’’’’’’’’’’’’‚0’-’’’’’’’’’’’’’’’’’’’²0’’’’’’’’’’’’’’’’’’’’Ņ0’/’’’’’’’’’’’’’’’’’’’1’)’’’’’’’’’’’’’’’’’’’B1’’’’’’’’’’’’’’’’’’’’b1’(’’’’’’’’’’’’’’’’’’’’1’,’’’’’’’’’’’’’’’’’’’Ā1’’’’’’’’’’’’’’’’’’’’ā1’)’’’’’’’’’’’’’’’’’’’2’-’’’’’’’’’’’’’’’’’’’B2’’’’’’’’’’’’’’’’’’’’b2’’’’’’’’’’’’’’’’’’’’‚2’!’’’’’’’’’’’’’’’’’’’²2’’’’’’’’’’’’’’’’’’’’ā2’#’’’’’’’’’’’’’’’’’’’’’ FI. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’’23’[’’’’’’’’’’’’’’’’’’’’3’Y’’’’’’’’’’’’’’’’’’’ņ3’Q’’’’’’’’’’’’’’’’’’’R4’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚4’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā4’S’’’’’’’’’’’’’’’’’’’"5’O’’’’’’’’’’’’’’’’’’’‚5’Q’’’’’’’’’’’’’’’’’’’ā5’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"6’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R6’P’’’’’’’’’’’’’’’’’’’’’werden: ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²6’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ6’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’7’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’27’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r7’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢7’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’Ņ7’ ’’’’’’’’’’’’’’’’’’’8’+’’’’’’’’’’’’’’’’’’’28’’’’’’’’’’’’’’’’’’’’R8’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚8’P’’’’’’’’’’’’’’’’’’’ā8’O’’’’’’’’’’’’’’’’’’’B9’O’’’’’’’’’’’’’’’’’’’¢9’R’’’’’’’’’’’’’’’’’’’:’O’’’’’’’’’’’’’’’’’’’b:’N’’’’’’’’’’’’’’’’’’’²:’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’;’L’’’’’’’’’’’’’’’’’’’R;’R’’’’’’’’’’’’’’’’’’’²;’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’<’R’’’’’’’’’’’’’’’’’’’b<’R’’’’’’’’’’’’’’’’’’’Ā<’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā<’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’=’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2=’O’’’’’’’’’’’’’’’’’’’’=’V’’’’’’’’’’’’’’’’’’’ņ=’P’’’’’’’’’’’’’’’’’’’R>’S’’’’’’’’’’’’’’’’’’’²>’R’’’’’’’’’’’’’’’’’’’?’Q’’’’’’’’’’’’’’’’’’’r?’S’’’’’’’’’’’’’’’’’’’Ņ?’Q’’’’’’’’’’’’’’’’’’’2@’M’’’’’’’’’’’’’’’’’’’‚@’[’’’’’’’’’’’’’’’’’’’ā@’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"A’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bA’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’A’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²A’^’’’’’’’’’’’’’’’’’’’’’ einteilen. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2B’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚B’’’’’’’’’’’’’’’’’’’’¢B’<’’’’’’’’’’’’’’’’’’’āB’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2C’N’’’’’’’’’’’’’’’’’’’‚C’R’’’’’’’’’’’’’’’’’’’āC’O’’’’’’’’’’’’’’’’’’’BD’N’’’’’’’’’’’’’’’’’’’’D’Q’’’’’’’’’’’’’’’’’’’ņD’V’’’’’’’’’’’’’’’’’’’RE’P’’’’’’’’’’’’’’’’’’’²E’’’’’’’’’’’’’’’’’’’’ŅE’L’’’’’’’’’’’’’’’’’’’"F’Q’’’’’’’’’’’’’’’’’’’‚F’H’’’’’’’’’’’’’’’’’’’ŅF’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"G’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BG’K’’’’’’’’’’’’’’’’’’’’G’Q’’’’’’’’’’’’’’’’’’’ņG’G’’’’’’’’’’’’’’’’’’’BH’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’H’’’’’’’’’’’’’’’’’’’’²H’+’’’’’’’’’’’’’’’’’’’āH’8’’’’’’’’’’’’’’’’’’’"I’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bI’_’’’’’’’’’’’’’’’’’’’ŅI’L’’’’’’’’’’’’’’’’’’’"J’R’’’’’’’’’’’’’’’’’’’‚J’P’’’’’’’’’’’’’’’’’’’āJ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"K’6’’’’’’’’’’’’’’’’’’’bK’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’K’N’’’’’’’’’’’’’’’’’’’āK’J’’’’’’’’’’’’’’’’’’’2L’L’’’’’’’’’’’’’’’’’’’‚L’P’’’’’’’’’’’’’’’’’’’āL’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"M’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RM’L’’’’’’’’’’’’’’’’’’’¢M’R’’’’’’’’’’’’’’’’’’’N’O’’’’’’’’’’’’’’’’’’’bN’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢N’Z’’’’’’’’’’’’’’’’’’’O’S’’’’’’’’’’’’’’’’’’’bO’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’O’K’’’’’’’’’’’’’’’’’’’āO’W’’’’’’’’’’’’’’’’’’’BP’Q’’’’’’’’’’’’’’’’’’’¢P’R’’’’’’’’’’’’’’’’’’’Q’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"Q’’’’’’’’’’’’’’’’’’’’BQ’’’’’’’’’’’’’’’’’’’’bQ’’’’’’’’’’’’’’’’’’’’‚Q’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢Q’Q’’’’’’’’’’’’’’’’’’’R’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BR’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rR’]’’’’’’’’’’’’’’’’’’’ŅR’W’’’’’’’’’’’’’’’’’’’2S’S’’’’’’’’’’’’’’’’’’’’S’R’’’’’’’’’’’’’’’’’’’ņS’V’’’’’’’’’’’’’’’’’’’RT’Q’’’’’’’’’’’’’’’’’’’²T’U’’’’’’’’’’’’’’’’’’’U’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BU’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Å’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÅ’`’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aĘ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ę’M’’’’’’’’’’’’’’’’’’’ńĘ’A’’’’’’’’’’’’’’’’’’’AĒ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ē’’’’’’’’’’’’’’’’’’’’”Ē’,’’’’’’’’’’’’’’’’’’’ŃĒ’/’’’’’’’’’’’’’’’’’’’Č’-’’’’’’’’’’’’’’’’’’’’’ line ’’’’’’’’’’’’AČ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aČ’’’’’’’’’’’’’’’’’’’’Č’0’’’’’’’’’’’’’’’’’’’ĮČ’-’’’’’’’’’’’’’’’’’’’ńČ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’É’-’’’’’’’’’’’’’’’’’’’AÉ’’’’’’’’’’’’’’’’’’’’aÉ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’É’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’”É’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÉ’N’’’’’’’’’’’’’’’’’’’AŹ’K’’’’’’’’’’’’’’’’’’’‘Ź’N’’’’’’’’’’’’’’’’’’’įŹ’P’’’’’’’’’’’’’’’’’’’AĖ’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qĖ’K’’’’’’’’’’’’’’’’’’’ĮĖ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ģ’$’’’’’’’’’’’’’’’’’’’1Ģ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aĢ’V’’’’’’’’’’’’’’’’’’’ĮĢ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĢ’M’’’’’’’’’’’’’’’’’’’AĶ’A’’’’’’’’’’’’’’’’’’’‘Ķ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃĶ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĶ’’’’’’’’’’’’’’’’’’’’Ī’’’’’’’’’’’’’’’’’’’’1Ī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’QĪ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ī’R’’’’’’’’’’’’’’’’’’’’’tor: ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ļ’‹’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ļ’P’’’’’’’’’’’’’’’’’’’ńĻ’N’’’’’’’’’’’’’’’’’’’AŠ’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Š’M’’’’’’’’’’’’’’’’’’’ńŠ’A’’’’’’’’’’’’’’’’’’’AŃ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ń’0’’’’’’’’’’’’’’’’’’’įŃ’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’!Ņ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŅ’Q’’’’’’’’’’’’’’’’’’’ŃŅ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ó’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AÓ’M’’’’’’’’’’’’’’’’’’’‘Ó’A’’’’’’’’’’’’’’’’’’’įÓ’’’’’’’’’’’’’’’’’’’’Ō’-’’’’’’’’’’’’’’’’’’’1Ō’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ō’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ō’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŌ’M’’’’’’’’’’’’’’’’’’’!Õ’R’’’’’’’’’’’’’’’’’’’Õ’M’’’’’’’’’’’’’’’’’’’ŃÕ’L’’’’’’’’’’’’’’’’’’’!Ö’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aÖ’e’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃÖ’M’’’’’’’’’’’’’’’’’’’!×’R’’’’’’’’’’’’’’’’’’’’’sein. ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’×’M’’’’’’’’’’’’’’’’’’’Ń×’A’’’’’’’’’’’’’’’’’’’!Ų’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŲ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ų’L’’’’’’’’’’’’’’’’’’’Ł’R’’’’’’’’’’’’’’’’’’’aŁ’O’’’’’’’’’’’’’’’’’’’ĮŁ’P’’’’’’’’’’’’’’’’’’’!Ś’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŚ’O’’’’’’’’’’’’’’’’’’’±Ś’M’’’’’’’’’’’’’’’’’’’Ū’Q’’’’’’’’’’’’’’’’’’’aŪ’Q’’’’’’’’’’’’’’’’’’’ĮŪ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ü’N’’’’’’’’’’’’’’’’’’’QÜ’K’’’’’’’’’’’’’’’’’’’”Ü’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮÜ’ ’’’’’’’’’’’’’’’’’’’ńÜ’7’’’’’’’’’’’’’’’’’’’1Ż’R’’’’’’’’’’’’’’’’’’’‘Ż’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŻ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŻ’O’’’’’’’’’’’’’’’’’’’QŽ’R’’’’’’’’’’’’’’’’’’’±Ž’V’’’’’’’’’’’’’’’’’’’ß’O’’’’’’’’’’’’’’’’’’’qß’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ß’…’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ą’M’’’’’’’’’’’’’’’’’’’ą’A’’’’’’’’’’’’’’’’’’’Ńą’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńą’’’’’’’’’’’’’’’’’’’’į’’’’’’’’’’’’’’’’’’’’1į’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’Qį’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”į’Q’’’’’’’’’’’’’’’’’’’ā’O’’’’’’’’’’’’’’’’’’’aā’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įā’M’’’’’’’’’’’’’’’’’’’ć’A’’’’’’’’’’’’’’’’’’’ać’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ć’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’’’”ć’’’’’’’’’’’’’’’’’’’’Įć’’’’’’’’’’’’’’’’’’’’įć’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ä’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aä’’’’’’’’’’’’’’’’’’’’ä’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ä’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’å’‹’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”å’P’’’’’’’’’’’’’’’’’’’ę’N’’’’’’’’’’’’’’’’’’’Qę’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ę’M’’’’’’’’’’’’’’’’’’’ē’A’’’’’’’’’’’’’’’’’’’Qē’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qē’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ē’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńē’R’’’’’’’’’’’’’’’’’’’Qč’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’č’M’’’’’’’’’’’’’’’’’’’Ńč’A’’’’’’’’’’’’’’’’’’’!é’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aé’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’é’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńé’W’’’’’’’’’’’’’’’’’’’1ź’Q’’’’’’’’’’’’’’’’’’’‘ź’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įź’M’’’’’’’’’’’’’’’’’’’1ė’A’’’’’’’’’’’’’’’’’’’ė’:’’’’’’’’’’’’’’’’’’’Įė’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńė’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ģ’/’’’’’’’’’’’’’’’’’’’Qģ’’’’’’’’’’’’’’’’’’’’’’ END OP :=; ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qģ’’’’’’’’’’’’’’’’’’’’‘ģ’’’’’’’’’’’’’’’’’’’’’’ get (i); ’’’’’’’’±ģ’’’’’’’’’’’’’’’’’’’’Ńģ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńģ’ ’’’’’’’’’’’’’’’’’’’!ķ’’’’’’’’’’’’’’’’’’’’Aķ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aķ’.’’’’’’’’’’’’’’’’’’’‘ķ’*’’’’’’’’’’’’’’’’’’’Įķ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įķ’1’’’’’’’’’’’’’’’’’’’!ī’’’’’’’’’’’’’’’’’’’’Aī’;’’’’’’’’’’’’’’’’’’’ī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’Įī’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ļ’J’’’’’’’’’’’’’’’’’’’aļ’H’’’’’’’’’’’’’’’’’’’±ļ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńļ’%’’’’’’’’’’’’’’’’’’’š’%’’’’’’’’’’’’’’’’’’’1š’%’’’’’’’’’’’’’’’’’’’aš’%’’’’’’’’’’’’’’’’’’’‘š’(’’’’’’’’’’’’’’’’’’’Įš’%’’’’’’’’’’’’’’’’’’’ńš’%’’’’’’’’’’’’’’’’’’’!ń’%’’’’’’’’’’’’’’’’’’’Qń’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń’M’’’’’’’’’’’’’’’’’’’’’werden: ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńń’M’’’’’’’’’’’’’’’’’’’!ņ’A’’’’’’’’’’’’’’’’’’’qņ’’’’’’’’’’’’’’’’’’’’‘ņ’’’’’’’’’’’’’’’’’’’’±ņ’’’’’’’’’’’’’’’’’’’’Ńņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńņ’’’’’’’’’’’’’’’’’’’’ó’’’’’’’’’’’’’’’’’’’’1ó’’’’’’’’’’’’’’’’’’’’Qó’7’’’’’’’’’’’’’’’’’’’‘ó’’’’’’’’’’’’’’’’’’’’’’ END REP. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ó’’’’’’’’’’’’’’’’’’’’Ńó’=’’’’’’’’’’’’’’’’’’’ō’7’’’’’’’’’’’’’’’’’’’Qō’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qō’’’’’’’’’’’’’’’’’’’’’’ line; ’’’’’’’’’’’‘ō’’’’’’’’’’’’’’’’’’’’±ō’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 2.8 Dateien ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’õ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!õ’M’’’’’’’’’’’’’’’’’’’qõ’Q’’’’’’’’’’’’’’’’’’’Ńõ’$’’’’’’’’’’’’’’’’’’’ö’P’’’’’’’’’’’’’’’’’’’’’ paūt; ’’’’’’’’’’’’aö’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ö’O’’’’’’’’’’’’’’’’’’’÷’P’’’’’’’’’’’’’’’’’’’’U’(’’’’’’’’’’’’’’’’’’’ĀU’(’’’’’’’’’’’’’’’’’’’ņU’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"V’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bV’4’’’’’’’’’’’’’’’’’’’¢V’4’’’’’’’’’’’’’’’’’’’āV’4’’’’’’’’’’’’’’’’’’’"W’4’’’’’’’’’’’’’’’’’’’bW’4’’’’’’’’’’’’’’’’’’’¢W’4’’’’’’’’’’’’’’’’’’’āW’4’’’’’’’’’’’’’’’’’’’"X’4’’’’’’’’’’’’’’’’’’’bX’4’’’’’’’’’’’’’’’’’’’¢X’4’’’’’’’’’’’’’’’’’’’āX’4’’’’’’’’’’’’’’’’’’’"Y’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bY’N’’’’’’’’’’’’’’’’’’’²Y’K’’’’’’’’’’’’’’’’’’’Z’R’’’’’’’’’’’’’’’’’’’bZ’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢Z’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņZ’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"[’N’’’’’’’’’’’’’’’’’’’r[’W’’’’’’’’’’’’’’’’’’’Ņ[’M’’’’’’’’’’’’’’’’’’’"\’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R\’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢\’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ\’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’]’b’’’’’’’’’’’’’’’’’’’r]’M’’’’’’’’’’’’’’’’’’’Ā]’L’’’’’’’’’’’’’’’’’’’^’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2^’R’’’’’’’’’’’’’’’’’’’’^’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²^’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā^’J’’’’’’’’’’’’’’’’’’’2_’’’’’’’’’’’’’’’’’’’’b_’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²_’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā_’Q’’’’’’’’’’’’’’’’’’’B`’P’’’’’’’’’’’’’’’’’’’¢`’’’’’’’’’’’’’’’’’’’’Ā`’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a’Y’’’’’’’’’’’’’’’’’’’ra’S’’’’’’’’’’’’’’’’’’’Ņa’S’’’’’’’’’’’’’’’’’’’2b’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Rb’I’’’’’’’’’’’’’’’’’’’¢b’$’’’’’’’’’’’’’’’’’’’Ņb’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"c’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bc’’’’’’’’’’’’’’’’’’’’‚c’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²c’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āc’’’’’’’’’’’’’’’’’’’’d’Q’’’’’’’’’’’’’’’’’’’bd’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’d’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņd’’’’’’’’’’’’’’’’’’’’ņd’P’’’’’’’’’’’’’’’’’’’Re’N’’’’’’’’’’’’’’’’’’’¢e’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āe’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’f’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bf’’’’’’’’’’’’’’’’’’’’‚f’#’’’’’’’’’’’’’’’’’’’²f’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āf’’’’’’’’’’’’’’’’’’’’rg’U’’’’’’’’’’’’’’’’’’’Ņg’W’’’’’’’’’’’’’’’’’’’2h’Y’’’’’’’’’’’’’’’’’’’’h’R’’’’’’’’’’’’’’’’’’’ņh’P’’’’’’’’’’’’’’’’’’’Ri’’’’’’’’’’’’’’’’’’’’ri’U’’’’’’’’’’’’’’’’’’’Ņi’R’’’’’’’’’’’’’’’’’’’2j’[’’’’’’’’’’’’’’’’’’’’j’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āj’€’’’’’’’’’’’’’’’’’’’rk’U’’’’’’’’’’’’’’’’’’’Ņk’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’l’V’’’’’’’’’’’’’’’’’’’bl’M’’’’’’’’’’’’’’’’’’’²l’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņl’†’’’’’’’’’’’’’’’’’’’‚m’Z’’’’’’’’’’’’’’’’’’’’’muū. ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ām’Y’’’’’’’’’’’’’’’’’’’Bn’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rn’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢n’W’’’’’’’’’’’’’’’’’’’o’X’’’’’’’’’’’’’’’’’’’bo’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’o’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņo’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’p’f’’’’’’’’’’’’’’’’’’’rp’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Āp’e’’’’’’’’’’’’’’’’’’’2q’X’’’’’’’’’’’’’’’’’’’’’ben: ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’q’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Āq’+’’’’’’’’’’’’’’’’’’’ņq’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"r’8’’’’’’’’’’’’’’’’’’’br’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢r’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņr’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’s’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Rs’Z’’’’’’’’’’’’’’’’’’’²s’V’’’’’’’’’’’’’’’’’’’t’S’’’’’’’’’’’’’’’’’’’rt’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢t’X’’’’’’’’’’’’’’’’’’’u’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Bu’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’u’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²u’P’’’’’’’’’’’’’’’’’’’v’8’’’’’’’’’’’’’’’’’’’Rv’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rv’O’’’’’’’’’’’’’’’’’’’Ņv’A’’’’’’’’’’’’’’’’’’’"w’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Bw’N’’’’’’’’’’’’’’’’’’’’w’1’’’’’’’’’’’’’’’’’’’Ņw’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņw’N’’’’’’’’’’’’’’’’’’’Bx’H’’’’’’’’’’’’’’’’’’’’x’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²x’K’’’’’’’’’’’’’’’’’’’y’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’By’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’y’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²y’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’z’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"z’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rz’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’z’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Āz’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āz’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2{’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R{’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’{’V’’’’’’’’’’’’’’’’’’’ņ{’S’’’’’’’’’’’’’’’’’’’R|’Z’’’’’’’’’’’’’’’’’’’²|’u’’’’’’’’’’’’’’’’’’’2}’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b}’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚}’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²}’:’’’’’’’’’’’’’’’’’’’ņ}’M’’’’’’’’’’’’’’’’’’’B~’9’’’’’’’’’’’’’’’’’’’‚~’:’’’’’’’’’’’’’’’’’’’Ā~’P’’’’’’’’’’’’’’’’’’’"’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’5’’’’’’’’’’’’’’’’’’’€’Y’’’’’’’’’’’’’’’’’’’r€’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ€’5’’’’’’’’’’’’’’’’’’’’X’’’’’’’’’’’’’’’’’’’r’L’’’’’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’P’’’’’’’’’’’’’’’’’’’b‚’N’’’’’’’’’’’’’’’’’’’²‚’L’’’’’’’’’’’’’’’’’’’ƒ’Q’’’’’’’’’’’’’’’’’’’bƒ’U’’’’’’’’’’’’’’’’’’’ƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’⃒6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"„’S’’’’’’’’’’’’’’’’’’’‚„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢„’(’’’’’’’’’’’’’’’’’’’Ņ„’1’’’’’’’’’’’’’’’’’’’…’%’’’’’’’’’’’’’’’’’’’B…’)’’’’’’’’’’’’’’’’’’’r…’+’’’’’’’’’’’’’’’’’’’¢…’*’’’’’’’’’’’’’’’’’’’Ņ…’)’’’’’’’’’’’’’’’’’’’†’!’’’’’’’’’’’’’’’’’’’2†’0’’’’’’’’’’’’’’’’’’’r†’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢†’Y’’’’’’’’’’’’’’’’’’’‡’O’’’’’’’’’’’’’’’’’’’b‡’Q’’’’’’’’’’’’’’’’’’’‡’S’’’’’’’’’’’’’’’’’’’’’nutzt. ’’’’’’’’’’’’’’"ˆ’T’’’’’’’’’’’’’’’’’’’‚ˆ’O’’’’’’’’’’’’’’’’’’’−U’’’’’’’’’’’’’’’’’’’B‰’R’’’’’’’’’’’’’’’’’’’¢‰’R’’’’’’’’’’’’’’’’’’’q÷’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘÷’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į÷’M’’’’’’’’’’’’’’’’’’’ų’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’FILE: ’’’’’’’’’’’’’’’1ų’O’’’’’’’’’’’’’’’’’’’‘ų’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ DIRFILE: ’’’’’’’’’’’’įų’W’’’’’’’’’’’’’’’’’’’Ał’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ł’’’’’’’’’’’’’’’’’’’’±ł’L’’’’’’’’’’’’’’’’’’’ś’<’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aś’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qś’G’’’’’’’’’’’’’’’’’’’Įś’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įś’n’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qū’M’’’’’’’’’’’’’’’’’’’”ū’A’’’’’’’’’’’’’’’’’’’’’ FILE VAR f ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńū’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aü’O’’’’’’’’’’’’’’’’’’’”ü’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńü’L’’’’’’’’’’’’’’’’’’’Aż’O’’’’’’’’’’’’’’’’’’’”ż’K’’’’’’’’’’’’’’’’’’’ńż’Q’’’’’’’’’’’’’’’’’’’Qž’U’’’’’’’’’’’’’’’’’’’±ž’K’’’’’’’’’’’’’’’’’’’’’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A’’¢’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń’’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’input: ’’’’’’’’’’’’’2’P’’’’’’’’’’’’’’’’’’’’’S’’’’’’’’’’’’’’’’’’’ņ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ output: ’’’’’’’’’’’’2’O’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’ņ’U’’’’’’’’’’’’’’’’’’’R’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ modify: ’’’’’’’’’’’’‚’<’’’’’’’’’’’’’’’’’’’Ā’O’’’’’’’’’’’’’’’’’’’"’U’’’’’’’’’’’’’’’’’’’‚’S’’’’’’’’’’’’’’’’’’’ā’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’T’’’’’’’’’’’’’’’’’’’‚’R’’’’’’’’’’’’’’’’’’’’’war. ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’O’’’’’’’’’’’’’’’’’’’B’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’M’’’’’’’’’’’’’’’’’’’Ņ’A’’’’’’’’’’’’’’’’’’’"’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’R’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’M’’’’’’’’’’’’’’’’’’’‚’A’’’’’’’’’’’’’’’’’’’Ņ’2’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’ END REP. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’R’’’’’’’’’’’’’’’’’’’B ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’b ’’’’’’’’’’’’’’’’’’’’‚ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā ’M’’’’’’’’’’’’’’’’’’’ ’S’’’’’’’’’’’’’’’’’’’r ’T’’’’’’’’’’’’’’’’’’’Ņ ’L’’’’’’’’’’’’’’’’’’’" ’P’’’’’’’’’’’’’’’’’’’‚ ’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ ’M’’’’’’’’’’’’’’’’’’’" ’A’’’’’’’’’’’’’’’’’’’r ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’¢ ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ ’V’’’’’’’’’’’’’’’’’’’R ’M’’’’’’’’’’’’’’’’’’’’’ zeichner. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢ ’T’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’R’O’’’’’’’’’’’’’’’’’’’²’M’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’N’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’M’’’’’’’’’’’’’’’’’’’B’A’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’ā’/’’’’’’’’’’’’’’’’’’’"’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ REP ’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ line; ’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ FI ’’’’’’’’’’’’’ PER ’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’B’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’begin ’’’’’’’’’’’’’’’ņ’9’’’’’’’’’’’’’’’’’’’2’,’’’’’’’’’’’’’’’’’’’b’P’’’’’’’’’’’’’’’’’’’Ā’W’’’’’’’’’’’’’’’’’’’"’Y’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’N’’’’’’’’’’’’’’’’’’’’P’’’’’’’’’’’’’’’’’’’b’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’Ž’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’M’’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’ņ’S’’’’’’’’’’’’’’’’’’’R’Q’’’’’’’’’’’’’’’’’’’²’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’R’A’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’B’ ’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ REPEAT ’’’’’’’’’’²’5’’’’’’’’’’’’’’’’’’’ņ’!’’’’’’’’’’’’’’’’’’’"’*’’’’’’’’’’’’’’’’’’’’’ FI; ’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’’’ PER. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’!’’’’’’’’’’’’’’’’’’’Ā’%’’’’’’’’’’’’’’’’’’’ņ’%’’’’’’’’’’’’’’’’’’’"’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’R’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’T’’’’’’’’’’’’’’’’’’’’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ix("SOME")# ’’’’’’’’’’;’’’’’’’’’’’’’’’’’’’Ņ’M’’’’’’’’’’’’’’’’’’’"’L’’’’’’’’’’’’’’’’’’’r’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ix("get")# ’’’’’’’’’¢’G’’’’’’’’’’’’’’’’’’’ņ’Z’’’’’’’’’’’’’’’’’’’R’U’’’’’’’’’’’’’’’’’’’²’P’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’J’’’’’’’’’’’’’’’’’’’‚’P’’’’’’’’’’’’’’’’’’’ā’K’’’’’’’’’’’’’’’’’’’2 ’K’’’’’’’’’’’’’’’’’’’’’werden. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚ ’P’’’’’’’’’’’’’’’’’’’ā ’O’’’’’’’’’’’’’’’’’’’B!’S’’’’’’’’’’’’’’’’’’’¢!’P’’’’’’’’’’’’’’’’’’’"’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R"’J’’’’’’’’’’’’’’’’’’’¢"’J’’’’’’’’’’’’’’’’’’’ņ"’F’’’’’’’’’’’’’’’’’’’B#’J’’’’’’’’’’’’’’’’’’’’#’P’’’’’’’’’’’’’’’’’’’ņ#’Q’’’’’’’’’’’’’’’’’’’R$’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’$’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²$’K’’’’’’’’’’’’’’’’’’’%’O’’’’’’’’’’’’’’’’’’’b%’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢%’M’’’’’’’’’’’’’’’’’’’ņ%’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’&’M’’’’’’’’’’’’’’’’’’’b&’A’’’’’’’’’’’’’’’’’’’²&’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ&’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"'’Q’’’’’’’’’’’’’’’’’’’‚'’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ'’M’’’’’’’’’’’’’’’’’’’"(’A’’’’’’’’’’’’’’’’’’’r(’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢(’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ(’U’’’’’’’’’’’’’’’’’’’R)’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚)’O’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā)’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’*’L’’’’’’’’’’’’’’’’’’’R*’w’’’’’’’’’’’’’’’’’’’Ņ*’P’’’’’’’’’’’’’’’’’’’2+’N’’’’’’’’’’’’’’’’’’’‚+’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢+’M’’’’’’’’’’’’’’’’’’’ņ+’A’’’’’’’’’’’’’’’’’’’B,’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r,’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā,’r’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B-’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Š’Q’’’’’’’’’’’’’’’’’’’bŠ’W’’’’’’’’’’’’’’’’’’’Š’P’’’’’’’’’’’’’’’’’’’"‹’O’’’’’’’’’’’’’’’’’’’‚‹’V’’’’’’’’’’’’’’’’’’’’’kann. ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā‹’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"Œ’P’’’’’’’’’’’’’’’’’’’‚Œ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢Œ’:’’’’’’’’’’’’’’’’’’’⌒(’’’’’’’’’’’’’’’’’’’’0’’’’’’’’’’’’’’’’’’’R’I’’’’’’’’’’’’’’’’’’’¢’5’’’’’’’’’’’’’’’’’’’ā’@’’’’’’’’’’’’’’’’’’’2Ž’-’’’’’’’’’’’’’’’’’’’bŽ’I’’’’’’’’’’’’’’’’’’’²Ž’2’’’’’’’’’’’’’’’’’’’ņŽ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’\’’’’’’’’’’’’’’’’’’’2’Y’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’J’’’’’’’’’’’’’’’’’’’‘’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2‘’O’’’’’’’’’’’’’’’’’’’’‘’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²‘’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ‘’[’’’’’’’’’’’’’’’’’’’R’’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’E’’’’’’’’’’’’’’’’’’’ā’’Q’’’’’’’’’’’’’’’’’’’’’ #free(1.0)# ’’’’’’’’’B“’$’’’’’’’’’’’’’’’’’’’r“’ ’’’’’’’’’’’’’’’’’’’¢“’"’’’’’’’’’’’’’’’’’’’Ņ“’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’N’’’’’’’’’’’’’’’’’’’R”’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢”’P’’’’’’’’’’’’’’’’’’’•’Q’’’’’’’’’’’’’’’’’’’’’gung: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#link#ie# ’’’’’’’’b•’4’’’’’’’’’’’’’’’’’’’¢•’O’’’’’’’’’’’’’’’’’’’–’’’’’’’’’’’’’’’’’’’’"–’M’’’’’’’’’’’’’’’’’’’r–’F’’’’’’’’’’’’’’’’’’’Ā–’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’—’’’’’’’’’’’’’’’’’’’’2—’A’’’’’’’’’’’’’’’’’’’‚—’Q’’’’’’’’’’’’’’’’’’’ā—’T’’’’’’’’’’’’’’’’’’’B˜’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b˜’’’’’’’’’’’’’’’’’’’’‚˜’$’’’’’’’’’’’’’’’’’’’²˜’L’’’’’’’’’’’’’’’’’’’™’S’’’’’’’’’’’’’’’’’’’b™’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚™’’’’’’’’’’’’’’’’’’’’¢™’8’’’’’’’’’’’’’’’’’’’ā™’O’’’’’’’’’’’’’’’’’’’Bš’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚š’B’’’’’’’’’’’’’’’’’’’Қ’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"›’D’’’’’’’’’’’’’’’’’’’r›’R’’’’’’’’’’’’’’’’’’’Ņ›’O’’’’’’’’’’’’’’’’’’’2œ’L’’’’’’’’’’’’’’’’’’’‚œ’R’’’’’’’’’’’’’’’’’’’✒P’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’‚’=’’’’’’’’’’’’’’’’’’’Ā’P’’’’’’’’’’’’’’’’’’’"ž’M’’’’’’’’’’’’’’’’’’’rž’P’’’’’’’’’’’’’’’’’’’Ņž’N’’’’’’’’’’’’’’’’’’’"Ÿ’U’’’’’’’’’’’’’’’’’’’‚Ÿ’K’’’’’’’’’’’’’’’’’’’ҟ’S’’’’’’’’’’’’’’’’’’’2 ’#’’’’’’’’’’’’’’’’’’’b ’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā ’"’’’’’’’’’’’’’’’’’’’ņ ’$’’’’’’’’’’’’’’’’’’’"”’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R”’M’’’’’’’’’’’’’’’’’’’¢”’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā”’Z’’’’’’’’’’’’’’’’’’’B¢’T’’’’’’’’’’’’’’’’’’’¢¢’P’’’’’’’’’’’’’’’’’’’£’O’’’’’’’’’’’’’’’’’’’b£’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²£’’’’’’’’’’’’’’’’’’’’Ņ£’L’’’’’’’’’’’’’’’’’’’"¤’M’’’’’’’’’’’’’’’’’’’r¤’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¤’ ’’’’’’’’’’’’’’’’’’’ņ¤’E’’’’’’’’’’’’’’’’’’’B„’"’’’’’’’’’’’’’’’’’’’r„’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā„’’’’’’’’’’’’’’’’’’’’ā„’D’’’’’’’’’’’’’’’’’’’2¦’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b¦’’’’’’’’’’’’’’’’’’’’‚¦’C’’’’’’’’’’’’’’’’’’’Ҧ’M’’’’’’’’’’’’’’’’’’’"§’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B§’’’’’’’’’’’’’’’’’’’’b§’2’’’’’’’’’’’’’’’’’’’¢§’Q’’’’’’’’’’’’’’’’’’’Ø’M’’’’’’’’’’’’’’’’’’’RØ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚Ø’’’’’’’’’’’’’’’’’’’’¢Ø’’’’’’’’’’’’’’’’’’’’ĀØ’Q’’’’’’’’’’’’’’’’’’’"©’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B©’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r©’Y’’’’’’’’’’’’’’’’’’’Ņ©’P’’’’’’’’’’’’’’’’’’’2Ŗ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RŖ’W’’’’’’’’’’’’’’’’’’’²Ŗ’S’’’’’’’’’’’’’’’’’’’’’ ausfŪhren. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’«’U’’’’’’’’’’’’’’’’’’’r«’V’’’’’’’’’’’’’’’’’’’Ņ«’U’’’’’’’’’’’’’’’’’’’2¬’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r¬’’’’’’’’’’’’’’’’’’’’’¬’’’’’’’’’’’’’’’’’’’’²¬’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’­’’’’’’’’’’’’’’’’’’’’­’’’’’’’’’’’’’’’’’’’’2­’Q’’’’’’’’’’’’’’’’’’’’­’Q’’’’’’’’’’’’’’’’’’’ņ­’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’®’’’’’’’’’’’’’’’’’’’’2®’ ’’’’’’’’’’’’’’’’’’’b®’O’’’’’’’’’’’’’’’’’’’Ā®’K’’’’’’’’’’’’’’’’’’’Æ’M’’’’’’’’’’’’’’’’’’’bÆ’5’’’’’’’’’’’’’’’’’’’¢Æ’K’’’’’’’’’’’’’’’’’’’ņÆ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2°’T’’’’’’’’’’’’’’’’’’’’°’Q’’’’’’’’’’’’’’’’’’’ņ°’)’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’systemhandbuch.1’’’’’’’’’’’’’’N''''’N____________________________________________________________________________ ’#on("b")##on ("u")# ’’’’’’’’’’.#center#Betriebssystem E U M E L ’’’’’’’’’’’’’#center#Systemhandbuch ’’’’’’’.#center#Lizenzfreie Software der ’’’’’’’’’’’’’N#center#Gesellschaft fŪr Mathematik und Datenverarbeitung mbH, ’’’’’’’’’’’’’’’#center#5205 Sankt Augustin ’’^#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich fŪr ’’’’’’’’’’’’’’.#center#nichtkommerzielle Zwecke gestattet. ’’>#center#GewŁhrleistung und Haftung werden ausgeschlossen ’’’’’N____________________________________________________________________________ ’#start(5.1,1.5)# ’’’’’’’’’’’’’#center#EUMEL #center#Systemhandbuch ’’’’’’’.#center#copyright ERGOS GmbH, 1990 ’’’’’’’’’’’.Copyright: ERGOS GmbH April 1990 ’’’’’’’’’’^ Alle Rechte vorbehalten. Insbesondere ist die ŲberfŪhrung in’’’’’’’’’’’’’^ maschinenlesbare Form sowie das Speichern in InformationsŻ’’’’’’’’’’’’’’’^ systemen, auch auszugsweise, nur mit schriftlicher Einwilligung’’’’’’’’’’> der ERGOS GmbH gestattet. ’’’’’’’’’’’’’’’N +-----------------------------------------------------+ ’’’’’’’’’’’.Autoren : Jochen Liedtke ’’’. Dietmar Heinrichs ’’’’’’’’’. Rainer Hahn ’’’’’’’’’’’’’’’. Christian Szymanski ’’’’’’’. Thomas MŪller ’’’’’’’’’’’’’^Texterstellung : Dieser Text wurde mit der ERGOS-EUMEL Textverarbeitung erstellt ’’’’’’’’’’N und aufbereitet und auf einem Kyocera Laserdrucker geŻ’’’’’ druckt. ’’’> +----------------------------------------------+ ’.Ergonomic Office Software GmbH ’’’’’’’’’’’’’’’>Bergstr. 7 Telefon: (02241) 63075 ’’’’’’’’’’’’’’’>5200 Siegburg Teletex: 2627-2241413=ERGOS ’’’’’’’’’’> Telefax: (02241) 63078 ’’’’’’’’’’’’’’’#start(2.5,1.5)# ’’’’’’’’’’’’’%#center#EUMEL-Systemhandbuch #center#EinfŪhrung#right#% ’’’#ib(9)#EinfŪhrung#ie(9)# ’’’’’^Der grŚūte Teil dieses Systemhandbuchs ist fŪr Anwender geschrieben, die tiefer in’’’’’’’’’’’’Ndas EUMEL-System einsteigen und evtl. SystemergŁnzungen oder SystemŁnderunŻ’’’^gen programmieren wollen. Der erste Teil ist a’’’’’’’’’-’M’’’’’’’’’’’’’’’’’’’ā-’A’’’’’’’’’’’’’’’’’’’2.’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r.’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā.’P’’’’’’’’’’’’’’’’’’’"/’\’’’’’’’’’’’’’’’’’’’‚/’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢/’T’’’’’’’’’’’’’’’’’’’0’S’’’’’’’’’’’’’’’’’’’’’ abgelegt. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b0’M’’’’’’’’’’’’’’’’’’’²0’A’’’’’’’’’’’’’’’’’’’1’;’’’’’’’’’’’’’’’’’’’B1’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’‚1’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ1’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"2’M’’’’’’’’’’’’’’’’’’’r2’A’’’’’’’’’’’’’’’’’’’Ā2’&’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’’’ņ2’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’23’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚3’Q’’’’’’’’’’’’’’’’’’’ā3’S’’’’’’’’’’’’’’’’’’’B4’M’’’’’’’’’’’’’’’’’’’’4’F’’’’’’’’’’’’’’’’’’’ā4’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’5’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R5’F’’’’’’’’’’’’’’’’’’’¢5’N’’’’’’’’’’’’’’’’’’’ņ5’N’’’’’’’’’’’’’’’’’’’B6’P’’’’’’’’’’’’’’’’’’’¢6’Q’’’’’’’’’’’’’’’’’’’7’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’27’M’’’’’’’’’’’’’’’’’’’‚7’A’’’’’’’’’’’’’’’’’’’Ņ7’’’’’’’’’’’’’’’’’’’’’’ INT VAR i; ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ7’-’’’’’’’’’’’’’’’’’’’"8’4’’’’’’’’’’’’’’’’’’’b8’’’’’’’’’’’’’’’’’’’’’’ line; ’’’’’’’’’’’‚8’%’’’’’’’’’’’’’’’’’’’²8’’’’’’’’’’’’’’’’’’’’Ņ8’’’’’’’’’’’’’’’’’’’’’’ PER ’’’’’’’’’’’’’ņ8’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’9’<’’’’’’’’’’’’’’’’’’’R9’=’’’’’’’’’’’’’’’’’’’’9’’’’’’’’’’’’’’’’’’’’¢9’’’’’’’’’’’’’’’’’’’’Ā9’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’:’<’’’’’’’’’’’’’’’’’’’B:’-’’’’’’’’’’’’’’’’’’’r:’’’’’’’’’’’’’’’’’’’’’:’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ:’’’’’’’’’’’’’’’’’’’’ņ:’’’’’’’’’’’’’’’’’’’’;’’’’’’’’’’’’’’’’’’’’’’ PER. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’2;’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚;’P’’’’’’’’’’’’’’’’’’’ā;’N’’’’’’’’’’’’’’’’’’’2<’N’’’’’’’’’’’’’’’’’’’‚<’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢<’C’’’’’’’’’’’’’’’’’’’ņ<’K’’’’’’’’’’’’’’’’’’’B=’K’’’’’’’’’’’’’’’’’’’’=’O’’’’’’’’’’’’’’’’’’’ņ=’O’’’’’’’’’’’’’’’’’’’R>’I’’’’’’’’’’’’’’’’’’’¢>’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ>’I’’’’’’’’’’’’’’’’’’’B?’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’?’M’’’’’’’’’’’’’’’’’’’ā?’A’’’’’’’’’’’’’’’’’’’2@’ ’’’’’’’’’’’’’’’’’’’b@’*’’’’’’’’’’’’’’’’’’’’’ .... ’’’’’’’’’’’’’’’’@’’’’’’’’’’’’’’’’’’’’’’ .... ’’’’’’’’’’’’’’’²@’#’’’’’’’’’’’’’’’’’’’ā@’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’"A’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rA’J’’’’’’’’’’’’’’’’’’’ĀA’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Form: ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’ˆ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’B’N’’’’’’’’’’’’’’’’’’’āB’S’’’’’’’’’’’’’’’’’’’BC’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rC’M’’’’’’’’’’’’’’’’’’’ĀC’A’’’’’’’’’’’’’’’’’’’D’$’’’’’’’’’’’’’’’’’’’’’ INT VAR x; ’’’’’’’’’’’ x := wert. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ wert: ’’’’’’’’’’’’’’’’ IF x < 0 ’’’’’’’’’’ THEN 0 ’’’’’’’’BD’’’’’’’’’’’’’’’’’’’’’’ FI. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’bD’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²D’R’’’’’’’’’’’’’’’’’’’E’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RE’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚E’P’’’’’’’’’’’’’’’’’’’āE’Q’’’’’’’’’’’’’’’’’’’BF’M’’’’’’’’’’’’’’’’’’’’F’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āF’O’’’’’’’’’’’’’’’’’’’BG’S’’’’’’’’’’’’’’’’’’’¢G’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅG’M’’’’’’’’’’’’’’’’’’’"H’A’’’’’’’’’’’’’’’’’’’rH’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²H’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅH’(’’’’’’’’’’’’’’’’’’’I’;’’’’’’’’’’’’’’’’’’’BI’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚I’2’’’’’’’’’’’’’’’’’’’ĀI’’’’’’’’’’’’’’’’’’’’’’ END OP :=; ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āI’+’’’’’’’’’’’’’’’’’’’J’’’’’’’’’’’’’’’’’’’’2J’’’’’’’’’’’’’’’’’’’’RJ’’’’’’’’’’’’’’’’’’’’’’ FI ’’’’’’’’’’’’’’rJ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’J’2’’’’’’’’’’’’’’’’’’’ŅJ’!’’’’’’’’’’’’’’’’’’’K’’’’’’’’’’’’’’’’’’’’"K’5’’’’’’’’’’’’’’’’’’’bK’’’’’’’’’’’’’’’’’’’’‚K’3’’’’’’’’’’’’’’’’’’’ĀK’!’’’’’’’’’’’’’’’’’’’’’ FI ’’’’’’’’’’’’’’ņK’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’L’2’’’’’’’’’’’’’’’’’’’RL’!’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’‚L’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’’’¢L’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’ĀL’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’M’U’’’’’’’’’’’’’’’’’’’rM’U’’’’’’’’’’’’’’’’’’’ŅM’S’’’’’’’’’’’’’’’’’’’2N’N’’’’’’’’’’’’’’’’’’’‚N’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢N’T’’’’’’’’’’’’’’’’’’’O’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2O’K’’’’’’’’’’’’’’’’’’’’’zen. ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚O’M’’’’’’’’’’’’’’’’’’’ŅO’A’’’’’’’’’’’’’’’’’’’"P’>’’’’’’’’’’’’’’’’’’’bP’’’’’’’’’’’’’’’’’’’’‚P’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ REP ’’’’’’’’’’’’’’’’¢P’ ’’’’’’’’’’’’’’’’’’’ŅP’’’’’’’’’’’’’’’’’’’’’’ line; ’’’’’’’’’’’ņP’ ’’’’’’’’’’’’’’’’’’’"Q’’’’’’’’’’’’’’’’’’’’BQ’%’’’’’’’’’’’’’’’’’’’’’ line ’’’’’’’’’’’’rQ’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āQ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’M’’’’’’’’’’’’’’’’’’’RR’R’’’’’’’’’’’’’’’’’’’²R’L’’’’’’’’’’’’’’’’’’’S’N’’’’’’’’’’’’’’’’’’’RS’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ INITFLAG ’’’’’’’’’’’’‚S’%’’’’’’’’’’’’’’’’’’’²S’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’:= ’’’’’’’’’’’’’’’’’’ņS’F’’’’’’’’’’’’’’’’’’’BT’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ initialized ’’’’’’’’’rT’A’’’’’’’’’’’’’’’’’’’ĀT’P’’’’’’’’’’’’’’’’’’’"U’L’’’’’’’’’’’’’’’’’’’’’ Task A!). ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rU’N’’’’’’’’’’’’’’’’’’’ĀU’P’’’’’’’’’’’’’’’’’’’"V’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rV’M’’’’’’’’’’’’’’’’’’’ĀV’A’’’’’’’’’’’’’’’’’’’W’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BW’&’’’’’’’’’’’’’’’’’’’rW’’’’’’’’’’’’’’’’’’’’’W’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²W’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āW’$’’’’’’’’’’’’’’’’’’’’’ .... ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’X’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2X’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RX’$’’’’’’’’’’’’’’’’’’’’’ .... ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚X’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢X’!’’’’’’’’’’’’’’’’’’’ŅX’#’’’’’’’’’’’’’’’’’’’Y’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FI . ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"Y’’’’’’’’’’’’’’’’’’’’BY’M’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’N#headandbottom("52","EUMEL-Benutzerhandbuch","TEIL 2 : ELAN","2")# ’’’’’’’’’’’>#pagenr ("%", 52)##setcount(1)##block##pageblock# ’’’’’’’’’’’’.#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’#center#TEIL 2 : ELAN ’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’N#center#______________________llerdings fŪr alle interessant, die ein’’’’’’’’’NEUMEL-System verwenden, selbst fŪr AnfŁnger, die ihr System zum ersten Mal in’NBetrieb nehmen wollen. Entsprechend der verschiedenen Adressatenkreise unterŻ’Nscheiden sich die einzelnen Kapitel stark in der Beschreibungsart. Deshalb: ’’>#on("b")##on("i")#Sind Sie EUMEL-Neuling?#off("b")##off("i")# ~ Dann sollten Sie #on("b")##on("i")#vor#off("b")##off("i")# dem Einschalten Ihres Systems die EinfŪhrung des KapiŻ’’’’’’’’^ tels "System einrichten" lesen. Dort werden keine weiteren Kenntnisse vorausŻ’’’’’’’’’’’’^ gesetzt. Danach sollten Sie erst einmal durch praktisches Arbeiten mit Hilfe des’’’’’’’’’> Benutzerhandbuchs etwas mit dem System vertraut werden. ’^#on("b")##on("i")#Haben Sie schon einige Zeit mit dem EUMEL gearbeitet?#off("b")##off("i")# ’’^#on("b")##on("i")#Sind Sie mit dem System einigermaūen vertraut?#off("b")##off("i")# ’’’’’’’’’^ Dann lesen Sie den kompletten Teil 1 ("System einrichten") dieses SystemhandŻ’’’’’’’’’’’’N Das Lesen der folgenden Kapitel ist fŪr den einfachen Betrieb des EUMEL-’^ Systems nicht erforderlich. Sie setzen auch intime Kenntnis des Systems auf’’’’’’’’’’’’’’^ dem Niveau des Benutzerhandbuchs voraus und wŪrden AnfŁnger leicht verwirŻ’’’’’’’’’’’’’’’N#on("b")##on("i")#Haben Sie Probleme mit Ihrer Hardware?#off("b")##off("i")# ’n #on("i")#Wenn Sie nichts von Hardware verstehen, wenden Sie sich an einen Fachmann!#off("i")# ’’’’’’’’’’’^ Wenn Sie ein gewisses Grundwissen Ūber Hardware haben, dann lesen Sie Teil 2’’’’’’’’’’’’’N ("Hardware und ihre Steuerung"). In diesem Kapitel sollten Sie "3. KanŁŻ’> le und Konfigurierung" erst einmal auslassen. ’’’’’’’’’’’^#on("b")##on("i")#Wollen Sie tiefer in das Betriebssystem einsteigen?#off("b")##off("i")# ’’’’N#on("b")##on("i")#Haben Sie EUMEL-Erfahrung?#off("b")##off("i")# ’’’’’’’’’’’’’N#on("b")##on("i")#Haben Sie Programmiererfahrung?#off("b")##off("i")# ’’’’’’’’N Dann lesen Sie im Systemhandbuch alles, was Ihnen interessant erscheint. %#center#EUMEL-Systemhandbuch .#center#1. System einrichten#right#% ’’’’’’’’’.#ib(9)#1. #ib#System einrichten#ie##ie(9)# ’’’#ib(9)#1.1. EinfŪhrung#ie(9)# .#ib(9)#Wie Ihr System aufgebaut ist#ie(9)# ’’’^Der kleinstmŚgliche EUMEL-Rechner besteht aus einem #ib#Rechnerkern#ie# und einem TerŻ’’’’’’’’> Rechnerkern Terminal 1 ’’’’’’’’’’’’’’’^ #on("i")#Anmerkung: In manchen FŁllen ist das Terminal hardwaremŁūig in den Rechner’’’’’’^ integriert. Trotzdem fassen wir diese physische Einheit dann als’’’’’’’’’’’’’’N zwei logisch getrennte Komponenten auf, nŁmlich Rechnerkern’’’. und Terminal!#off("i")# ’’’’’’^Wie man sieht, hat das #ib#Terminal#ie# die Nummer 1. Das bedeutet, daū es Ūber Kanal 1 mit’’’^dem Rechnerkern verbunden ist. Das EUMEL-System kennt 16 solche #ib#KanŁle#ie#, wobei es’’’’’’Nvon der konkreten Hardware abhŁngt, welche KanŁle wirklich vorhanden sind und’^welche GerŁte man daran anschlieūen kann. (Allerdings ist der Kanal 1 als Verbindung’’’’’’’’’’.zum Terminal 1 immer vorhanden.) ’’’’’’’’’’’’’^In den meisten FŁllen wird auch ein #ib#Drucker#ie# angeschlossen sein. Die genaue AnŻ’’’’’’’’^schluūart ist wieder von der konkret verwendeten Hardware abhŁngig. Nehmen wir an,’’’’’’’’’’’’.er sei an Kanal 4 angeschlossen: ’’’’’’’’’’’’’> Rechnerkern Terminal 1 ’’’’’’’’’’’’’’’> Drucker (Kanal 4) ’’’’’’’’NMan sieht also, daū LŪcken bei der Verwendung der KanŁle auftreten dŪrfen. BeiNMulti-User-Systemen kŚnnen, sofern die entsprechenden Schnittstellen vorhanden^sind, weitere Terminals und andere GerŁte (z.B. #ib#Plotter#ie#) angeschlossen werden: ’’’’’’’> Rechnerkern Terminal 1 ’’’’’’’’’’’’’’> Terminal 2 ’’’’’’’’’’’’’’> Plotter (Kanal 3) ’’’’’’’> Drucker (Kanal 4) ’’’’’’’> Terminal 5 ’’’’’’’’’’’’’’> Terminal 6 ’’’’’’’’’’’’’’>#ib(9)#1.2. Wie Sie die EUMEL-Software erhalten und ’’’’’’’’’’ installieren#ie(9)# ’’’’’.Betriebssystem : EUMEL (Version 1.8) ’’’’’’’>Hardware : IBM-PC/AT, IBM-PC/XT und Kompatible ’’’’’’’.SHard-Version : 4.9 und 5.0 ’’’’’’’’’’’’’’’Erforderliche Disketten ’’’’’’N - EUMEL-Generierungsdiskette : "SETUP-EUMEL AT" (bzw. "SETUP-’’’’’’’’’’> EUMEL XT") ’’’’’’’’’’’’’N - EUMEL-Systemdisketten : "HG0" und "HG1" (EUMEL0-Maschine’’’’’’’’^ und Hintergrund) evtl. auch nur eine 1,2’’’’’’’’’’’’’’’> MB Hintergrunddiskette ^Die Diskette "SETUP-EUMEL" ist ein kleines EUMEL-System zur Installation des BeŻ’’’’’’’’’’’’’’Ntriebssystems EUMEL auf einem AT/XT kompatiblen Rechner. Auf diesem System’’’’Nlaufen Programme ab, die im Dialog mit dem Benutzer das Einrichten einer oder’.mehrerer EUMEL-Partitionen ermŚglichen. ’’’’’’N#on("b")#Diese Diskette darf nicht schreibgeschŪtzt sein!#off("b")# ’’’’’’’’’’NBeim Einrichten einer EUMEL-Partition wird nach PrŪfung der Festplatte durch’’N"SETUP-EUMEL" der hardwarenahe Teil des EUMEL-Systems, 'SHard' (Software/’’’’’>Hardware-Interface), auf die Festplatte geschrieben. ’’’’’’’’’NDie Hintergrunddisketten beinhalten das eigentliche Betriebssystem EUMEL (den’NSystemkern (EUMEL-0-Maschine)) und die darauf aufbauenden Systemteile (HinterŻLeistungen des SETUP EUMEL ’’’^Wenn Sie bereits ein Betriebssystem auf Ihrer Festplatte installiert haben, mŪssen Sie’’’’’’’’^darauf achten, daū noch ausreichend Platz fŪr ein EUMEL-System Ūbrig ist. Die MinŻ’’’’’’’’’’’’^destgrŚūe einer Partition fŪr ein EUMEL-System betrŁgt ca. 1MB, die maximale GrŚūe’’’’’’’’’’’’Nist vom benutzten Systemkern abhŁngig: der in der Version 1.8.6 M+ verwendete’NSystemkern u186+ Ž1523 erlaubt eine maximale GrŚūe von 128 MB. Andere, Łltere’^EUMEL Versionen erlauben nur eine PartitionsgrŚūe von 16 MB. Aus KompatibilitŁtsŻ’’’’’’’’’’’’’^grŪnden stellt das Installationsprogramm eine Kontrollfrage bei Ųberschreiten der 16’’’’’’’’’’NSoll neben EUMEL auch eine MS-DOS Partition auf der Festplatte sein, muū, da’’^MS-DOS standardmŁūig die gesamte Festplatte belegt, dieses System gesichert, mit’’’’’’’’’’’’’’^dem MS-DOS-Kommando 'fdisk' (o.Ł.) die Partition gelŚscht und entsprechend kleiner’’’’’’’’’’’’^neu eingerichtet werden. Sie kŚnnen auch bei der EUMEL-Installation alle bereits’’’’’’’’’’’’’’Nbestehenden Systeme lŚschen; dazu bietet Ihnen der SETUP-EUMEL die Option’’’’’^'LŚschen der gesamten Partitionstabelle' an. Dabei gehen jedoch alle Daten auf der’’’’’’’’’’’’^Festplatte verloren. Achten Sie also darauf, daū sie alle Daten vorher gesichert haben! ’’’’’’^Um nun die Partitionierung fŪr Ihr EUMEL-System vorzunehmen, legen Sie die Diskette’’’’’’’’’’’^"SETUP-EUMEL" ohne Schreibschutzmarke in das Start-Laufwerk. Sollten Sie ein GerŁt’’’’’’’’’’’’^mit zwei Laufwerken besitzen, dann ist es das Laufwerk A:. (Bei Unklarheiten im BenutŻ’’’’’’’’.zerhandbuch des Herstellers nachsehen.) ’’’’’’^Schalten Sie nun den Rechner ein bzw. betŁtigen Sie den Tastatur-RESET, wenn Ihr’’’’’’’’’’’’’’^GerŁt bereits eingeschaltet ist (meistens mit dem gleichzeitigen Druck der Tasten’’’’’’’’’’’’’CTRL, ALT und DEL). ’’’’’’’’’’>Der SETUP-EUMEL gibt zunŁchst folgende SHard-Meldung aus: ’’’’>+--------------------------------------------+ ’’’’’’’’’’’’’’’>i i ’’’’’’’’’’’’’’’______________________________________ ’’’’’’’’’2 - % #right#GMD ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #right#2 - % ’’’’’’’’’’’’’2.5 Programmstruktur ’’’’’’’’NEin ELAN-Programm kann aus mehreren Moduln (Bausteinen) aufgebaut sein, die inNELAN PACKETs genannt werden. Das letzte PACKET wird "main packet" genannt,’’’’^weil in diesem das eigentliche Benutzerprogramm (Hauptprogramm) enthalten ist. ’’’’’’’’’’’’’’’^Dies soll eine Empfehlung sein, in welcher Reihenfolge die Elemente eines PACKETs’’’’’’’’’’’’’geschrieben werden sollen: ’’’>Ein "main packet" kann aus folgenden Elementen bestehen: ’’’’’^a) Deklarationen und Anweisungen. Diese mŪssen nicht in einer bestimmten ReihenŻ’’’’’’’’’’’’’’^ folge im Programm erscheinen, sondern es ist mŚglich, erst in dem Augenblick zu’’’’’’’’’’’’^ deklarieren, wenn z.B. eine neue Variable benŚtigt wird. Es ist jedoch gute ProŻ’’’’’’’’’’’^ grammierpraxis, die meisten Deklarationen an den Anfang eines Programms oder’’’’’’’’’’’’’’’> Programmteils (Refinement, Prozedur) zu plazieren. ’’’’’’’’ ; ’’’’’’’’’ ’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT VAR erste zahl, zweite zahl; ’’’’’’’’’’’’. put ("erste Zahl = "); get (erste zahl); ’’’’. put ("zweite Zahl ="); get (zweite zahl) ’’’’N____________________________________________________________________________ ’^b) Deklarationen, Refinements und Anweisungen. In diesem Fall ist es notwendig, die ’’’’’’’’’’N Refinements hintereinander zu plazieren. Refinement-Aufrufe und/oder’’’’’’’> Anweisungen sollten textuell vorher erscheinen. ’’’’’’’’’’’ ; ’’’’’’’’’> . ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’N Innerhalb der Refinements sind Anweisungen und/oder Deklarationen mŚglich. N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT VAR erste zahl, zweite zahl; ’’’’’’’’’’’’ loesche bildschirm; ’’’’’’’’’ lies zwei zahlen ein. ’’’’’’’ loesche bildschirm: ’’’’’’’’’ lies zwei zahlen ein: ’’’’’’’. put ("erste Zahl = "); get (erste zahl); ’’. put ("zweite Zahl ="); get (zweite zahl). ’N____________________________________________________________________________ ’Nc) Deklarationen, Prozeduren und Anweisungen. Werden Prozeduren vereinbart,’’’^ sollte man sie nach den Deklarationen plazieren. Danach sollten die Anweisungen’’’’’’’’’’’’ ; ’’’’’’’’’ ; ’’’’’’’’’’’’ ’’’’’’’’’’’’’^ Mehrere Prozeduren werden durch ";" voneinander getrennt. In diesem Fall sind’’’’’’’’’’’’’’^ die Datenobjekte aus den Deklarationen auūerhalb von Prozeduren statisch, d.h.’’’’’’’’’’’’’N wŁhrend der gesamten Laufzeit des Programm vorhanden. Solche Datenobjekte’’N werden auch PACKET-Daten genannt. Im Gegensatz dazu sind die Datenobjekte’’^ aus Deklarationen in Prozeduren dynamische Datenobjekte, die nur wŁhrend der’’’’’’’’’’’’’’’^ Bearbeitungszeit der Prozedur existieren. Innerhalb einer Prozedur dŪrfen wiederŻ’’’’’’’’’’N um Refinements verwendet werden. Ein Prozedur-Rumpf hat also den formalen’’. Aufbau wie unter a) oder b) geschildert. ’’^ Die Refinements und Datenobjekte, die innerhalb einer Prozedur deklariert wurden,’’’’’’’’’’N sind lokal zu dieser Prozedur, d.h. kŚnnen von auūerhalb nicht angesprochenN____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT VAR erste zahl, zweite zahl; ’’’’’’’’’’’’. PROC vertausche (INT VAR a, b): ’’’’’’’’’’’’’ INT VAR x;  END PROC vertausche; ’’’’’’’’. put ("erste Zahl = "); get (erste zahl); ’’’’. put ("zweite Zahl ="); get (zweite zahl); ’’’ IF erste zahl > zweite zahl ’. THEN vertausche (erste zahl, zweite zahl) N____________________________________________________________________________ ’Nd) Deklarationen, Prozeduren, Anweisungen und PACKET-Refinements. ZusŁtzlich’’N zu der MŚglichkeit c) ist es erlaubt, neben den Anweisungen auūerhalb einer. Prozedur auch Refinements zu verwenden: ’’’ ; ’’’’’’’’’ ; ’’’’’’’’’’’’ . ’’’’’’’’’’’ ’’’’’’’’’’’’’^ Diese Refinements kŚnnen nun in Anweisungen auūerhalb der Prozeduren benutzt’’’’’’’’’’’’’’’^ werden oder auch durch die Prozeduren (im letzteren Fall spricht man analog zu’’’’’’’’’’’’’N globalen PACKET-Daten auch von PACKET-Refinements oder globalen RefineŻ’’’’N ments). In PACKET-Refinements dŪrfen natŪrlich keine Datenobjekte verwandt’. werden, die lokal zu einer Prozedur sind. ’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT VAR erste zahl, zweite zahl; ’’’’’’’’’’’’. PROC vertausche (INT VAR a, b): ’’’’’’’’’’’’’ INT VAR x;  END PROC vertausche; ’’’’’’’’ loesche bildschirm; ’’’’’’’’’ lies zwei zahlen ein; ’’’’’’’ ordne die zahlen. ’’’’’’’’’’’ loesche bildschirm: ’’’’’’’’’ lies zwei zahlen ein: ’’’’’’’. put ("erste Zahl = "); get (erste zahl); ’’. put ("zweite Zahl ="); get (zweite zahl). ’ ordne die zahlen: ’’’’’’’’’’’. IF erste zahl > zweite zahl ’’’’’’’’’’’’’’’> THEN vertausche (erste zahl, zweite zahl) ’’’’’’’’’’’’’’N____________________________________________________________________________ ’.2.6 Zusammengesetzte Datentypen ’’’’’’’’’’’’’^In ELAN gibt es die MŚglichkeit, gleichartige oder ungleichartige Datenobjekte zu’’’’’’’’’’’’’.einem Objekt zusammenzufassen. ’’’’’’’’’’’’’’’2.6.1 Reihung ’’’’’’’’’’’’’’’^Die Zusammenfassung gleichartiger Datenobjekte, wird in ELAN eine Reihung (ROW)’’’’’’’’’’’’’’’Ngenannt. Die einzelnen Objekte einer Reihung werden Elemente genannt. ’’’’’’’’.Eine Reihung wird folgendermaūen deklariert: ’>- SchlŪsselwort #on("i")##on("b")#ROW#off("i")##off("b")# ’’’.- Anzahl der zusammengefaūten Elemente ’’’’’’> (INT-Denoter oder durch LET definierter Name) ’’’’’’’’’’’’’- Datentyp der Elemente ’’’’’~- Zugriffsrecht ( #on("i")##on("b")#VAR#off("i")##off("b")# oder #on("i")##on("b")#CONST#off("i")##off("b")# ) ’’’’’’’’’’’’’’- Name der Reihung. ’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ ROW 10 INT VAR feld ’’’’’’’’’N____________________________________________________________________________ ’^Im obigen Beispiel wird eine Reihung von 10 INT-Elementen deklariert. ROW 10 INT’’’’’’’’’’’’’’^ist ein (neuer, von den elementaren unterschiedlicher) Datentyp, fŪr den keine OperaŻ’’’’’’’’’^tionen definiert sind, auūer der Zuweisung. Das Accessrecht (VAR im obigen BeiŻ’’’’’’’’’’’’’’’^spiel) und der Name ('feld') gilt - wie bei den elementaren Datentypen - fŪr diesen’’’’’’’’’’’.neuen Datentyp, also fŪr alle 10 Elemente. ’’’NWarum gibt es keine Operationen auūer der Zuweisung? Das wird sehr schnell’’’’^einsichtig, wenn man bedenkt, daū es ja sehr viele Datentypen (zusŁtzlich zu den’’’’’’’’’’’’’’Nelementaren) gibt, weil Reihungen von jedem Datentyp gebildet werden kŚnnen: ’.ROW 1 INT ROW 1 REAL ’’’’’’’’’’’’’.ROW 2 INT ROW 2 REAL ’’’’’’’’’’’’’ : : ’’’’’.ROW maxint INT ROW maxint REAL ’’’’’’’’>i Setup-SHard fŪr EUMEL auf IBM PC/AT, V 4.8 i ’’’’’’’’’’’’’’’>i Copyright (C) 1989 ERGOS GmbH, Siegburg i ’’’’’’’’’’’’’’’>i i ’’’’’’’’’’’’’’’>+--------------------------------------------+ ’’’’’’’’’’’’’’’NWarten Sie beim Hochfahren des SETUP-EUMELs, bis Ihnen nach einem ZwischenŻ’’’^bildschirm ("SETUP-EUMEL fŪr Modul-SHard") eine Partitionstabelle angezeigt wird.’’’’’’’’’’’’’^Dieser kŚnnen Sie entnehmen, ob bereits Partitionen auf der Festplatte eingerichtet’’’’’’’’’’’.und wie diese spezifiziert sind. ’’’’’’’’’’’’’^Angezeigt werden neben GrŚūe, Start- und Endspur der einzelnen Partitionen auch’’’’’’’’’’’’’’’Neine Typ-Nummer. FŪr EUMEL-Partitionen werden in aufsteigender Reihenfolge die^Typ-Nummern 69 bis 72, fŪr MS-DOS je nach GrŚūe der eingerichteten Partition die’’’’’’’’’’’’’’^Nummern 1 oder 4 vergeben. Auūerdem wird die gerade aktive Partition durch einen’’’’’’’’’’’’’’^entsprechenden Eintrag in der Tabelle kenntlich gemacht. "Aktiv" ist die Partition, die’’’’’’’Nnach dem nŁchsten Einschalten des Rechners bzw. nach dem nŁchsten Tastatur-’’’RESET gestartet wŪrde. ’’’’’’’NSie sehen zusŁtzlich ein MenŪ mit folgenden zur Auswahl stehenden Funktionen: N+------------------------------------------------------------+ ’’’’’’’’’’’’’’’Ni i ’’’’’’’’’’’’’’’Ni - EUMEL-Partition einrichten 1 i ’’’’’’’’’’’’’’’Ni - erneuern (Neuer SHard) 2 i ’’’’’’’’’’’’’’’Ni - aktivieren 3 i ’’’’’’’’’’’’’’’Ni - lŚschen 4 i ’’’’’’’’’’’’’’’Ni - Partitionstabelle lŚschen 5 i ’’’’’’’’’’’’’’’Ni - SHard-Konfiguration anzeigen 6 i ’’’’’’’’’’’’’’’Ni - SHard konfigurieren 7 i ’’’’’’’’’’’’’’’Ni - SHardmodule laden oder lŚschen 8 i ’’’’’’’’’’’’’’’Ni - SETUP-EUMEL beenden 0 i ’’’’’’’’’’’’’’’Ni i ’’’’’’’’’’’’’’’N+------------------------------------------------------------+ ’’’’’’’’’’’’’’’N#on("i")##on("u")#EUMEL - Partition einrichten #off("u")##off("i")# ’’’’’’’’’’^Eine neue EUMEL-Partition wird gemŁū den im weiteren erfragten Angaben eingerichŻ’’’’’’’’’’’’’^tet. In die Partition wird ein SHard geschrieben, dessen Konfiguration die gelieferte’’’’’’’’’^Grundkonfiguration oder die von Ihnen eingestellte ist (s. Partitionieren der Festplatte,’’’’’^#on("i")##on("u")#EUMEL - Partition erneuern (Neuer SHARD)#off("u")##off("i")# ’’’’’’’’’’’’’’’^In eine bereits vorhandene Partition wird ein SHard in der eingestellten Konfiguration’’’’’’’’^geschrieben. Der bis dahin vorhandene SHard wird Ūberschrieben. Die MŚglichkeit’’’’’’’’’’’’’’’^besteht jedoch nur, wenn die Partition mit einem SETUP-EUMEL eingerichtet worden’’’’’’’’’’’’’’nErneuern bedeutet, nur den SHard #on("u")#auszutauschen#off("u")# auf einer Partition, die schon einen’’’’’’’’^fertigen EUMEL enthŁlt, ohne daū man dabei den EUMEL lŚscht. Das ist dann sinnvoll,’’’’’’’’’’’Nwenn man eine neue Version des SHard benutzen mŚchte oder den SHard aus irŻ’’’^gendwelchen GrŪnden (z.B. Streamer gekauft) um einen oder mehrere Module erweiŻ’’’’’’’’’’’’’’’^Diese Aktion kann nur durchgefŪhrt werden, wenn bereits ein SHard mit der VersionsŻ’’’’’’’’’’’nnummer 4.x in dieser Partion vorhanden ist. Öltere (Version 2.7, 2.8 etc.) kŚnnen #on("u")#nicht#off("u")#’’’’ersetzt werden. ’’’’’’’’’’’’’’N#on("i")##on("u")#EUMEL - Partition aktivieren#off("u")##off("i")# ’’’’’’’’’’’^Eine Partition wird ausgewŁhlt und aktiv gesetzt, d.h. beim nŁchsten Start des ReŻ’’’’’’’’’’’’Nchners wird das System, das auf dieser Partition steht, hochgefahren. ’’’’’’’’N#on("i")##on("u")#EUMEL - Partition lŚschen #off("u")##off("i")# ’’’’’’’’’’’’’^Hierbei wird ein Eintrag aus der Partitionstabelle entfernt. Die EUMEL-Partition wird’’’’’’’’’^nicht wirklich gelŚscht, d.h. wenn man nach dem LŚschen den Plattenbereich noch’’’’’’’’’’’’’’’^nicht anderweitig verwendet hat, kann das EUMEL-System auf dieser Partition durch’’’’’’’’’’’’’^ein "EUMEL-Partition einrichten" auf genau demselben Plattenbereich (Start-/EndzyŻ’’’’’’’’’’’’.linder) wieder hergestellt werden. ’’’’’’’’’’’N#on("i")##on("u")#Partitionstabelle lŚschen#off("u")##off("i")# ’’’’’’’’’’’’’’.Dies ist eine sehr gefŁhrliche Option ! ’’’’’’~Es werden hiermit #on("u")##on("b")#alle#off("b")##off("u")# Partitionen auf der Platte gelŚscht (nicht nur die von EUMEL).’’’^Auch hier gilt zwar, daū die Partitionen selbst an sich unangetastet bleiben und wieŻ’’’’’’’’’^derhergestellt werden kŚnnten, aber dies ist bei anderen Betriebssystemen oft nicht’’’’’’’’’’’.mŚglich. Also #on("u")#VORSICHT#off("u")#. ’’’N#on("i")##on("u")#SHard-Konfiguration anzeigen #off("u")##off("i")# ’’’’’’’’’’^Die Module des SHard, der bereitgestellt ist, um auf die Platte geschrieben zu werden,’’’’’’’’^werden angezeigt. Es werden alle definierten KanŁle angezeigt und zu jeder KanalŻ’’’’’’’’’’’’’^nummer der assoziierte Modulname. Aufgelistet ist die zuletzt mit dem SETUP-EUMEL’’’’’’’’’’’’’.zusammengestellte Konfiguration. ’’’’’’’’’’’’’>#on("i")##on("u")#SHard konfigurieren #off("i")##off("u")# ’’’NZusammenstellen von einer SHardbasis und SHardmodulen zu einem neuen SHard,’’’^um eine neue Partition einzurichten oder den SHard einer bestehenden Partition zu’’’’’’’’’’’’’^ACHTUNG: Bitte diesen Menuepunkt nicht experimentell benutzen! Eine Anleitung’’’’’’’’’’’’’’’> zum Thema Module etc. wird separat erscheinen. ’’’’N#on("i")##on("u")#SHardmodule laden oder lŚschen #off("u")##off("i")# ’’’’’’’’NHiermit kŚnnen neue Module oder neue Versionen von Modulen in den SETUP-EUMEL’^geladen werden oder nicht mehr benŚtigte Module gelŚscht werden. Die neuen ModuŻ’’’’’’’’’’’’’’Nle werden von einer EUMEL-Archivdiskette gelesen, deren Name zuvor eingegeben’NACHTUNG: Bitte diesen MenŪpunkt nicht experimentell benutzen! Eine Anleitung> zum Thema Module etc. wird separat erscheinen. ’’’’>#on("i")##on("u")#SETUP-EUMEL beenden #off("u")##off("i")# ’’’.SETUP-Programm ordnungsgemŁū beenden. ’’’’’’’’ENDE-Meldung abwarten! ’’’’’’’^Die eigentliche Partitionierung beginnt nun, indem Sie MenŪ-Punkt 1 "EUMEL-Partition’’’’’’’’’’neinrichten" anwŁhlen. (Punkt 1 wird Ihnen nur dann #on("b")#nicht#off("b")# angeboten, wenn die FestŻ’’’’’’’’’^platte bereits vollstŁndig belegt ist. Sichern Sie dann das alte System und lŚschen eine’’’’’’^oder alle Partitionen.) Die Kontrollabfrage "Neue EUMEL-Partition einrichten? (j/n)"’’’’’’’’’’.beantworten Sie entsprechend mit "j". ’’’’’’’’^Beim Generieren einer EUMEL-Partition werden Angaben zu GrŚūe und Startzylinder’’’’’’’’’’’’’’’Nabgefragt. DafŪr werden Vorgaben gemacht, die Sie bestŁtigen, indem Sie die’’’N-Taste betŁtigen, oder die Sie Ūberschreiben kŚnnen. Die abschlieūende^Abfrage "Sind die Partitionsangaben korrekt?" fordert Sie zur ŲberprŪfung Ihrer EingaŻ’’’’’’’’^Nach der Eingabe und der ŲberprŪfung der Sektoren erscheint eine Meldung wie z.B.: ’’’’’’’’’’’>+--------------------------------------------------+ ’’’’’’’’’>i i ’’’’’’’’’>i Ich habe keine schlechten Sektoren gefunden i ’’’’’’’’’>i SHard wird auf die Partition geschrieben i ’’’’’’’’’>i Bitte betŁtigen Sie eine Taste! i ’’’’’’’’’>i i ’’’’’’’’’>+---------------------------------------------.ROW 1 TEXT ROW 1 BOOL ’’’’’’’’’’’’’.ROW 2 TEXT ROW 2 BOOL ’’’’’’’’’’’’’ : : ’’’’’.ROW maxint TEXT ROW maxint BOOL ’’’’’’’’NFŪr die elementaren INT-, REAL-, BOOL- und TEXT-Datentypen sind unterŻ’’’’’’’’^schiedliche Operationen definiert. Man mŪūte nun fŪr jeden dieser zusammengesetzŻ’’’’’’’’’’’’’Nten Datentypen z.B. auch 'get'- und 'put'-Prozeduren schreiben, was allein vom^Schreibaufwand sehr aufwendig wŁre. Das ist der Grund dafŪr, daū es keine vorgegeŻ’’’’’’’’’’’’>bene Operationen auf zusammengesetzte Datentypen gibt. ’’’’’’’^Zugegebenermaūen kŚnnte man mit solchen Datentypen, die nur Ūber eine Operation’’’’’’’’’’’’’’’^verfŪgen (Zuweisung), nicht sehr viel anfangen, wenn es nicht eine weitere vorgegeŻ’’’’’’’’’’’^bene Operation gŁbe, die Subskription. Sie erlaubt es, auf die Elemente einer ReihŻ’’’’’’’’’’’>ung zuzugreifen und den Datentyp der Elemente "aufzudecken". ’nRowname #on("i")##on("b")#[#off("i")##off("b")# Indexwert #on("i")##on("b")#]#off("i")##off("b")# ’’’’’’’’’’’’^bezieht sich auf das dritte Element der Reihung 'feld' und hat den Datentyp INT. FŪr’’’’’’’’’’NINT-Objekte haben wir aber einige Operationen, mit denen wir arbeiten kŚnnen. N____________________________________________________________________________ ’N ........................... Beispiele: ........................ ’’’’’’’’’’’’’ feld [3] := 7; ’’’’’’’’’’’’’’ feld [4] := feld [3] + 4; ’’’N____________________________________________________________________________ ’^Eine Subskription "schŁlt" also vom Datentyp ein ROW ab und liefert ein Element der’’’’’’’’’’’NReihung. Die Angabe der Nummer des Elements in der Reihung nennt man Subskript^oder Index (in obigem Beispiel '3'). Der Subskript wird in ELAN in eckigen Klammern’’’’’’’’’’’Nangegeben, um eine bessere Unterscheidung zu den runden Klammern in AusdrŪcken^zu erreichen. Ein subskribiertes ROW-Datenobjekt kann also Ūberall da verwendet’’’’’’’’’’’’’’’^werden, wo ein entsprechender Datentyp benŚtigt wird (Ausnahme: nicht als SchleiŻ’’’’’’’’’’’’’fenvariable). N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. PROC get (ROW 10 INT VAR feld): ’’’’’’’’’’’’’ INT VAR i; ’’’’’’’’’’’’’’’ FOR i FROM 1 UPTO 10 REP ’. put (i); put ("tes Element bitte:"); ’’’ get (feld [i]); ’’’’’’’’ END PROC get; ’’’’’’’’’’’’’’’. PROC put (ROW 10 INT CONST feld): ’’’’’’’’’’’ INT VAR i; ’’’’’’’’’’’’’’’ FOR i FROM 1 UPTO 10 REP ’. put (i); put ("tes Element ist:"); ’’’’’ put (feld [i]); ’’’’’’’’ END PROC put N____________________________________________________________________________ ’>In diesen Beispielen werden Reihungen als Parameter benutzt. ’^Diese beiden Prozeduren werden im folgenden Beispiel benutzt um 10 Werte einzuŻ’’’’’’’’’’’’’’’.lesen und die Summe zu berechnen: ’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ ROW 10 INT VAR werte; ’’’’’’’ lies werte ein; ’’’’’’’’’’’’’ summiere sie; ’’’’’’’’’’’’’’’. drucke die summe und einzelwerte. ’’’’’’’’’’’ lies werte ein: ’’’’’’’’’’’’’ get (werte). ’’’’’’’’’’’’’ summiere sie: ’’’’’’’’’’’’’’’ INT VAR summe :: 0, i; ’’’ FOR i FROM 1 UPTO 10 REP ’ summe INCR werte [i] ’’’. drucke die summe und einzelwerte: ’’’’’’’’’’’ put (werte); ’’’’’’’’’’’’’. put ("Summe:"); put (summe). ’’’’’’’’’’’’’N____________________________________________________________________________ ’^Da es mŚglich ist, von jedem Datentyp eine Reihung zu bilden, kann man natŪrlich’’’’’’’’’’’’’’.auch von einer Reihung eine Reihung bilden: ’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ ROW 5 ROW 10 INT VAR matrix ’N____________________________________________________________________________ ’^FŪr eine "doppelte" Reihung gilt das fŪr "einfache" Reihungen gesagte. Wiederum’’’’’’’’’’’’’’’^existieren keine Operationen fŪr dieses Datenobjekt (auūer der Zuweisung), jedoch ist’’’’’’’’’>es durch Subskription mŚglich, auf die Elemente zuzugreifen: ’>liefert ein Datenobjekt mit dem Datentyp ROW 10 INT. ’’’’’’’’’NSubskribiert man jedoch 'matrix' nochmals, so erhŁlt man ein INT: ’’’’’’’’’’’’matrix [2] [8] ’’’’’’’’’’’’’’’N(jede Subskription "schŁlt" von Auūen ein ROW vom Datentyp ab). ’’’’’’’’’’’’’’2.6.2 Struktur ’’’’’’’’’’’’’’^Strukturen sind Datenverbunde wie Reihungen, aber die Komponenten kŚnnen ungleiŻ’’’’’’’’’’’’’’^chartige Datentypen haben. Die Komponenten von Strukturen heiūen Felder (ReihunŻ’’’’’’’’’’’’’’^gen: Elemente) und der Zugriff auf ein Feld Selektion (Reihungen: Subskription). Eine’’’’’’’’’NStruktur ist - genauso wie bei Reihungen - ein eigener Datentyp, der in einer’.Deklaration angegeben werden muū. ’’’’’’’’’’’’>Die Deklaration einer Struktur sieht folgendermaūen aus: ’’’’’>- SchlŪsselwort #schl ("STRUCT#off("i")##off("b")# ’’’’’’’’’’n- unterschiedliche Datenobjekte in Klammern. Die Datenobjekte werden mit Datentyp und Namen angegeben ’’’’’’’~- Zugriffsrecht ( #on("i")##on("b")#VAR#off("i")##off("b")# oder #on("i")##on("b")#CONST#off("i")##off("b")# ) ’’’’’’’’’’’’’’- Name der Struktur. ’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. STRUCT (TEXT name, INT alter) VAR ich ’’’’’’’N____________________________________________________________________________ ’^Wiederum existieren keine Operationen auf Strukturen auūer der Zuweisung und der’’’’’’’’’’’’’’NSelektion, die es erlaubt, Komponenten aus einer Struktur herauszulŚsen. ’’’’’.Die Selektion hat folgende Form: ’’’’’’’’’’’’’>Objektname #on("i")##on("b")#.#off("i")##off("b")# Feldname ’’^Die erste Selektion liefert einen TEXT-, die zweite ein INT-Datenobjekt. Mit diesen’’’’’’’’’’’N(selektierten) Datenobjekten kann - wie gewohnt - gearbeitet werden (Ausnahme:nicht als Schleifenvariable). >Zum Datentyp einer Struktur gehŚren auch die Feldnamen: ’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> STRUCT (TEXT produkt name, INT artikel nr) VAR erzeugnis ’’’’N____________________________________________________________________________ ’^Die obige Struktur ist ein anderer Datentyp als im ersten Beispiel dieses Abschnitts,’’’’’’’’’^da die Namen der Felder zur Unterscheidung hinzugezogen werden. FŪr Strukturen -’’’’’’’’’’’’’’Ngenauso wie bei Reihungen - kann man sich neue Operationen definieren. ’’’’’’’^Im folgenden Programm werden eine Struktur, die Personen beschreibt, die ProzeduŻ’’’’’’’’’’’’’^ren 'put', 'get' und der dyadische Operator HEIRATET definiert. Anschlieūend werden’’’’’’’’’’’drei Paare verHEIRATET. ’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> PROC get (STRUCT (TEXT name, vorname, INT alter) VAR p): ’’’’. put ("bitte Nachname:"); get ( p.name); ’’> put ("bitte Vorname:"); get ( p.vorname); ’’’’’’’’’’’’’’’. put ("bitte Alter:"); get ( p.alter); ’ END PROC get; ’’’’’’’’’’’’’’’> PROC put (STRUCT (TEXT name, vorname, INT alter) CONST p): ’’. put (p.vorname); put (p.name); ’’’’’’’’’’’ put ("ist"); ’’’’’’’’’’’’’ put (p.alt-----+ ’’’’’’’’’>+--------------------------------------------------+ ’’’’’’’’’>i i ’’’’’’’’’>i Ich habe 2 schlechte Sektoren gefunden i ’’’’’’’’’>i SHard wird auf die Partition geschrieben i ’’’’’’’’’>i Bitte betŁtigen Sie eine Taste! i ’’’’’’’’’>i i ’’’’’’’’’>+--------------------------------------------------+ ’’’’’’’’’NDanach gelangen Sie wieder in das GenerierungsmenŪ. WŁhlen Sie "0" fŪr "SETUP-^EUMEL beenden". Ųber eine Sicherheitsfrage verlassen Sie nun den ersten Teil der’’’’’’’’’’’’’’nInstallation. Warten Sie #on("b")#unbedingt#off("b")#, bis auf dem Bildschirm die Meldung "ENDE" erŻ’’’’’’’’’’Nscheint, bevor Sie die Diskette "SETUP EUMEL" aus dem Laufwerk nehmen. ’’’’’’’.Installieren eines EUMEL-Hintergrundes ’’’’’’’^Im nŁchsten Schritt wird auf ihrer Festplatte das vollstŁndige EUMEL-System instalŻ’’’’’’’’’’’^Bitte betŁtigen Sie den Tastatur-Reset an Ihrem Rechner (oder die Tasten CTRL, ALT’’’’’’’’’’’’.und DEL oder den AUS-/EIN-Schalter). ’’’’’’’’’>Auf dem Bildschirm erscheint die folgende Meldung: ’’’’’’’’’’’N+--------------------------------------------------------------------------+ ’Ni i ’Ni SHard fŪr EUMEL auf IBM PC,AT,XT, V 4.7 i ’Ni Copyright (c) 1985, 86, 87, 88, 89 Martin SchŚnbeck Beratungen GmbH, i ’Ni Spenge i ’Ni Ladevorgang kann durch Tastendruck unterbrochen werden i ’Ni Habe leider keine EUMEL-0-Maschine gefunden i ’Ni Ladevorgang unterbrochen, drŪcken Sie eine Taste um fortzufahren. i ’Ni i ’N+--------------------------------------------------------------------------+ ’^Legen Sie nun die erste Hintergrunddiskette (HG0) in das Laufwerk ein und betŁtigen’’’’’’’’’’’NSie eine Taste. Der Systemkern wird geladen und es erscheinen Angaben zu HG-,’NRAM-, und PufferkapazitŁt sowie zu den angeschlossenen KanŁlen, diesmal jedoch^bezogen auf die Festplatten-Partition. Warten Sie nun, bis die Meldung "HG ungŪltig"’’’’’’’’’’>kommt. DrŪcken Sie anschlieūend eine beliebige Taste. ’’’’’’’’^Falls Sie in ein bereits bestehendes EUMEL-System einen neuen Urlader einspielen’’’’’’’’’’’’’’Nwollen, lesen Sie bitte den Abschnitt "Installation eines neuen Urladers". ’’’.Ein MenŪ bietet Ihnen dann folgende Auswahl: ’.+-----------------------------------------+ ’’.i i ’’.i (1) Systemstart i ’’.i (2) Hintergrund vom Archiv laden i ’’.i (3) Hardwaretest i ’’.i (4) neuen Urlader vom Archiv laden i ’’.i i ’’.+-----------------------------------------+ ’’^WŁhlen Sie MenŪ-Punkt (2) "Hintergrund vom Archiv laden" und bestŁtigen Sie die’’’’’’’’’’’’’’’.Abfrage "Alten HG Ūberschreiben?" mit "j". ’’’NDas Laden des Hintergrundes kann einige Minuten in Anspruch nehmen. Sie werden^mit der Meldung "NŁchstes HG-Archiv eingelegt? (j/n)" zum Einlegen der FolgedisketŻ’’’’’’’’’’’Nte(n) aufgefordert, was Sie anschlieūend mit der Eingabe von "j" quittieren. ’^Es kŚnnen bei beschŁdigten Disketten Lesefehler auftreten; dann gibt das System eine’’’’’’’’’’^der Meldungen 'Harter Lesefehler' bzw. 'Softerror' aus. Bei letzterem kŚnnte der entŻ’’’’’’’’’Nsprechende Sektor nach mehrmaligem Versuch noch gelesen werden. Bei einem’’’’’^harten Lesefehler kŚnnen Sie die Diskette nicht verwenden. Bitte benachrichtigen Sie’’’’’’’’’’>die Firma, von der Sie die Disketten erhalten haben. ’’’’’’’’’^Wenn der Hintergrund eingelesen ist, erscheint die Aufforderung 'fertig, bitte RESET'.’’’’’’’’n#on("b")#Vergessen Sie nicht#off("b")#, vor der BetŁtigung des Tastatur-RESET die Hintergrunddiskette’’’’’’’’’.aus dem Diskettenlaufwerk zu entfernen. ’’’’’’^Wenn Sie wŁhrend des Hochfahrens keine Taste drŪcken, dann startet der Lader durch’’’’’’’’’’’’Nund das EUMEL-System meldet sich mit einer Tabelle von GerŁteanpassungen: ’’’’N+--------------------------------------------------------------------------+ ’Ni i ’Ni psi transparent pc.1.25 pc.2.25 i ’Ni pc.3.25 pc.1.24 pc.2.24 pc.3.24 i ’Ni psi25 tandberg.2244s DEC.VT100.ascii DEC.VT100 i ’Ni DEC.VT220.ascii DEC.VT220.german FT10/20.german FT10/20.ascii i ’Ni ampex210.ascii ampex210.german ampex220.german ampex232 i ’Ni Wyse.WY50.ascii Wyse.WY50.german Wyse.WY60.german i ’Ni Wyse.WY120.german i ’Ni i ’Ni Kanal 1 (j/n) i ’Ni i ’N+--------------------------------------------------------------------------+ ’^Da unterschiedliche Tastaturen auch unterschiedliche Tastenbelegungen haben, ist es’’’’’’’’’’’^notwendig, mit Hilfe der Konfigurationstabelle Ihre Tastatur und Ihren Bildschirm an’’’’’’’’’’ndas EUMEL-System anzupassen. DafŪr bietet Ihnen das System "KanŁle" an. #on("u")#Kanal 1#off("u")#’’’’’’’’’’’’^entspricht dem Haupt-Terminal des Rechners, #on("u")#muū also auf jeden Fall konfiguriert’’’’’Nwerden#off("u")#. Beantworten Sie also die Frage "Kanal 1 (j/n)" mit "j". ’’’’^Das EUMEL-System funktioniert auch, wenn Sie zunŁchst nur Kanal 1 mit der AnpasŻ’’’’’’’’’’’’’’^sung konfigurieren, die Ihrem GerŁtetyp entspricht. Wenn Ihr Rechner eine AT-Tastatur’’’’’’’’’^hat, ist die korrekte Konfiguration "pc.1"; die Konfigurationen "pc.2" und "pc.3" decken’’’’’’Ndie meisten der Rechner ab, deren Tastenbelegung von der Standard-AT Tastatur’^geringfŪgig abweicht. Die Erweiterung ".24" bzw. ".25" gibt die Anzahl der BildschirmŻ’’’’’’’’Nzeilen wieder. StandardmŁūig sind im SHard 24 Zeilen eingestellt. ’’’’’’’’’’’’^Weitere KanŁle zum Anschluū von Druckern oder weiteren Terminals kŚnnen jederzeit’’’’’’’’’’’’’>bei Bedarf vorgenommen werden (EUMEL Systemhandbuch Teil 1). ’^Die Anfrage nach der Konfiguration weiterer KanŁle kann deshalb verneint werden. Die’’’’’’’’’’^Abfrage 'koennen unbenutzte Geraetetypen geloescht werden (j/n)' beantworten Sie’’’’’’’’’’’’’’^einstweilen mit 'n'. Anschlieūend werden noch Datum und Uhrzeit abgefragt. Damit ist’’’’’’’’’’^das Erstinstallationsprogramm abgeschlossen und es erscheint die Meldung 'maintenŻ’’’’’’’’’’’’^ance :'. Geben Sie an dieser Stelle (nacheinander) ein. Sie haben damit’’’’’’’’’’’’’^die Task 'configurator' ordnungsgemŁū verlassen. Erst damit ist sichergestellt, daū die’’’’’’’.eingestellte Konfiguration wirksam wird. ’’’’’.Installation eines neuen Urladers’’’’’’’’’’’’’NWenn Sie den alten Urlader mit einem neuen (z.B. protected mode) ŪberschreibenNwollen, starten Sie das EUMEL-System zunŁchst neu. Sobald die Meldung ’’’’’’’’N #on("b")#Ladevorgang kann durch Tastendruck unterbrochen werden#off("b")# ’^erscheint, drŪcken Sie eine beliebige Taste (z.B. ENTER). Auf dem Bildschirm erŻ’’’’’’’’’’’’’’.scheint nun zusŁtzlich die Meldung ’’’’’’’’’’’^ #on("b")#Ladevorgang unterbrochen, drŪcken Sie eine Taste um fortzufahren#off("b")# ’’’’’’’^Legen Sie nun die Diskette miter); ’’’’’’’’’’’ put ("Jahre alt"); ’’’’’’’ END PROC put; ’’’’’’’’’’’’’’’> (STRUCT (TEXT name, vorname, INT alter) VAR w, ’’’’’’’’’’’> STRUCT (TEXT name, vorname, INT alter) CONST m): ’’’’’’’’ w.name := m.name ’’’’’’’’’ END OP HEIRATET; ’’’’’’’’’’’’N____________________________________________________________________________ ’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> ROW 3 STRUCT (TEXT name, vorname, INT alter) VAR frau, ’’’’’’> mann; ’’’’’’ personendaten einlesen; ’’’’’ heiraten lassen; ’’’’’’’’’’’’ paardaten ausgeben. ’’’’’’’’’ personendaten einlesen: ’’’’’ INT VAR i; ’’’’’’’’’’’’’’’ FOR i FROM 1 UPTO 3 REP ’’ get (frau [i]); ’’’’’’’’ get (mann [i]) ’’’’’’’’’ heiraten lassen: ’’’’’’’’’’’’ FOR i FROM 1 UPTO 3 REP ’’. frau [i] HEIRATET mann [i] ’’’’’’’’’’’’’ paardaten ausgeben: ’’’’’’’’’ FOR i FROM 1 UPTO 3 REP ’’ put (frau [i]); ’’’’’’’’. put ("hat geheiratet:"); line; ’’’’’’’’’ put (mann [i]); line ’’’N____________________________________________________________________________ ’^Reihungen und Strukturen dŪrfen miteinander kombiniert werden, d.h. es darf eine’’’’’’’’’’’’’’^Reihung in einer Struktur erscheinen oder es darf eine Reihung von einer Struktur’’’’’’’’’’’’’^vorgenommen werden. Selektion und Subskription sind in diesen FŁllen in der ReihenŻ’’’’’’’’’’’^folge vorzunehmen, wie die Datentypen aufgebaut wurden (von auūen nach innen). ’’’’’’’’’’’’’’’>2.6.3 LET-Konstrukt fŪr zusammengesetzte Datentypen ’’’’’’’’’NDie Verwendung von Strukturen oder auch Reihungen kann manchmal schreibaufŻ’’’Nwendig sein. Mit dem LET-Konstrukt darf man Datentypen einen Namen geben.’’’’’^Dieser Name steht als AbkŪrzung und verringert so die Schreibarbeit. ZusŁtzlich wird’’’’’’’’’’>durch die Namensgebung die Lesbarkeit des Programms erhŚht. ’’n#on("i")##on("b")#LET#off("i")##off("b")# Name #on("i")##on("b")#=#off("i")##off("b")# Datentyp ’’’’’’’’’’’’’’>Der Name darf nur aus Groūbuchstaben (ohne Blanks) bestehen. ’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> LET PERSON = STRUCT (TEXT name, vorname, INT alter); ’’’’’’’’ PROC get (PERSON VAR p): ’’’’. put ("bitte Nachname:"); get ( p.name); ’’> put ("bitte Vorname:"); get ( p.vorname); ’’’’’’’’’’’’’’’. put ("bitte Alter:"); get ( p.alter); ’ END PROC get; ’’’’’’’’’’’’’’’ PROC put (PERSON CONST p): ’’> put (p.vorname); put (p.name); put ("ist"); ’’’’’’’’’’’’’’. put (p.alter); put ("Jahre alt"); line ’ END PROC put; ’’’’’’’’’’’’’’’. OP HEIRATET (PERSON VAR f, PERSON CONST m): ’ f.name := m.name ’’’’’’’’’ END OP HEIRATET; ’’’’’’’’’’’’ ROW 3 PERSON VAR mann, frau; N____________________________________________________________________________ ’NŲberall, wo der abzukŪrzende Datentyp verwandt wird, kann stattdessen der NameNPERSON benutzt werden. Wohlgemerkt: PERSON ist kein neuer Datentyp, sondern’’’Nnur ein Name, der fŪr STRUCT (....) steht. Der Zugriff auf die Komponenten des^abgekŪrzten Datentyps bleibt erhalten (was bei abstrakten Datentypen, die spŁter’’’’’’’’’’’’’’.erklŁrt werden, nicht mehr der Fall ist). ’’’’NNeben der Funktion der AbkŪrzung von Datentypen kann das LET-Konstrukt auch’’’>zur Namensgebung fŪr Denoter verwandt werden (siehe 2.3.1.2). .2.6.4 Denoter fŪr zusammengesetzte ’’’’’’’’’’. Datentypen (Konstruktor)’’’’’’’’’’’’’’’^Oft ist es notwendig, Datenverbunden Werte zuzuweisen (z.B.: bei der Initialisierung).’’’’’’’’.Dies kann durch normale Zuweisungen erfolgen: N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> LET PERSON = STRUCT (TEXT name, vorname, INT alter); ’’’’’’’’ PERSON VAR mann; ’’’’’’’’’’’’ mann.name := "meier"; ’’’’’’’ mann.vorname := "egon"; ’’’’’ mann.alter := 27 ’’’’’’’’’’’’N____________________________________________________________________________ ’^Eine andere MŚglichkeit fŪr die Wertbesetzung von Datenverbunden ist der KonstrukŻ’’’’’’’’’’’’ŽDatentyp #on("i")##on("b")#:#off("i")##off("b")# #on("i")##on("b")#(#off("i")##off("b")# Wertliste #on("i")##on("b")#)#off("i")##off("b")# ’’’^In der Wertliste wird fŪr jede Komponente des Datentyps, durch Kommata getrennt,’’’’’’’’’’’’’’Nein Wert aufgefŪhrt. Besteht eine der Komponenten wiederum aus einem DatenverŻ^bund, muū innerhalb des Konstruktors wiederum ein Konstruktor eingesetzt werden. ’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> LET PERSON = STRUCT (TEXT name, vorname, INT alter); ’’’’’’’’ PERSON VAR mann, frau; ’’’’’’> frau := PERSON : ( "niemeyer", "einfalt", 65); ’’’’’’’’’’’’’’> frau HEIRATET PERSON : ( "meier", "egon", 27) ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’^Ein Konstruktor ist also ein Mechanismus, um ein Datenobjekt eines Datenverbundes’’’’’’’’’’’’’.in einem Programm zu notieren. ’’’’’’’’’’’’’’’>Konstruktoren sind natŪrlich fŪr Reihungen auch mŚglich: ’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ ROW 7 INT VAR feld; ’’’’’’’’’. feld := ROW 7 INT : ( 1, 2, 3, 4, 5, 6, 7); ’N____________________________________________________________________________ ’2.7 Abstrakte Datentypen ’’’’.2.7.1 Definition neuer Datentypen ’’’’’’’’’’’NIm Gegensatz zur LET-Vereinbarung fŪr Datentypen, bei der lediglich ein neuer’^Name fŪr einen bereits vorhandenen Datentyp eingefŪhrt wird und bei der somit auch’’’’’’’’’’’’Nkeine neuen Operationen definiert werden mŪssen (weil die Operationen fŪr den’NabzukŪrzenden Datentyp verwandt werden kŚnnen), wird durch eine TYPE-VereinŻ’’>barung ein gŁnzlich neuer Datentyp eingefŪhrt. ’’’’’’’’’’’’’’’n#on("i")##on("b")#TYPE#off("i")##off("b")# Name #on("i")##on("b")#=#off("i")##off("b")# Feinstruktur ’’’’’’’’’NDer Name darf nur aus Groūbuchstaben (ohne Blanks) bestehen. Die Feinstruktur’^(konkreter Typ, Realisierung des Datentyps) kann jeder bereits definierte Datentyp’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> TYPE PERSON = STRUCT (TEXT name, vorname, INT alter) ’’’’’’’’N____________________________________________________________________________ ’NDer neudefinierte Datentyp wird abstrakter Datentyp genannt. Im Gegensatz zu’’^Strukturen und Reihungen stehen fŪr solche Datentypen noch nicht einmal die ZuweiŻ’’’’’’’’’’’’^sung zur VerfŪgung. Ein solcher Datentyp kann genau wie alle anderen Datentypen’’’’’’’’’’’’’’’^verwendet werden (Deklarationen, Parameter, wertliefernde Prozeduren, als KompoŻ’’’’’’’’’’’’’’.nenten in Reihungen und Strukturen usw.). ’’’’^Wird der Datentyp Ūber die Schnittstelle des PACKETs anderen Programmteilen zur’’’’’’’’’’’’’’’NVerfŪgung gestellt, so mŪssen Operatoren und/oder Prozeduren fŪr den Datentyp’^ebenfalls "herausgereicht" werden. Da dann der neudefinierte Datentyp genauso wie’’’’’’’’’’’’’^alle anderen Datentypen verwandt werden kann, aber die Komponenten (Feinstruktur)’’’’’’’’’’’’’>nicht zugŁnglich sind, spricht man von abstrakten Datentypen. dem neuen Urlader in das Bootlaufwerk und drŪcken’’’’’’’’’’’’’’^Sie wieder eine beliebige Taste. Danach werden folgende Meldungen auf dem BildŻ’’’’’’’’’’’’’’’schirm ausgegeben: ’’’’’’’’’’’>+-----------------------------------------------------+ ’’’’’’>i i ’’’’’’>i EUMEL wird von Diskette geladen i ’’’’’’>i i ’’’’’’>i i ’’’’’’>i E U M E L - Vortest i ’’’’’’>i i ’’’’’’>i Terminals: 1 .... i ’’’’’’>i RAM-Groesse (gesamt): .... kB i ’’’’’’>i Pufferbereich: .... kB i ’’’’’’>i Hintergrund-Speicher .... kB i ’’’’’’>i i ’’’’’’>i Speichertest: ********** i ’’’’’’>i i ’’’’’’>+-----------------------------------------------------+ ’’’’’’^In der Zeit, in der die Sternchen des Speichertests erscheinen, drŪcken Sie bitte wieder’’’’’’Ndie ENTER-Taste. Nach dem Speichertest erscheint dann folgendes MenŪ: ’’’’’’’’>+-----------------------------------------------------+ ’’’’’’>i i ’’’’’’>i (1) Systemstart i ’’’’’’>i (2) neuen Hintergrund vom Archiv laden i ’’’’’’>i (3) Hardwaretest i ’’’’’’>i (4) neuen Urlader vom Archiv laden i ’’’’’’>i i ’’’’’’>+-----------------------------------------------------+ ’’’’’’^WŁhlen Sie MenŪpunkt 4 und auf dem Bildschirm erscheinen die folgenden Zeilen: ’’’’’’’’’’’’’’’.#box("-0.1","0.0","8.0","1.0")# ’’’’’’’’’’’’’’ fertig, bitte RESET ’’’’’’’Nwobei hinter dem Ž-Zeichen die Ūbertragenen BlŚcke des neuen Urladers gezŁhlt’^Anschlieūend entfernen Sie bitte die Urladerdiskette aus dem Laufwerk und drŪcken’’’’’’’’’’’’’Nden RESET-Schalter Ihres Rechners. Das EUMEL-Betriebssystem wird nun mit dem’’neuen Urlader gestartet. ’’’’’Tastenbelegung:’’’’’’’’’’’’’’’.EUMEL-Zeichen: Taste auf dem IBM-PC/AT ’’’’’’ MARK : +--------+ ’’> i bild i (oder Pfeil nach oben) ’’’’’’’ +--------+ ’’ RUBIN : +--------+ ’’ i EinfŪg i ’’ +--------+ ’’ RUBOUT : +--------+ ’’ i LŚsch i ’’ +--------+ ’’ TAB : +--------+ ’’ i <= => i ’’ +--------+ ’’ HOP : +--------+ ’’ i Pos 1 i ’’ +--------+ ’’. ESC : +------------+ ’’’’’’’’’’’’’’. i Eing LŚsch i ’’’’’’’’’’’’’’. +------------+ ’’’’’’’’’’’’’’> SV : +------------+ +-------+ ’’’’’’’’’’’> i CTRL g i oder i F1 i ’’’’’’’’’’’> +------------+ +-------+ ’’’’’’’’’’’>Bemerkung: Die CTRL-Taste kann auch mit STRG bezeichnet sein. ^Sollte die Tastaturbelegung noch nicht die EUMEL-spezifischen Tasten (HOP, MARK,’’’’’’’’’’’’’’NSV, RUBIN, RUBOUT) an den entsprechenden Orten anbieten, kŚnnen Sie durch’’’’’^Ankoppeln der Task "configurator" und Absetzen des Befehls "configurate" die TastatuŻ’’’’’’’’’^ren (auch fŪr zusŁtzlich angeschlossene Terminals) kanalweise umkonfigurieren. NŁheŻ’’’’’’’’’’>res entnehmen Sie bitte dem Systemhandbuch, S.6ff. ’’’’’’’’’’’Zusatzprogramme’’’’’’’’’’’’’’’^Nachdem das System vollstŁndig installiert ist, kann noch typspezifische Software’’’’’’’’’’’’’^eingespielt werden. Diese befindet sich auf der Diskette 'EUMEL-Archiv "AT" (bzw.’’’’’’’’’’’’’^"XT")'. Der folgende Ablauf skizziert schon das Prinzip jeder Arbeit in einem EUMEL-’’’’’’’’’’^System: Task ankoppeln mit 'continue("taskname")' bzw. 'begin("taskname")', Eingabe’’’’’’’’’’’^von Kommandos wie 'edit', 'run' oder 'generate shutup dialog manager', abschlieūend’’’’’’’’’’’NTask abkoppeln durch . Eine ausfŪhrliche Beschreibung finden Sie in’’den EUMEL-HandbŪchern. ’’’’’’’^Wenn Sie nach Einstellen des Kanals 1 die Task 'configurator' verlassen haben, befinŻ’’’’’’’’’^den Sie Sich auf Supervisor-Ebene. Um die auf der Diskette befindlichen Programme’’’’’’’’’’’’’Nan der richtigen Stelle zu Ūbersetzen, sind folgende Schritte notwendig: ’’’’’NDrŪcken Sie die -Taste (F1). Damit landen Sie im Supervisor-MenŪ, dem’’’’’NSystemverteiler. Mit und Eingabe des Tasknamens 'SYSUR' (auf GroūŻ’’^schreibung achten!) holen Sie die Task 'SYSUR' an das Terminal. Diese Task meldet’’’’’’’’’’’’’^sich mit 'maintenance:'. Da Sie mit einem Mehrbenutzersystem arbeiten, mŪssen Sie’’’’’’’’’’’’’^das Diskettenlaufwerk zunŁchst fŪr sich reservieren: 'archive("AT")'. Erst dann kŚnnen’’’’’’’’^Sie Dateien von der Diskette holen: 'fetch("AT install",archive)' und das InstallationsŻ’’’’’’Nprogramm ausfŪhren: 'run'. Der weitere Ablauf erfordert keine Eingriffe. ’’’’’^Nach Ablauf der Programme sollten Sie schlieūlich eine besondere Task zum AbschalŻ’’’’’’’’’’’’Nten einrichten. Dazu mŪssen Sie nocheinmal die Task 'SYSUR' an den Bildschirm’Nholen und dort das durch die Zusatzsoftware (u.a.) neu hinzugewonnene KommandoN'generate shutup dialog manager' geben. Nach Absetzen des Kommandos kŚnnen Sie.'SYSUR' durch wieder verlassen. ’’’’NUm menŪgesteuert das Betriebssystem abzuschalten oder einen Partitionswechsel’^vorzunehmen, steht Ihnen die Task 'shutup dialog' zur VerfŪgung. Bei AusfŪhrung des’’’’’’’’’’’^Supervisor-Kommandos 'continue("shutup dialog")' wird Ihnen die aktuelle PartitionsŻ’’’’’’’’’’^tabelle angezeigt, so wie Sie diese bereits bei der Generierung kennengelernt haben,’’’’’’’’’’^d.h. mit Angabe von GrŚūe, Start- und Endzylinder der eingerichteten Partitionen. Sie’’’’’’’’’^kŚnnen dann eine beliebige Partition menugesteuert auswŁhlen und starten oder das’’’’’’’’’’’’’^Betriebssystem kontrolliert abschalten (sog. 'shutup'). Dabei wird der aktuelle SystemŻ’’’’’’’.zustand automatisch gesichert. ’’’’’’’’’’’’’’’>Archivformate bei ATs und Kompatiblen mit zwei DiskettenlaufŻ’^StandardmŁūig ist der Archivkanal 31 an das Laufwerk 'A:' gebunden, das eine KapaziŻ’’’’’’’’’’^tŁt von 1,2 Megabyte besitzt. Ist jedoch bei Ihrem GerŁt ein zweites Diskettenlaufwerk,’’’’’’’^z.B. mit einer KapazitŁt von 360 Kilobyte eingebaut, dann kŚnnen Sie auf dieses LaufŻ’’’’’’’’’.werk Ūber den Kanal 30 zugreifen. ’’’’’’’’’’’’^Dazu richten Sie unter 'SYSUR' eine Task ein, die Sie z.B. 'ARCHIVE 360' benennen.’’’’’’’’’’’’^Geben Sie in dieser Task das Kommando 'archive manager (30)'; dann kŚnnen Sie von’’’’’’’’’’’’’^jeder Benutzertask das Archiv mit dem Kommando 'archive ("Archivname",/ "ARCHIVE’’’’’’’’’’’’’’^360")' anmelden. Der Zugriff auf eine Diskette in diesem Laufwerk geschieht z.B. Ūber’’’’’’’’’^'list(/"ARCHIVE 360")' oder 'save ("Dateiname",/"ARCHIVE 360")'. Eine andere MŚglichŻ’’’’’’’’’keit ist ein 3,5" Laufwerk. ’’>Die einzelnen Schritte der Installation im Ųberblick:’’’’’’’’’> 1. Die Diskette 'SETUP-EUMEL' in das Laufwerk stecken. ’’’’’. 2. Rechner einschalten oder Tastatur-RESET ’. 3. EUMEL-Partition einrichten. ’’’’’’’’’’’’’> 4. Generierung beenden und auf 'ENDE'-Meldung warten. ’’’’’’> 5. Diskette 'SETUP-EUMEL AT (XT)' entnehmen. ’’’’’’’’’’’’’’’ 6. Tastatur-RESET. ’’’’’’’’’N 7. Die Meldung 'Leider keine EUMEL-0-MaschinNWelche Operationen sollten fŪr einen abstrakten Datentyp zur VerfŪgung stehen?NObwohl das vom Einzelfall abhŁngt, werden meistens folgende Operationen und’’’Prozeduren definiert: ’’’’’’’’.- 'get'- und 'put'-Prozeduren. ’’’’’’’’’’’’’’>- Zuweisung (auch fŪr die Initialisierung notwendig). ’’’’’’’^- Denotierungs-Prozedur (weil kein Konstruktor fŪr den abstrakten Datentyp auūerŻ’’’’’’’’’’’’> halb des definierenden PACKETs zur VerfŪgung steht) ’’’’’’’2.7.2 Konkretisierung ’’’’’’’^Um neue Operatoren und/oder Prozeduren fŪr einen abstrakten Datentyp zu schreiŻ’’’’’’’’’’’’’’’^ben, ist es mŚglich, auf die Komponenten des Datentyps (also auf die Feinstruktur)’’’’’’’’’’’’^mit Hilfe des Konkretisierers zuzugreifen. Der Konkretisierer arbeitet Łhnlich wie die’’’’’’’’^Subskription oder Selektion: er ermŚglicht eine typmŁūige Umbetrachtung vom abŻ’’’’’’’’’’’’’’’.strakten Typ zum Datentyp der Feinstruktur. ’’Ž#on("i")##on("b")#CONCR#off("i")##off("b")# #on("i")##on("b")#(#off("i")##off("b")# Ausdruck #on("i")##on("b")#)#off("i")##off("b")# ’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ TYPE MONAT = INT; ’’’’’’’’’’’ PROC put (MONAT CONST m): ’’’ put ( CONCR (m)) ’’’’’’’’’ END PROC put; ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’^Der Konkretisierer ist bei Feinstrukturen notwendig, die von elementarem Datentyp’’’’’’’’’’’’’^sind. Besteht dagegen die Feinstruktur aus Reihungen oder Strukturen, dann wird’’’’’’’’’’’’’’’^durch eine Selektion oder Subskription eine implizite Konkretisierung vorgenommen. ’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ TYPE LISTE = ROW 100 INT; ’’’ LISTE VAR personal nummer; ’’ personal nummer [3] := ... ’’ (* das gleiche wie *) ’’’’’’’. CONCR (personal nummer) [3] := ... ’’’’’’’’’’N____________________________________________________________________________ ’2.7.3 Denoter fŪr abstrakte ’. Datentypen (Konstruktor)’’’’’’’’’’’’’’’^Denoter fŪr neudefinierte Datentypen werden mit Hilfe des Konstruktors gebildet: ’’’’’’’’’’’’’ŽDatentyp #on("i")##on("b")#:#off("i")##off("b")# #on("i")##on("b")#(#off("i")##off("b")# Wertliste #on("i")##on("b")#)#off("i")##off("b")# ’’’^In der Wertliste wird fŪr jede Komponente des Datentyps, durch Kommata getrennt,’’’’’’’’’’’’’’Nein Wert aufgefŪhrt. Besteht eine der Komponenten wiederum aus einem DatenverŻ^bund, muū innerhalb des Konstruktors wiederum ein Konstruktor eingesetzt werden. ’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ TYPE GEHALT = INT; ’’’’’’’’’’. GEHALT VAR meins :: GEHALT : (10000); ’’’’’’’N____________________________________________________________________________ ’^Besteht die Feinstruktur aus einem Datenverbund, muū der Konstruktor u.U. mehrfach’’’’’’’’’’’’.geschachtelt angewandt werden: ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ TYPE KOMPLEX = ROW 2 REAL; ’’> KOMPLEX CONST x :: KOMPLEX : ( ROW 2 REAL : ( 1.0, 2.0)); ’’’N____________________________________________________________________________ ’^Auf die Feinstruktur Ūber den Konkretisierer eines neudefinierten Datentyps darf nur in’’’’’’’^dem PACKET zugegriffen werden, in dem der Datentyp definiert wurde. Der KonstrukŻ’’’’’’’’’’’’’Ntor kann ebenfalls nur in dem typdefinierenden PACKET verwandt werden. ’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> PACKET widerstaende DEFINES WIDERSTAND, REIHE, PARALLEL, ’’’’. :=, get, put: ’’’ TYPE WIDERSTAND = INT; ’’’’’’> OP := (WIDERSTAND VAR l, WIDERSTAND CONST r): ’’’’’’’’’’’’’’’ CONCR (l) := CONCR (r) ’’’ PROC get (WIDERSTAND VAR w):  INT VAR i; ’’’’’’’’’’’’’’’ w := WIDERSTAND : (i) ’’’’ END PROC get; ’’’’’’’’’’’’’’’. PROC put (WIDERSTAND CONST w): ’’’’’’’’’’’’’’ put (CONCR (w)) ’’’’’’’’’’ END PROC put; ’’’’’’’’’’’’’’’. WIDERSTAND OP REIHE (WIDERSTAND CONST l, r): . WIDERSTAND : ( CONCR (l) + CONCR (r)) ’’’’ END OP REIHE; ’’’’’’’’’’’’’’’> WIDERSTAND OP PARALLEL (WIDERSTAND CONST l, r): ’’’’’’’’’’’’’ WIDERSTAND : ’’’’’’’’’’’’’’> ((CONCR (l) * CONCR (r)) DIV (CONCR (l) + CONCR (r))) ’’’ END OP PARALLEL ’’’’’’’’’’’’’ END PACKET widerstaende ’’’’’N____________________________________________________________________________ ’NDieses Programm realisiert den Datentyp WIDERSTAND und mit den Operationen’’’’Neine Fachsprache, mit dem man nun leicht WIDERSTANDs-Netzwerke berechnen’’’’’’kann, wie z.B. folgendes: ’’’’. +---R4---+ ’’’’’’’’’. | | ’’’’’’’’’. +---R1---+ +---R5---+ ’’’’’’’’’. | | | | ’’’’’’’’’. ---+ +---R3---+ +--- ’’’’’’. | | | | ’’’’’’’’’. +---R2---+ +---R6---+ ’’’’’’’’’. | | ’’’’’’’’’. +---R7---+ ’’’’’’’’’NZur Berechnung des Gesamtwiderstandes kann nun folgendes Programm geschrieben’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ ROW 7 WIDERSTAND VAR r; ’’’’’ widerstaende einlesen; ’’’’’’ gesamtwiderstand berechnen; ’ ergebnis ausgeben. ’’’’’’’’’’ widerstaende einlesen: ’’’’’’ INT VAR i; ’’’’’’’’’’’’’’’ FOR i FROM 1 UPTO 7 REP ’’> put ("bitte widerstand R"); put (i); put (":"); ’’’’’’’ get (r [i]); ’’’’’’’’’’ gesamtwiderstand berechnen: ’> WIDERSTAND CONST rgesamt :: (r [1] PARALLEL r [2]) REIHE ’> r [3] REIHE (r [4] PARALLEL r [5] PARALLEL r [6] ’’’’’’’ PARALLEL r [7]). ’’’’’’’ ergebnis ausgeben: ’’’’’’’’’’ put (rgesamt). ’’’’’’’’’’’N____________________________________________________________________________ ’Dateien werden benŚtigt, wenn N- Daten Ūber die Abarbeitungszeit eines Programms aufbewahrt werden sollen; ’^- der Zeitpunkt oder Ort der Datenerfassung nicht mit dem Zeitpunkt oder Ort der’’’’’’’’’’’’’. Datenverarbeitung Ūbereinstimmt; ’’’’’’’’’’^- die gesamte Datenmenge nicht auf einmal in den Zentralspeicher eines Rechners’’’’’’’’’’’’’’N- die Anzahl und/oder Art der Daten nicht von vornherein bekannt sind. ’’’’’’^Eine Datei ("file") ist eine Zusammenfassung von Daten, die auf Massenspeichern’’’’’’’’’’’’’’’^aufbewahrt wird. Dateien sind in bestimmten Informationsmengen, den SŁtzen ("reŻ’’’’’’’’’’’’’’cords") organisiert. ’’’’’’’’’.2.8.1 Datentypen FILE und DIRFILE ’’’’’’’’’’’NIn ELAN gibt es zwei Arten von Dateien. Sie werden durch die Datentypen FILE ’und DIRFILE realisiert: ’’’’’’^sequentielle Dateien. Die SŁtze kŚnnen nur sequentiell gelesen bzw. geschrieben’’’’’’’’’’’’’’’Nwerden. Eine Positionierung ist nur zum nŁchsten Satz mŚglich. ’’’’’’’’’’’’’’’^indexsequentielle Dateien. Die Positionierung erfolgt direkt mit Hilfe eines SchlŪssels’’’’’’’N("key") oder Index, kann aber auch sequentiell vorgenommen werden. ’’’’’’’’’’’#on("b")#Wichtig: #off("b")# ’NDIRFILEs sind auf dem EUMEL-System standardmŁūig nicht implementiert! DesweŻ’’e gefunden' abwarten. ’’’’’’’’’’> 8. Hintergrunddiskette ('HG0') einlegen und Taste drŪcken. ’^ 9. Nach der Meldung 'HG-ungŪltig' eine Taste betŁtigen, um in den Startdialog zu’’’’’’’’’’’’ gelangen. ’’’’’’’’’’’’’’’N 10. Menupunkt 2 anwŁhlen: Neuen Hintergrund vom Archiv laden. HintergrunddisŻ^ kette einlegen und 'Alten HG Ūberschreiben?' mit "j" quittieren. Folgedisketten’’’’’’’’’’^ einlegen, sobald entsprechende Meldung ("weiterer ArchivtrŁger eingelegt?")’’’’’’’’’’’’’’. erscheint, und "j" eingeben. ’’’’’’’’’’’’N 11. Hintergrunddiskette entnehmen und anschlieūend Tastatur-RESET ausfŪhren.  12. Kanal 1 konfigurieren. ’’.#ib(9)#1.3. AusfŪhrliche Beschreibung#ie(9)# ’.#ib##ib(9)#System laden#ie##ie(9)# ’’’’’’’’’’’^Wie Sie in der Installationsanleitung lesen konnten, geht man beim Systemstart durch’’’’’’’’’’^Eingabe eines Zeichens wŁhrend des Vortests in das StartmenŪ und wŁhlt dort "HinŻ’’’’’’’’’’’’’^tergrund vom Archiv laden" an. Falls der zu ladende Hintergrund sich Ūber mehrere’’’’’’’’’’’’’NArchiv-Disketten erstreckt, werden die folgenden sukzessive angefordert. ’’’’’.#ib##ib(9)#System sichern#ie##ie(9)# ’’’’’’’’’^Der aktuelle eigene Hintergrund lŁūt sich (mit allen Tasks und allen Dateien) durch das’’’’’’’. #ib#save system#ie# ’’’’’’’’’’’’’’’^auf Archivdisketten sichern. Dabei wird der Systemzustand zunŁchst Ūber einen FixŻ’’’’’’’’’’’’~punkt gesichert. Anschlieūend werden #on("b")##on("i")#formatierte#off("i")##off("b")# Disketten angefordert. Der HinterŻ’’’’’^grund wird komprimiert gesichert, d.h. nur die belegten BlŚcke werden auf das Archiv’’’’’’’’’’^#on("i")#Anmerkung: Diese Prozedur kann nur von privilegierten Tasks (Nachfahren von’’’’’’’’’’> "SYSUR"), wie dem OPERATOR, aufgerufen werden. ’’’’^ Vor dem Aufruf von 'save system' sollten Sie genŪgend Disketten forŻ’’’’’’’’’’’’’’’^ matiert haben (ŲberprŪfen Sie mit 'storage info', wieviele Disketten Sie’’’’’’’’’’’^ benŚtigen, um den gesammten Hintergrund darauf zu schreiben). #off("i")# ’’’’’’’’’’.#ib(9)#System gegen Unbefugte schŪtzen#ie(9)# ^Falls der Benutzerkreis eines Multi-User-Systems nicht "gutartig" ist, sollte man verhinŻ’’’’’^dern, daū jeder Benutzer des Systems Zugang zu #ib#privilegierten Operationen#ie# hat, wie’’’’NLŚschen anderer Tasks, Konfiguration Łndern und System sichern. ’’’’’’’’’’’’’’nDies erreichen Sie dadurch, daū Sie #on("b")#alle#off("b")# privilegierten Tasks, das sind 'SYSUR' und alle’’’^SŚhne, Enkel usw. von 'SYSUR', durch #ib#Paūworte#ie# schŪtzen. Damit wird der Zugang zu’’’’’’Ndiesen Tasks nur mŚglich, wenn man das entsprechende Paūwort eingibt. Man deŻ’Žfiniert solche #on("i")##on("b")##ib#Task-Paūworte#ie##off("i")##off("b")#, indem man die zu schŪtzende Task mit Hilfe des SuperŻ’’’’’’’’’’’’’Nvisor-Kommandos "continue" an ein Terminal holt und dann das Kommando ’’’’’’’’> #ib#task password#ie# ("simsalabim") ’’’’’’’’’’’’’’^gibt. Dabei ist "simsalabim" nur ein Beispiel. Bitte verwenden Sie ein anderes PaūŻ’’’’’’’’’’’^wort! Da die Eigenschaft, privilegiert zu sein, nur davon abhŁngt, im "SYSUR"-Zweig’’’’’’’’’’’^(und nicht im normalen "UR"-Zweig) des Systems zu sein, kŚnnte sich ein gewitzter’’’’’’’’’’’’’^Anwender die Privilegierung einfach erschleichen, indem er eine neue Sohntask von’’’’’’’’’’’’’n"SYSUR" einrichtet. Um auch diese MŚglichkeit zu unterbinden, sollte man in #on("b")#jeder#off("b")#’’’’’’’’’’~Task des SYSUR-Zweiges ebenfalls ein #on("i")##on("b")#"begin"-Paūwort#off("i")##off("b")# definieren. Das geschieht mit’’’’’’> #ib#begin password#ie# ("simsalabim") ’’’’’’’’’’’’’>Bei der Wahl der Paūworte sollte man folgendes bedenken: ’’’’’^ - Ein zu kurzes oder offensichtliches Paūwort (beispielsweise der Name des’’’’’’’’’’’’’’’N Systemverwalters) wird von "Hackern" schnell herausgefunden. ’’’’’’’’’’N - Oft werden Paūworte bekannt, weil irgendwo ein Zettel mit den Paūworten herumliegt. ’’’’’’’’’’’^ - Der Paūwortschutz ist hart. Wenn man sein Paūwort vergessen hat, gibt es’’’’’’’’’’’’’’’> keinen Zugang mehr zu der geschŪtzten Task. ’’’’’’’’’’’.Beschreibung der Paūwortprozeduren: ’’’’’’’’’’#ib#task password#ie# ’’’’’’’’> PROC task password (TEXT CONST password) ’’’’’’’’’’’’’’’N Zweck: Einstellen eines Paūwortes fŪr eine Task im Monitor. ’’’’’’’’’’’’#ib#begin password#ie# ’’’’’’’> PROC begin password (TEXT CONST password) ’’’’’’’’’’’’’’N Zweck: Verhindert das unberechtigte Einrichten einer Sohn-Task. ’’’’’’’’^ Anmerkung: Das 'begin password' vererbt sich auf die spŁter erzeugten Sohn-’’’’’’’’’’’’’ Tasks. ’’’’’’#ib#family password#ie# ’’’’’’> PROC family password (TEXT CONST password) ’’’’’’’’’’’’’^ Zweck: Setzt oder Łndert das Paūwort derjenigen Familienmitglieder, die kein’’’’’’’’’’’’N Paūwort oder das gleiche Paūwort wie die aufrufende Task haben. ’^ Zu einer Familie gehŚren die Task in der man sich befindet und die ihr’’’’’’’’’’’. untergeordneten Tasks. ’’’’’’’’’’N Bsp.: Das Kommando 'family password ("EUMEL")' wird in SYSUR’’’’’N gegeben. Dadurch wird das SYSUR-Paūwort und die Paūworte’’’N der entsprechenden Tasks unter SYSUR auf "EUMEL" gesetzt. ’.#ib##ib(9)#Konfiguration#ie##ie(9)# ’’’’’’’’’’nDie #ib#Konfiguration#ie# lŁuft Ūber die Task "#ib#configurator#ie#" ab. Diese Task mŪssen Sie also fŪr’’’’’’’Ndie hier aufgefŪhrten Operationen durch das Supervisor-Kommando "continue" anŻNkoppeln (Dabei wird das Paūwort ŪberprŪft, falls die Task geschŪtzt wurde). ’’^#on("i")#Anmerkung: Man kann die Task "configurator" lŚschen und dann neu (als Sohn, EnŻ’’’’’’^ kel,... von SYSUR) wieder einrichten. Danach holt man die KonfiguraŻ’’’’’’’’’’’’’’’^ tionsdatei (z.B. von std.devices) und gibt das Kommando "#ib#configuration’’’’’’’’’. manager#ie#".#off("i")# ’’’’’’’’’’’^Der in der EinfŪhrung unter "Wie Sie die Konfiguration einstellen" beschriebene KonfiŻ’’’’’’’’>gurationsdialog lŁūt sich vermittels des Kommandos ’’’’’’’’’’’. #ib#configurate#ie# ’’’’’’’’’’’’’’’^aufrufen. Dabei wird fŪr jeden angewŁhlten Kanal die bis jetzt gŪltige Einstellung als’’’’’’’’^Vorschlag mit ausgegeben. Die Einstellung aller KanŁle, die nicht angesprochen werŻ’’’’’’’’’’’den, bleibt unverŁndert. ’’’’’^Im MenŪ werden die Namen aller Dateien mit #ib#GerŁtetabellen#ie# aufgefŪhrt, die in der’’’’’’^Task enthalten sind. Daraus folgt, daū nur noch die bei der letzten Konfigurierung’’’’’’’’’’’’^benutzten Typen aufgefŪhrt werden, wenn vorher auf die Frage "Koennen unbenutzte’’’’’’’’’’’’’’^Geraetetypen geloescht werden (j/n)?" mit "j" geantwortet wurde. LŚschen Sie also’’’’’’’’’’’’’^nicht alle unbenutzten GerŁtetypen, wenn Sie sie spŁter evtl. nochmal bruachen (siehe’’’’’’’’’.auch "Teil 2, 3. KanŁle und Konfigurierung"). >Im Konfigurationsdialog kann folgendes eingestellt werden: ’’’^ #ib#Typ#ie# Es werden alle vorhandenen GerŁtetabellen durchgegangen, bis’’’’’’’’’’N eine davon ausgewŁhlt wurde. Diese manchmal etwas langwierige’N Arbeit kann man durch Eingabe des Zeichens ESC abkŪrzen:’’’’’’^ Danach kann man den Typnamen direkt eingeben. #on("i")#Das funktioniert’’’’’’’^ aber nur vernŪnftig, wenn das eigene Arbeitsterminal bereits richtig’’’’’’’’’’> konfiguriert worden ist!#off("i")# ’’’’’’’’’’’^ #ib#Baudrate#ie# (nur fŪr V.24-KanŁle von Bedeutung) Es werden alle einstellbaren’’’’’’N Baudraten durc>gen wird auf diesen Dateityp hier nicht weiter eingegangen. ’’.2.8.2 Deklaration und Assoziierung ’’’’’’’’’’NDateien mŪssen in einem ELAN-Programm - wie alle anderen Objekte auch -’’’’’’’deklariert werden. ’’’’’’’’’’’n#on("i")##on("b")#FILE#off("i")##off("b")# #on("i")##on("b")#VAR#off("i")##off("b")# interner Dateibezeichner N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’N____________________________________________________________________________ ’^Dabei ist zu beachten, daū im EUMEL-System alle FILEs als VAR deklariert werden’’’’’’’’’’’’’’’NmŪssen, denn jede Lese/Schreib-Operation verŁndert einen FILE. ’’’’’’’’’’’’’’’NDateien werden normalerweise vom Betriebsystem eines Rechners aufbewahrt und’’^verwaltet. Somit ist eine Verbindung von einem ELAN-Programm, in dem eine Datei’’’’’’’’’’’’’’’Nunter einem Namen - wie jedes andere Datenobjekt auch - angesprochen werden’’’^soll, und dem Betriebssystem notwendig. Dies erfolgt durch die sogenannte AssoziŻ’’’’’’’’’’’’’^ierungsprozedur. Die Assoziierungsprozedur 'sequential file' hat die Aufgabe, eine in’’’’’’’’’Neinem Programm deklarierte FILE VAR mit einer bereits vorhandenen oder noch’’’>einzurichtenden Datei des EUMEL-Systems zu koppeln. ’’’’’’’’’’®#on("i")##on("b")#sequential file#off("i")##off("b")# #on("i")##on("b")#(#off("i")##off("b")# Betriebsrichtung, Dateiname #on("i")##on("b")#)#off("i")##off("b")# ’’’’’’’’’’’’>Es gibt folgende Betriebsrichtungen (TRANSPUTDIRECTIONs): ’’’’^Die Datei kann vom Programm nur gelesen werden. Durch 'input' wird bei der AssoŻ’’’’’’’’’’’’’’^ziierung automatisch auf den ersten Satz der Datei positioniert. Ist die zu lesende’’’’’’’’’’’>Datei nicht vorhanden, wird ein Fehler gemeldet. ’’’’’’’’’’’’’^Die Datei kann vom Programm nur beschrieben werden. Durch 'output' wird bei der’’’’’’’’’’’’’’’^Assoziierung automatisch hinter den letzten Satz der Datei positioniert (bei einer’’’’’’’’’’’’^leeren Datei also auf den ersten Satz). Ist die Datei vor der Assoziierung nicht vorŻ’’’’’’’’’.handen, wird sie automatisch eingerichtet. ’’’>Im EUMEL-System gibt es noch die Betriebsrichtung 'modify'. ’’^Die Datei kann vom Programm in beliebiger Weise gelesen und beschrieben werden.’’’’’’’’’’’’’’’^Im Gegensatz zu den Betriebsrichtungen 'input' und 'output', bei denen ausschlieūlich’’’’’’’’’^ein rein sequentielles Lesen oder Schreiben erlaubt ist, kann bei 'modify' beliebig’’’’’’’’’’’>positioniert, gelŚscht, eingefŪgt und neu geschrieben werden. ^Nach erfolgter Assoziiierung ist auf den zuletzt bearbeiteten Satz positioniert. Die’’’’’’’’’’^Datei wird automatisch eingerichtet, wenn sie vor der Assoziierung nicht vorhanden’’’’’’’’’’’’^Der zweite Parameter der Assoziierungsprozedur gibt an, unter welchem Namen die’’’’’’’’’’’’’’’>Datei in der Task existiert oder eingerichtet werden soll. ’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> FILE VAR meine datei :: sequential file (output, "xyz"); ’’’’N____________________________________________________________________________ ’^Folgendes Beispiel zeigt ein Programm, welches eine Datei liest und auf dem AusgaŻ’’’’’’’’’’’’bemedium ausgibt: ’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> FILE VAR f :: sequential file (input, "datei1"); ’’’’’’’’’’’’ TEXT VAR satz; ’’’’’’’’’’’’’’ WHILE NOT eof (f) REP ’’’’’’’ getline (f, satz); ’’’’’’’ putline (satz); ’’’’’’’’’’N____________________________________________________________________________ ’^Eine genau Ųbersicht der fŪr Dateien existierende Operatoren und Prozeduren finden’’’’’’’’’’’’Sie im Teil 5.3. ’’’’’’’’’’’’’2.9 Abstrakte Datentypen ’’’’ im EUMEL-System’’’’’’’’’’2.9.1 Datentyp TASK ’’’’’’’’’NTasks mŪssen im Rechnersystem eindeutig identifiziert werden; sogar im EUMEL-’^Rechner-Netz sind Tasks eindeutig identifizierbar. Dazu wird der spezielle Datentyp’’’’’’’’’’’^'TASK' benutzt, denn die Identifizierung einer Task Ūber den Namen ist nicht eindeuŻ’’’’’’’’’’Ntig. Der Benutzer kann ja einen Tasknamen Łndern, eine Task lŚschen und eine’’^neue Task mit gleichem Namen einrichten, die jedoch nicht gleich reagiert. Somit’’’’’’’’’’’’’’Nwerden Tasks eindeutig Ūber Variablen vom Datentyp TASK identifiziert. ’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. TASK VAR plotter := task ("PLOTTER 1") ’’’’’’N____________________________________________________________________________ ’^Die Taskvariable 'plotter' bezeichnet jetzt die Task im System, die augenblicklich den’’’’’’’’NNamen "PLOTTERß1" hat. Die Prozedur 'task' liefert den systeminternen TaskbeŻ’^Nun sind Taskvariablen auch unter BerŪcksichtigung der Zeit und nicht nur im aktuelŻ’’’’’’’’’’Nlen Systemzustand eindeutig. Der Programmierer braucht sich also keine Sorgen’^darŪber zu machen, daū seine Taskvariable irgendwann einmal eine "falsche" Task’’’’’’’’’’’’’’’N(nach LŚschen von "PLOTTERß1" neu eingerichtete gleichen oder anderen Namens)’^identifiziert. Wenn die Task "PLOTTERß1" gelŚscht worden ist, bezeichnet 'plotter'’’’’’’’’’’’’keine gŪltige Task mehr. ’’’’’NUnbenannte Tasks haben alle den Pseudonamen "-". Sie kŚnnen nur Ūber TaskvariŻablen angesprochen werden. ’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. PROC generate shutup manager: ’’’’’’’’’’’’’’’ TASK VAR son; ’’’’’’’’’’’’> begin ("shutup", PROC shutup manager, son) ’’’’’’’’’’’’’’’. END PROC generate shutup manager; ’’’’’’’’’’’ PROC shutup manager: ’’’’’’’’ disable stop; ’’’’’’’’’’’’ command dialogue (TRUE); ’ break;  IF yes ("shutup") ’’’’’ THEN clear error; ’’ shutup ’’’’’’’’ END PROC shutup manager ’’’’’N____________________________________________________________________________ ’^Ein Taskvariable wird zum Beispiel als Parameter fŪr die Prozedur 'begin' benŚtigt. ’’’’’’’’’’> #on("b")#PROC begin (TEXT CONST son name, PROC start, ’’’’’. TASK VAR new task)#off("b")# ’’^ Die Prozedur richtet eine Sohntask mit Namen 'son name' (im Beispiel: shutup)’’’’’’’’’’’’’’^ ein, die mit der Prozedur 'start' (im Beispiel: shutup manager) gestartet wird. 'new’’’’’’’^ task' (im Beispiel: son) identifiziert den Sohn, falls die Sohntask korrekt eingerichŻ’’’’’ tet wurde. 2.9.2 Datentyp THESAURUS ’’’NEin Thesaurus ist ein Namensverzeichnis, das bis zu 200 Namen beinhalten kann.^Dabei muū jeder Name mindestens ein Zeichen und hŚchstens 100 Zeichen lang sein.’’’’’’’’’’’’’’NSteuerzeichen (code < 32) werden im Namen folgendermaūen umgesetzt: ’’’’’’’’’’Ž#on("i")##on("b")#steuerzeichen#off("b")##off("i")# wird umgesetzt in #on("i")##on("b")#"""" + code(steuerzeichen) + """"#off("b")##off("i")# NEin Thesaurus ordnet jedem eingetragenen Namen einen Index zwischen 1 und 200’^(einschlieūlich) zu. Diese Indizes bieten dem Anwender die MŚglichkeit, Thesauri zur’’’’’’’’’’^Verwaltung benannter Objekte zu verwenden. (Der Zugriff erfolgt dann Ūber den Index’’’’’’’’’’’^eines Namens in einem Thesaurus). So werden Thesauri u.a. von der Dateiverwaltung’’’’’’’’’’’’’Nbenutzt. Sie bilden die Grundlage der ALL- und SOME-Operatoren. ’’’’’’’’’’’’’’hgegangen, bis eine davon ausgewŁhlt wurde. Das’^ sind die Werte 50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400,’’’’’’’’’’’> 3600, 4800, 7200, 9600, 19200, 38400 Baud. ’’’^ #ib#Bits#ie# (nur fŪr V.24-KanŁle von Bedeutung) Es werden die einstellbaren’’’’’’’N ZeichengrŚūen durchgegangen, d.h. 7 oder 8 Bit pro Zeichen. ’’^ #ib#ParitŁt#ie# (nur fŪr V.24-KanŁle von Bedeutung) MŚglich sind die EinstellunŻ’’’’’’. gen 'no', 'even' und 'odd'. ’’^ #ib#Stopbits#ie# (nur fŪr V.24-KanŁle von Bedeutung) Stopbits geben die Pause’’’’’’’’’’N zwischen zwei aufeinanderfolgenden Zeichen an. MŚglich sind 1’. oder 2 Stopbits. ’’’’’’’’’’’’’^ #ib#Protokoll#ie# Terminals u.Ł. werden Ūblicherweise ohne Protokoll angeschlossen.’’’’’N Bei langsamen GerŁten wie Druckern bzw. Plottern oder aber beiN Rechnerkopplungen bzw. Netzen kann der EmpfŁnger nicht immer’’^ so schnell Zeichen annehmen wie sie von der Gegenstation gesenŻ’’’’’’’’’’’’’’’^ det werden. In diesem Fall kann man das #ib#XON/XOFF-#ie# oder das’’’’’’’’’’’’> #ib#RTS/CTS-Protokoll#ie# einstellen. ’’’’’’’’^ #on("b")#BEACHTE: Sender und EmpfŁnger mŪssen auf das gleiche ProtoŻ’’’’’’’’’> koll eingestellt sein.#off("b")# ’’’N Manchmal mŪssen auch Terminals mit Protokoll angeschlossen’’’’N werden. Ųblicherweise wŁhlt man dann aber ein rein ausgabeŻ’’’^ seitiges Protokoll, damit SV den EUMEL auf jeden Fall erreicht. ’’’’’’’’’’’’’’. Es gibt folgende Protokolle: ’. #ib#XON/XOFF-Protokoll#ie#: ’’N Rechner und GerŁt steuern die Sendungen jeweils Ūber’. XON/XOFF-Zeichen. ’’’. #ib#RTS/CTS-Protokoll#ie#: ’’’N Rechner und GerŁt steuern ihre Sendungen jeweils Ūber. RTS/CTS- Leitungen. ’> #ib#XON/XOFF-ausgabeseitig#ie#: ’’’’’’’’’’’’’’N Das angeschlossene GerŁt steuert die Ausgabe Ūber’’’’N XON/XOFF.Eingaben zum Rechner unterliegen keinem’’’’’. Protokoll. ’’’’’’’’’’> #ib#RTS/CTS-ausgabeseitig#ie#: ’’’’’’’’’’’’’’’N Das angeschlossene GerŁt steuert die Ausgabe Ūber’’’’N RTS/CTS. Eingaben zum Rechner unterliegen keinem’’’’’. Protokoll. ’’’’’’’’’’> #ib#XON/XOFF-eingabeseitig#ie#: ’’’’’’’’’’’’’’N Der EUMEL-Rechner steuert die angeschlossenen’’’’’’’’N GerŁte durch XON/XOFF. Die Ausgaben zum GerŁt’’’’’’’’> unterliegen keinem Protokoll. ’’’’’’’> #ib#RTS/CTS-eingabeseitig#ie#: ’’’’’’’’’’’’’’’N Der EUMEL-Rechner steuert die angeschlossenen’’’’’’’’N GerŁte durch RTS/CTS. Die Ausgaben zum GerŁt unterŻ’’> liegen keinem Protokoll. ’’’’’’’’’’’’^ #ib#Puffer#ie# Terminals und alle AusgabegerŁte (Drucker u.Ł.) haben standardŻ’’’’’’’N mŁūig die normalen "kleinen" Eingabepuffer im System zugeordŻ’N net. Bei Rechner-Rechner-Kopplungen, DFŲ oder Netzen kann ein’^ "groūer" #ib#Eingabepuffer#ie# von 512 Byte notwendig werden. DementŻ’’’’’’’’’^ sprechend sind #ib#Groūpuffer#ie# nur beim Schnittstellentyp 'transparent'’’’’ mŚglich. ’’’’’^Im #ib#Konfigurationsdialog#ie# werden bei jedem Kanal nur die dort vorhandenen MŚglichŻ’’’’’’^keiten angeboten. Dabei wird die vorherige Einstellung immer als erste angeboten. So’’’’’’’’’’>kann man sich verhŁltnismŁūig einfach "durchtasten". ’’’’’’’’’^Die Fragen des #ib#Konfigurationsdialog#ie#s werden nach folgendem Schema gestellt: ’’’’’’’’’’#linefeed(1.18)# ’’’’’’’’’’’’’ erfrage ("Kanal") ;  erfrage ("Typ") ; ’’. IF dieses ist ein v24 kanal ’’’’’’’’. THEN IF baudrate einstellbar ’’’’’. THEN erfrage ("Baudrate") ’ FI ; ’’’’’’’’> IF zeichengroesse einstellbar ’’’’’’’’’’’’’’’. THEN erfrage ("Bits") ’’’’’ FI ; ’’’’’’’’. IF paritŁt einstellbar ’’’’’’. THEN erfrage ("ParitŁt") ’’ FI ; ’’’’’’’’. IF stopbits einstellbar ’’’’’. THEN erfrage ("Stopbits") ’ FI ; ’’’’’’’’ FI ; ’’’’’’’’’’’’’’’. erfrage ("Protokoll") ; ’’’’’’’’’’’’’. IF typ ist tranparent ’’’’’’’’’’’’’’’. THEN erfrage ("Puffer") ’’’’’’’’’’’#linefeed(1.0)# ’’’’’’’’’’’’’’^Will man seine eingestellte #ib#Konfiguration sichern#ie#, reicht es, alle Dateien der Task’’’^"#ib#configurator#ie#" auf ein Archiv zu schreiben. Diese Konfiguration kann man dann bei’’’’’^einem neuen Hintergrund einfach vom Archiv laden. Um die Konfigurierung dann auch’’’’’’’’’’’’’.auszufŪhren, gibt man das Kommando "setup". ’’>#ib##ib(9)#Druckersoftware einrichten#ie##ie(9)# ’’’’’’’’’’’’’^Das Standardarchive "std.printer" enthŁlt einige Druckeranpassungen fŪr die AnsteuŻ’’’’’’’’’’’^erung diverser Druckertypen. Soll einer dieser Druckertypen an das EUMEL-System’’’’’’’’’’’’’’’^angeschlossen werden, so muū zuerst eine Task "#ib#PRINTER#ie#" (als Sohntask von’’’’’’’’’’’’’>"SYSUR" mit dem Supervisorkommando) vorhanden sein bzw. durch . begin ("PRINTER", "SYSUR") ’’’’’’’’’’’^eingerichtet werden. In dieser Task mŪssen dann die folgenden Schritte vollzogen’’’’’’’’’’’’’’- Anmelden des Archivs: ’’’’’. archive ("std.printer") ’’’’’’’’’’’’’’.- Holen der Druckeranpassung vom Archiv: ’’’’> fetch ("druckertyp.inserter", archive) ’’’’’’’’’’’’’’’.- Insertieren der Druckeranpassung: ’’’’’’’’’. insert ("druckertyp.inserter") ’’’’’’’. archive ("std.printer") ’’’’’’’’’’’’’’. fetch ("laser.inserter", archive); ’’’ check off; ’’’’’’’’’’’. insert ("laser.inserter") ’’’’’’’’’’’’^Nach Beendigung der Kompilierung finden Sie sich in einem MenŪ wieder, daū Ihnen’’’’’’’’’’’’’’^die Auswahl Ihres Drucker-Herstellers durch die Eingabe der vor dem Firmennamen’’’’’’’’’’’’’’’^stehenden Zahl erlaubt. Diese Eingabe schicken Sie mit RETURN ab. Da Hersteller’’’’’’’’’’’’’’’^mitunter verschiedene Modelle mit verschiedenen Funktionen anbieten, ist es nŚtig,’’’’’’’’’’’’^daū Sie Ihr Modell auswŁhlen. Auch diese Eingabe wird durch RETURN abgeschickt.’’’’’’’’’’’’’’’NNachdem Sie die Nummer des gewŪnschten Druckers eingegeben haben, erfolgt nochNeinmal eine Sicherheitsabfrage, ob dieser Drucker installiert werden soll. ’’’NNeben den speziell zu dem gewŁhlten Drucker passenden Fragen (z.B. NLQ-Modus’’^standardmŁūig) ist es erforderlich, den Kanal einzugeben, an dem der Drucker angeŻ’’’’’’’’’’’’Nschlossen ist (z.B. Kanal 15 fŪr eine parallele Schnittstelle). ’’’’’’’’’’’’’’^Wenn die Generierung beendet ist, muū in allen bestehenden Tasks - insbesondere in’’’’’’’’’’’’^der Task 'PUBLIC' - die Fonttabelle mit dem fonttable-Kommando eingestellt werden.’’’’’’’’’’’’Mit dem Kommando ’’’’’’’’’’’’’ print ("dateiname") ’’.wird dann eine Datei ausgedruckt. ’’’’’’’’’’’’^Befindet sich keine passende Druckeranpassung fŪr den anzuschlieūenden DruckerŻ’’’’’’’’’’’’’’’^typ auf dem Standardarchiv "std.printer", so sollte die Druckeranpassung "printer.std"’’’’’’’’^benutzt werdenN____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ initialisiere; ’’’’’’’’’’’’’’ arbeite thesaurus ab. ’’’’’’’ initialisiere: ’’’’’’’’’’’’’’> THESAURUS VAR eine auswahl :: SOME (myself); ’’’’’’’’’’’’’. TEXT VAR thesaurus element; ’’’’’’’’’’’’’’ INT VAR index :: 0. ’’’’’’ arbeite thesaurus ab: ’’’’’’’> get (eine auswahl, thesaurus element, index); ’’’’’’’’’. IF thesaurus element = "" ’’’’’’’’’’’’’. THEN LEAVE arbeite thesaurus ab ’’’’ fuehre aktionen durch ’ fuehre aktionen durch: ’’’. edit (thesaurus element); ’’’’’’’’’’’’’. lineform (thesaurus element); ’’’’’’’’’. pageform (thesaurus element); ’’’’’’’’’. print (thesaurus element). ’’’’’’’’’’’’N____________________________________________________________________________ ’^Dieses Beispiel fŪhrt fŪr eine Auswahl der in der Task befindlichen Dateien nacheinŻ’’’’’’’’’’Nander die Kommandos 'edit', 'lineform', 'pageform' und 'print' aus. ’’’’’’’’’’>Die benutzten Operatoren und Prozeduren leisten folgendes: ’’’> #on("b")#THESAURUS OP SOME (TASK CONST task) #off("b")# ’’’N Der Operator bietet das Verzeichnis der in der angegeben Task befindlichen’N Dateien zum Editieren an. Namen, die nicht gewŪnscht sind, mŪssen aus dem’’. Verzeichnis gelŚscht werden. ’’’’’’’’’’’’’’N #on("b")#PROC get (THESAURUS CONST t, TEXT VAR name, INT VAR index) ’’’’’’’^ #off("b")# Die Prozedur liefert den nŁchsten Eintrag aus dem angegebenen Thesaurus 't'.’’’’^ 'NŁchster' heiūt hier, der kleinste vorhandene mit einem Index grŚūer als 'index'.’’’’’’’’’^ Dabei wird in 'name'der Name und in 'index'der Index des Eintrags geliefert. ’’’’’’’’’’’’’’2.9.3 DatenrŁume ’’’’’’’’’’’’NDatenrŁume sind die Grundlage von Dateien im EUMEL-System. Einen Datenraum’’’’^kann man sich als eine Sammlung von Daten vorstellen (u.U. leer). Man kann einem’’’’’’’’’’’’’’NDatenraum durch ein Programm einen Datentyp "aufprŁgen". Nach einem solchen’’’N"AufprŁge"-Vorgang kann der Datenraum wie ein "normaler" Datentyp behandelt’’’^Standarddateien (FILEs) sind eine besondere Form von DatenrŁumen. Sie kŚnnen nur’’’’’’’’’’’’’’^Texte aufnehmen, da sie ja hauptsŁchlich fŪr die Kommunikation mit dem Menschen’’’’’’’’’’’’’’’^(vorwiegend mit Hilfe des Editors bzw. Ein-/ Ausgabe) gedacht sind. Will man Zahlen’’’’’’’’’’’^in einen FILE ausgeben, so mŪssen diese zuvor in Texte umgewandelt werden. HierŻ’’’’’’’’’’’’’’NfŪr stehen Standardprozeduren zur VerfŪgung (z.B. 'put (f, 17)'). ’’’’’’’’’’’’NWill man aber Dateien zur Kommunikation zwischen Programmen verwenden, die’’’’Ngroūe Zahlenmengen austauschen, verursachen die Umwandlungen von Zahlen in’’’’NTEXTe und umgekehrt unnŚtigen Rechenaufwand. Zu diesem Zweck werden im’’’’’’’’NEUMEL-System DatenrŁume eingesetzt, die es gestatten, beliebige Strukturen’’’’^(Typen) in Dateien zu speichern. Solche DatenrŁume kann man weder mit dem Editor’’’’’’’’’’’’’’^noch mit dem Standarddruckprogramm (print) bearbeiten, da diese ja den Typ des in’’’’’’’’’’’’’>dem Datenraum gespeicherten Objektes nicht kennen. ’’’’’’’’’’’2.9.3.1 Datentyp DATASPACE ’’NDatenrŁume kŚnnen als eigener Datentyp (DATASPACE) in einem Programm behanŻ’’’^delt werden. Somit kŚnnen DatenrŁume (als Ganzes) ohne Kenntnis eines eventuell’’’’’’’’’’’’’’’>(vorher oder spŁter) aufgeprŁgten Typs benutzt werden. ’’’’’’’NAls Operationen auf DATASPACE-Objekte sind nur Transporte, LŚschen und ZuweiŻ’sung zugelassen. ’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ DATASPACE VAR ds ’’’’’’’’’’’’N____________________________________________________________________________ ’^FŪr DatenrŁume ist die Zuweisung definiert. Der Zuweisungsoperator (':=') bewirkt’’’’’’’’’’’’’Neine Kopie des Datenraums vom rechten auf den linken Operanden. ’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. DATASPACE VAR datenraum :: nilspace; ’’’’’’’’N____________________________________________________________________________ ’^Die Prozedur 'nilspace' liefert einen leeren Datenraum. Der Datenraum 'datenraum' ist’’’’’’’’’.also eine Kopie des leeren Datenraums. ’’’’’’’^Die Prozeduren und Operatoren fŪr DatenrŁume werden im Teil 5.4.7 beschrieben. ’’’’’’’’’’’’’’’2.9.3.2 BOUND-Objekte ’’’’’’’NWie bereits erwŁhnt, kann man einem Datenraum einen Datentyp aufprŁgen. Dazu’’~werden #ib#BOUND#ie#-Objekte benutzt. Mit dem SchlŪsselwort #on("i")##on("b")#BOUND#off("i")##off("b")#, welches in der’’’’’’’^Deklaration vor den Datentyp gestellt wird, teilt man dem ELAN-Compiler mit, daū’’’’’’’’’’’’’’Ndie Werte eines Datentyps in einem Datenraum gespeichert sind bzw. gespeichertwerden sollen. ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. BOUND ROW 1000 REAL VAR liste ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’~Die Ankopplung des BOUND-Objekts an eine Datei erfolgt mit dem Operator #on("i")##on("b")#:=#off("i")##off("b")#. ’’’’’’’’’’’’NBOUND-Objekt #on("i")##on("b")#:=#off("i")##off("b")# Datenraum ’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> BOUND ROW 1000 REAL VAR gehaltsliste := new ("GehŁlter") ’’’’N____________________________________________________________________________ ’^Die Prozedur 'new' kreiert dabei einen leeren Datenraum (hier mit dem Namen 'GeŻ’’’’’’’’’’’’’’^hŁlter'), der mit Hilfe der Zuweisung (hier: Initialisierung) an die Variable 'gehaltsliste'’’gekoppelt wird. ’’’’’’’’’’’’’’^Nun kann man mit der 'gehaltsliste' arbeiten wie mit allen anderen Feldern auch. Die’’’’’’’’’’^Daten, die in 'gehaltsliste' gespeichert, werden eigentlich im Datenraum 'GehŁlter'’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> gehaltsliste [5] := 10 000.0; (* Traumgehalt *) ’’’> gehaltsliste [index] INCR 200.0; (* usw. *) ’’’N____________________________________________________________________________ ’NMan kann auch Prozeduren schreiben, die auf der Gehaltsliste arbeiten. ’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. PROC sort (ROW 1000 REAL VAR liste): ’’’’’’’’ END PROC sort; ’’’’’’’’’’’’’’ sort (CONCR (gehaltsliste)); N____________________________________________________________________________ ’^Man beachte, daū der formale Parameter der Prozedur 'sort' nicht mit BOUND speziŻ’’’’’’’’’’’’’^fiziert werden darf (BOUND wird nur bei der Deklaration des Objekts angegeben). Das’’’’’’’’’’’Nist Ūbrigens ein weiterer wichtiger Vorteil von BOUND-Objekten: man kann alle’NProzeduren des EUMEL-Systems auch fŪr BOUND-Objekte verwenden, nur die’’’’’’’’.Datentypen mŪssen natŪrlich Ūbereinstimmen. ’’>HŁufige Fehler bei der Benutzung von DatenrŁumen ’’’’’’’’’’’’’N- Wenn man an ein DATASPACE-Objekt zuweist (z.B.: DATASPACE VAR ds :=’’’’’’’’N new ("mein datenraum")), so erhŁlt man, wie bereits erwŁhnt, eine Kopie desN Datenraums . Diese Druckeranpassung ist eine universelle Druckeranpassung fŪr’’’’’’’’’’’’’’^alle Drucker, die mit ASCII-Code 13 ein 'Carriage Return' (d.h. Bewegung des DruckŻ’’’’’’’’’’’^kopfes an den linken Rand) und mit ASCII-Code 10 eine Zeilenschaltung von 1/6 Zoll’’’’’’’’’’’’^vornehmen. Mit ihr kann dann in einem Schrifttyp (entweder 10 oder 12 Zeichen pro’’’’’’’’’’’’’^Zoll, je nachdem welche Fonttabelle eingestellt ist) gedruckt werden. So erhŁlt man’’’’’’’’’’’^wenigstens eine Minimalansteuerung des Druckers. FŪr eine bessere Ansteuerung des’’’’’’’’’’’’’NDrucker muū ein Programm geschrieben werden, das das Druckertreiber-Interface’^erfŪllt (siehe Teil 6 "Der EUMEL-Drucker") und eine Fonttabelle erstellt (siehe Teil 7 "Der’’’Fontspeicher") werden. ’’’’’’’%#center#EUMEL-Systemhandbuch >#center#2. Hardware und ihre Steuerung#right#% ’’’’’’’’’’’’’’’.#ib(9)#2. Hardware und ihre Steuerung#ie(9)# ’#ib(9)#2.1. Vorwort#ie(9)# ’’’^Die #ib#Hardware#ie# eines jeden EUMEL-Systems lŁūt sich in #ib#Rechnerkern#ie# und Peripheriea) Der #ib#Rechnerkern#ie# ’’’NIn der Regel wird der Rechnerkern aus folgenden Komponenten bestehen: ’’’’’’’’ - #ib#CPU#ie# ’’’’’’’’’’’> - #ib#Vordergrundspeicher#ie# (oft als RAM bezeichnet) ’’N - #ib#Hintergrundspeicher#ie# (Floppy, Harddisk, oder auch RAM/ROM) ’’’’’NAlle Daten, Dateien und Programme werden auf dem Hintergrundspeicher abgelegt.^Der benŚtigte Platz wird dabei dynamisch nach Bedarf zugewiesen. Jeder Zugriff auf’’’’’’’’’’’’^Daten, die sich auf dem Hintergrundspeicher befinden, muū Ūber den VordergrundŻ’’’’’’’’’’’’’’’Nspeicher erfolgen. Zu diesem Zweck verlagert das EUMEL-System automatisch alle^aktuell benŚtigten Daten in den Vordergrundspeicher. Das erfolgt nach dem Prinzip’’’’’’’’’’’’’^des #ib#Demand-Paging#ie# (s. Benutzerhandbuch Kap. 1). Die CPU fŪhrt die aktiven ProŻ’’’’’’’’^gramme (unter Benutzung des Speichers) aus. Dabei bearbeitet sie reihum alle reŻ’’’’’’’’’’’’’’chenwilligen Prozesse. ’’’’’’’NDie drei Komponenten des Rechnerkerns werden vollstŁndig vom EUMEL-BetriebsŻ’’^system verwaltet und miteinander verknŪpft, so daū der Anwender sich in der Regel’’’’’’’’’’’’’Ndarum weder kŪmmern muū noch kann. Ausgenommen davon sind allerdings die’’’’’’NDiagnose von Hardwarefehlern und Ųberlegungen zur Systemleistung. ’’’’’’’’’’’’b) Die #ib#Peripherie#ie# ’’’’NAlle anderen GerŁte oder GerŁtekomponenten gehŚren aus der Sicht des EUMEL-’’’^Systems zur Peripherie. Wesentliches Kennzeichen ist, daū sie Ūber KanŁle mit dem’’’’’’’’’’’’’NRechnerkern verbunden sind und von dort aus durch System- und AnwenderŻ’’’’’’’Nprogramm gesteuert werden kŚnnen. Angeschlossen werden kŚnnen u.a. ’’’’’’’’’’’ - #ib#Terminal#ie#s ’’’’’. - #ib#Drucker#ie# und #ib#Plotter#ie# ’’’> - andere #ib#Rechner#ie# bzw. #ib#Rechnernetze#ie# ’’’’’’> - #ib#ArchivgerŁt#ie#e (z.B. Floppy-Laufwerke) ’’’’’’’’’’nIn der Regel hat jedes EUMEL-System mindestens ein #ib#Terminal#ie# und #ib#Archivlaufwerk#ie#.’’’’’’’’’’’’’’’NAuch wenn dieses "Terminal 1" und das Floppy-Laufwerk baulich in den Rechner’’^integiert sind, gehŚren sie logisch zur Peripherie. Die entsprechenden KanŁle sind’’’’’’’’’’’’^dann allerdings Teil des Rechners und brauchen den Anwender nicht zu interessieŻ’’’’’’’’’’’’’’>ren. Die beiden wesentlichen anderen Kanaltypen sind: ’’’’’’’’> - #ib#serielle Schnittstelle#ie#n (#ib#V.24#ie#) ’’’’’’’’. - #ib#Parallelschnittstellen#ie# ’’’’’’’’NBeide fŪhren "echt" aus dem Rechner heraus und sind u.U. hardwaremŁūig fŪr denNAnwender von Bedeutung. Normalerweise sollte zwar der Lieferant der EUMEL-’’’’NHardware fŪr die Verkabelung und den Anschluū peripherer GerŁte sorgen, aber’’^Kenntnisse kŚnnen in Fehlersituationen (z.B. Kabelbruch), bei Umkonfigurierungen’’’’’’’’’’’’’’>und bei Kombinationen verschiedener GerŁte helfen. ’’’’’’’’’’’.#ib(9)#2.2. #ib#Hardware-Test#ie##ie(9)# ’’’’’NDer EUMEL-Hardware-Test ist ein rechnerunabhŁngiger Test und kann demzufolge’’^nicht so viel ŪberprŪfen wie Testprogramme, die genau auf eine entsprechende HardŻ’’’’’’’’’’’’^ware zugeschnitten sind. Trotzdem sollten die meisten Hardware-Fehler schon mit’’’’’’’’’’’’’’’>dem EUMEL-#ib#Hardware-Test#ie# gefunden werden. ’’’’’’’’’’’’’^Bei jedem Systemstart wird der "#ib#Vortest#ie#" durchgefŪhrt. Nachdem er Terminals, SpeiŻ’’’’^cher und Hintergrund angezeigt hat, testet er einmal den Hauptspeicher. Danach wird’’’’’’’’’’’.das eigentliche EUMEL-System gestartet. ’’’’’’NDurch Eingabe eines beliebigen Zeichens wŁhrend des Vortests (Speichertest:’’’^*********) kommt man in den ausfŪhrlichen #ib#Start-Dialog#ie#. Dort wird u.a. auch die’’’’’’’^MŚglichkeit "Hardware-Test" angeboten. WŁhlt man diese an, werden die verfŪgbaren’’’’’’’’’’’’’^Tests als MenŪ aufgelistet. Bei jedem EUMEL-System stehen folgende TestmŚglichkeiŻ’’’’’’’’’’’’ten zur VerfŪgung: ’’’’’’’’’’’ (1) #ib#Speichertest#ie# ’’’ (2) #ib#Kanaltest#ie# ’’’’’’ (3) #ib#Hintergrundtest#ie#  (4) #ib#Archivtest#ie# ’’’’’^Alle Tests sind dabei Dauertests, d.h. sie beginnen nach jedem Durchlauf von neuŻ’’’’’’’’’’’’’>em, kŚnnen aber durch abgebrochen werden. ’’’’’’’’’’’’’’.#ib##ib(9)#Speichertest#ie##ie(9)# ’’’’’’’’’’’^Der #ib#Speichertest#ie# soll den Vordergrundspeicher (#ib#RAM#ie#) des Rechners untersuchen.’^Gerade #ib#Speicherfehler#ie# tendieren aber dazu, nur sporadisch aufzutreten oder wŁrŻ’’’’’’’^meabhŁngig zu sein. Deshalb sollte der Test bei Verdacht auf Speicherfehler lŁngere’’’’’’’’’’’^Zeit (einige Stunden) laufen. Leider kŚnnen auch dann nicht alle Fehler aufgedeckt’’’’’’’’’’’’^werden, z.B. nicht solche, die nur in ganz speziellen Situationen entstehen, wie SpeiŻ’’’’’’’’^cherzugriff mit gleichzeitig anlaufendem Floppymotor und Zeichenausgabe. Generell’’’’’’’’’’’’’^gilt hier (wie fŪr jeden Test), daū das Nichtvorhandensein von Fehlern nie Vollkommen’’’’’’’’’.sicher nachgewiesen werden kann. ’’’’’’’’’’’’’NDer Speichertest teilt den Speicher in drei verschiedene Bereiche auf: ’’’’’’’. 0 : adresse MOD 3 = 0 ’’’’’’. 1 : adresse MOD 3 = 1 ’’’’’’. 2 : adresse MOD 3 = 2 ’’’’’’>Der freie Speicher wird nach folgendem Algorithmus geprŪft: ’’> schreibe (1, OLOLOLOL) ; out ("*") ; ’’’’’’’’’’> schreibe (2, OLOLOLOL) ; out ("*") ; ’’’’’’’’’’> schreibe (0, LOLOLOLO) ; out ("*") ; ’’’’’’’’’’> pruefe (1, OLOLOLOL) ; out ("*") ; ’’’’’’’’’’> schreibe (1, LOLOLOLO) ; out ("*") ; ’’’’’’’’’’> pruefe (2, OLOLOLOL) ; out ("*") ; ’’’’’’’’’’> pruefe (0, LOLOLOLO) ; out ("*") ; ’’’’’’’’’’> pruefe (1, LOLOLOLO) ; out ("*") ; ’’’’’’’’’’> schreibe (0, OLOLOLOL) ; out ("*") ; ’’’’’’’’’’> pruefe (0, OLOLOLOL) ; out ("*") ; ’’’’’’’’’’> schreibe (2, LOLOLOLO) ; out ("*") ; ’’’’’’’’’’> pruefe (2, LOLOLOLO) ; out ("*") . ’’’’’’’’’’NDabei werden durch 'PROC schreibe (INT CONST bereich, BYTE CONST muster)' alleNBytes des entsprechenden Bereichs mit dem angegebenen Muster geladen. 'PROC’’’^pruefe (INT CONST bereich, BYTE CONST soll)' ŪberprŪft entsprechend alle Bytes des’’’’’’’’’’’’>Bereichs darauf, ob sie das Sollmuster enthalten. ’’’’’’’’’’’’NFindet der Speichertest Fehler, kŚnnen u.a. folgende Ursachen vorliegen: ’’’’’. - Ein Speicherchip ist defekt. ’’’’’’’’’’N - Die Versorgungsspannung fŪr den Speicher (meistens +5V) ist zu niedrig,^ d.h. das Netzteil ist nicht richtig eingestellt bzw. defekt. (Das kann insbesonŻ’’’’’’’N dere dann entstehen, wenn ein Rechner sin 'ds'. Koppelt man jetzt 'ds' an ein BOUND-Objekt an und fŪhrt^ Önderungen durch, so wirken diese nur auf die Kopie und nicht auf die Quelle.’’’’’’’’’’’’’’^ FŪr Önderungen in der Quelle, also in der vom Datei-Manager verwalteten Datei,’’’’’’’’’’’’’. ist stets direkt anzukoppeln. ’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ BOUND ROW 10 INT VAR reihe; ’. PROC zeige dsinhalt (TEXT CONST datenraum): ’> BOUND ROW 10 INT VAR inhalt := old (datenraum); ’’’’’’’’’’ INT VAR j; ’’’’’’’’’’’’’’’. putline ("Inhalt:" + datenraum); ’’’’’’’’’ FOR j FROM 1 UPTO 10 REP ’ put (inhalt (j)) ’’’’’’ END PROC zeige dsinhalt; ’’’’> (* falsch: es wird auf der Kopie gearbeitet: *) ’’> DATASPACE VAR ds := new ("Gegenbeispiel: Zahlen 1 bis 10"); ’ reihe := ds;  besetze reihe; ’’’’’’’’’’’’’’> zeige dsinhalt ("Gegenbeispiel: Zahlen 1 bis 10"); ’’’’’’’’’’> (* richtig: es wird auf dem Datenraum gearbeitet: *) ’’. reihe := new ("Beispiel: Zahlen 1 bis 10"); ’ besetze reihe; ’’’’’’’’’’’’’’> zeige dsinhalt ("Beispiel: Zahlen 1 bis 10"). ’’’’’’’’’’’’’’’ besetze reihe: ’’’’’’’’’’’’’’ FOR i FROM 1 UPTO 10 REP ’ reihe (i) := i ’’’’’’’’N____________________________________________________________________________ ’^ Der Datenraum 'Gegenbeispiel: Zahlen 1 bis 10' wird nicht mit Werten besetzt,’’’’’’’’’’’’’’N sondern die Kopie dieses Datenraums, der unbenannte Datenraum 'ds'. Auf demN direkt angekoppelten Datenraum 'Beispiel: Zahlen 1 bis 10' werden die Werte gespeichert. ’’’’’’’’’’’’’’N- Wenn man ein DATASPACE-Objekt benutzt, ohne den Datei-Manager zu’’’’’’’’’’’N verwenden, so muū man selbst dafŪr sorgen, daū dieses Objekt nach seiner’’’N Benutzung wieder gelŚscht wird. Das LŚschen geschieht durch die Prozedur’’’^ 'forget'. Ein automatisches LŚschen von DATASPACE-Objekten erfolgt nicht bei’’’’’’’’’’’’’’’^ Programmende (sonst kŚnnten sie ihre Funktion als Datei nicht erfŪllen). Nur’’’’’’’’’’’’’’’N durch 'forget' oder beim LŚschen einer Task werden alle ihr gehŚrenden’’’’’N DATASPACE-Objekte gelŚscht und der belegte Speicherplatz freigegeben. ’’’’’N- Ferner ist zu beachten, daū vor der Ankopplung an ein BOUND-Objekt das’’’’’N DATASPACE-Objekt initialisiert wird (im Normalfall mit 'nilspace'). ’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. DATASPACE VAR ds := nilspace; ’’’’’’’’’’’’’’. BOUND ROW 1000 REAL VAR real feld := ds; ’’’’ real feld [index] := wert; ’’. forget (ds) (* Datenraum lŚschen, ’’’’’’’’’’’> damit der Platz wieder verwendet wird *) ’’’’’N____________________________________________________________________________ ’N- Will man auf die Feinstruktur eines BOUND-Objekts zugreifen, so muū man’’’’> strenggenommen den Konkretisierer benutzen: ’’’’’’’’’’’’’’’Ž #on("i")##on("b")#CONCR#off("i")##off("b")# #on("i")##on("b")#(#off("i")##off("b")# Ausdruck #on("i")##on("b")#)#off("i")##off("b")# ’’’’’’N Der Konkretisierer ermŚglicht eine typmŁūige Umbetrachtung vom BOUND-Objekt^ zum Datentyp der Feinstruktur. Ist der Zugriff jedoch eindeutig, so wird 'CONCR'’’’’’’’’’’’. automatisch vom Compiler ergŁnzt. ’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. BOUND INT VAR i := old ("i-Wert"); ’’’’’’’’’’ ELSE CONCR (i) ’’’’’’’’’N____________________________________________________________________________ ’^In diesem Beispiel muū der Konkretisierer benutzt werden, da sonst der Resultattyp’’’’’’’’’’’’>des Refinements nicht eindeutig ist (BOUND oder INT?). ’’’’’’’.2.9.3.3 Definition neuer Dateitypen ’’’’’’’’’^Durch die DatenrŁume und die Datentyp-Definition von ELAN ist es fŪr ProgrammieŻ’’’’’’’’’’’’’’^rer relativ einfach, neue Datei-Datentypen zu definieren. In der Regel reicht der’’’’’’’’’’’’’NDatentyp FILE fŪr "normale" Anwendungen aus, jedoch kann es manchmal sinnvoll’Nund notwendig sein, neue Datei-Typen fŪr spezielle Aufgaben zu definieren. ’’’^In diesem Abschnitt soll an dem Beispiel DIRFILE (welcher zwar im ELAN-Standard’’’’’’’’’’’’’’’^definiert, aber nicht im EUMEL-System realisiert ist) gezeigt werden, wie ein neuer’’’’’’’’’’’.Datei-Datentyp definiert wird: ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> PACKET dirfiles DEFINES DIRFILE, :=, dirfile, getline, ...: ’ LET maxsize = 1000; ’’’’’’’’’. TYPE DIRFILE = BOUND ROW maxsize TEXT; ’’’’’’> (* DIRFILE besteht aus TEXTen; Zugriff erfolgt ueber einen’’’> Schluessel, der den Index auf die Reihung darstellt *) ’’’> OP := (DIRFILE VAR dest, DATASPACE CONST space): ’’’’’’’’’’’’ CONCR (dest) := space ’’’’. DATASPACE PROC dirfile (TEXT CONST name): ’’’ IF exists (name) ’’’’’’’’’ THEN old (name) ’’’’’’’ ELSE new (name) ’’’’’’’ END PROC dirfile; ’’’’’’’’’’’> PROC getline (DIRFILE CONST df, INT CONST index, ’’’’’’’’’’’’. TEXT VAR record): ’’’’’’’’’’’’’ IF index <= 0 ’’’’’’’’’’’’> THEN errorstop ("access before first record") ’’’’’’’’’ ELIF index > maxsize ’’’’’> THEN errorstop ("access after last record") ’’’’’’’’’’’. ELSE record := df [index] ’’’’’’’’’’’’’ END PROC getline; ’’’’’’’’’’’> PROC putline (DIRFILE CONST df, INT CONST index, ’’’’’’’’’’’’. TEXT VAR record): ’’’’’’’’’’’’’ END PROC putline; ’’’’’’’’’’’ END PACKET dirfiles; ’’’’’’’’N____________________________________________________________________________ ’^Die Prozedur 'dirfile' ist die Assoziierungsprozedur fŪr DIRFILEs (analog 'sequential’’’’’’’’’^file' bei FILEs). 'dirfile' liefert entweder einen bereits vorhandenen Datenraum oder’’’’’’’’’^richtet einen neuen ein. Um eine Initialisierung mit der 'dirfile'-Prozedur vornehŻ’’’’’’’’’’’Nmen zu kŚnnen, braucht man auch einen Zuweisungsoperator, der den Datenraum anden DIRFILE-Datentyp koppelt. ^Zugriffe auf einen DIRFILE sind nun relativ einfach zu schreiben. Im obigen Beispiel’’’’’’’’’’.wird nur die Prozedur 'getline' gezeigt. ’’’’’NNun ist es mŚglich, Programme zu schreiben, die den DIRFILE-Datentyp benutŻ’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> DIRFILE VAR laeufer :: dirfile ("Nacht von Borgholzhausen");  INT VAR nummer; ’’’’’’’’’’’’’ TEXT VAR name; ’’’’’’’’’’’’’’. put ("Startnummer bitte:"); ’’’’’’’’’’’’’’ get (nummer); ’’’’’’’’’’’’. put ("Name des Laeufers:"); ’’’’’’’’’’’’’’ get (name); ’’’’’’’’’’’’’’. putline (laeufer, nummer, name); ’’’’’’’’’ UNTIL no ("weiter") END REP; N____________________________________________________________________________ ’2.9.4 Datentyp INITFLAG ’’’’’NIm Multi-User-System ist es oft notwendig, Pakete beim Einrichten einer neuen’^Task in dieser neu zu initialisieren. Das muū z.B. bei der Dateiverwaltung gemacht’’’’’’’’’’’’Nwerden, da die neue Task ja nicht die Dateien des Vaters erbt. Mit Hilfe von’’NINITFLAG-Objekten kann man zu diesem Zweck feststellen, ob ein Paket in dieser.Task schon initialisiert wurde. ’’’’’’’’’’’’’’. #on("b")#TYPE INITFLAG #off("b")# ’’’’’’’’’> Erlaubt die Deklaration entsprechender Flaggen. ’’’’’’’’’’’N #on("b")#OPo "hochgerŪstet" wurde, daū das’. Netzteil nachgeregelt werden mŪūte.) ’’N - Die Kontakte der Speicherkarten sind locker oder oxidiert. ’’’’’’’’’’’’. - Die Speicheransteuerung ist defekt. ’’’.#ib##ib(9)#Kanaltest#ie##ie(9)# ’’’’’’’’’’’’’’nBeim #ib#Kanaltest#ie# werden fortlaufend auf allen #ib#TerminalkanŁlen#ie# (auūer auf Terminal 1)’’’’’’’’’’’’Ndie jeweiligen Kanalnummern in der Form "Kanal: n" ausgegeben. Jedes EingabeŻ’Nzeichen wird in dezimaler VerschlŪssung unter Angabe der Kanalnummer auf dem’’Terminal 1 gemeldet. ’’’’’’’’’^Mit Hilfe dieses Tests kŚnnen u.a. Kabel und GerŁteeinstellungen ŪberprŪft werden.’’’’’’’’’’’’MŚgliche Fehlerursachen: ’’’’’. - falsche #ib#Baudrate#ie# eingestellt ’’N Symptome: Bei Aus- und Eingabe werden vollkommen unsinnige Zeichen’’’’. angeliefert. ’’’’’’’’’’’’’’’N Abhilfe: Baudrate am EndgerŁt oder am Rechner richtig einstellen. ’’’. - falsche #ib#ParitŁt#ie# eingestellt ’’’^ Symptome: Einige Zeichen werden richtig Ūbertragen, andere verfŁlscht. In’’’’’’’’’’’’’^ einigen FŁllen kŚnnen auch alle Zeichen falsch Ūbertragen werŻ’’’’’’’’’’’’’’ den. ’’’’’’’N Abhilfe: ParitŁt am EndgerŁt oder am Rechner richtig einstellen. ’’’’^ - falsches #ib#Kabel#ie# (z.B. Sende- und Empfangsleitungen fŁlschlich gekreuzt bzw.’’’’’^ nicht gekreuzt, Kabel ohne Fluūkontrolle an Schnittstelle mit’’’’’’’’’’’^ Fluūkontrolle, V.24-Kabel an Parallelschnittstelle oder umgeŻ’’’’’’’’’’’ kehrt): N Symptome: Keine Ausgabe, keine Eingabe oder andauernder Strom von’’’’’. "Schrottzeichen". ’’’’’’’’’’N Abhilfe: richtiges Kabel nehmen oder Kabel korrigieren. ’’’’’’’’’’’’’> - defektes Kabel (Kabelbruch, defekter Stecker o.Ł.) ’’’’ Symptome: beliebig. ’’. TestmŚglichkeit: Kabel wechseln. ’’’’’’. - defektes #ib#EndgerŁt#ie# ’’’’’’’’’’’’’ Symptome: beliebig. ’’^ TestmŚglichkeit: Anderes GerŁt mit gleicher Einstellung (Baudrate, ParitŁt’’’’’’’’’’’’’. usw.) anschlieūen. ’’’> - defekte #ib#Schnittstelle#ie# im Rechner ’’’’’’’’’’’’’’ Symptome: beliebig ’’’^ TestmŚglichkeit: EndgerŁt mit gleichem Kabel an eine andere Schnittstelle’’’’’’’’’’’’’’N am Rechner anschlieūen (dazu evtl. die GerŁteparameter> wie Baudrate anpassen). ’’’’’’’’’’’’’’.#ib##ib(9)#Hintergrundtest#ie(9)##ie# ’’’’’’’’NZur ŲberprŪfung des #ib#Hintergrund#ie#es werden drei Tests angeboten: ’’’’’’’ (1) #ib#Lesetest#ie# ’’’’. (2) #ib#Lese-/Schreibtest#ie# ’’’’’’’’’’’. (3) #ib#Positioniertest#ie# ’’’’’’’’’’’’’ŽDer #ib##on("i")##on("b")#Lesetest#off("i")##off("b")##ie# prŪft, ob alle fŪr EUMEL verfŪgbaren BlŚcke auf der Platte bzw. Floppy’’’’’’’’’’’’’^lesbar sind. Dabei wird der Blockinhalt nicht inspiziert. Sowohl behebbare (soft) als’’’’’’’’’^auch harte #ib#Lesefehler#ie# werden gemeldet. Der Bediener kann einen Korrekturversuch’’’’’’’^durch RŪckschreiben veranlassen. Bei einem #ib#Soft-Error#ie# (Block konnte nach mehreren’’’’’^Versuchen doch gelesen werden) wird der gelesene Block neu geschrieben. Der Fehler’’’’’’’’’’’’^kann jetzt ohne negative Folgen behoben sein, bei defekter Hardware aber auch zu’’’’’’’’’’’’’’Folgefehlern fŪhren. ’’’’’’’’’^Als Korrekturversuch bei harten Fehlern wird ein mit 'FFFD' gefŪllter Block geschrieŻ’’’’’’’’’^ben. Wird ein solcher Block spŁter vom EUMEL gelesen und als Code angesehen, fŪhrt’’’’’’’’’’’’^das zur Fehlermeldung "#ib#code block unreadable#ie#". Wird FFFD als INT angesehen, liefert’’’Nes den Wert -3, bei REAL oder TEXT kŚnnen keine Vorhersagen gemacht werden. ’’ŽBei dem #ib##on("i")##on("b")#Schreib-/Lesetest#off("i")##off("b")##ie# wird jeder Block mit mehreren Bitmustern beschrieben und’’’’’’’’’’’’’’^zur Kontrolle wieder gelesen. Der alte Inhalt wird vor dem Test gesichert und nachher’’’’’’’’’.wieder in den Block geschrieben. ’’’’’’’’’’’’’^ #on("b")#Achtung: Normalerweise zerstŚrt der Test den EUMEL-Hintergrund nicht. Bei’’’’’’’’N defekter Platte kŚnnen allerdings BlŚcke durch miūlungenes RŪckŻ’> schreiben zerstŚrt werden. #off("b")# ’’’’’’’’’’’ŽDer #ib##on("i")##on("b")#Positioniertest#off("i")##off("b")##ie# arbeitet Łhnlich wie die LeseprŪfung. Allerdings wird in der ReihenŻ’’’’’’’’^folge 0, 1, 0, 2, 0, 3, ... gelesen, so daū die Platte fŪr jeden Lesevorgang positionieren’’’’^ #on("b")#Achtung: Wegen der harten Plattenbelastung sollte dieser Test nicht zu lange’’’’’. laufen.#off("b")# ’’’’’’’’’’’’’’’.#ib##ib(9)#Archivtest#ie##ie(9)# ’’’’’’’’’’’’’^Der Archivtest arbeitet Łhnlich wie der Hintergrundtest - allerdings auf dem Archiv. Er’’’’’’’^kann sowohl zur ŲberprŪfung von Archiv-DatentrŁgern (#ib#Lesetest#ie#) als auch zum Test’’’’’’.des #ib#Archivlaufwerks#ie# benutzt werden. ’’>#ib(9)#2.3. #ib#Serielle GerŁteschnittstelle#ie##ie(9)# ’’’’’’.#ib##ib(9)#Pinbelegung und Kabel#ie(9)##ie# ’’n#on("b")##on("i")#Anmerkung: Dieses Kapitel ist nur fŪr solche Anwender von Bedeutung, die sich selbst’’’’’’’’N mit der Verkabelung ihrer GerŁte befassen.#off("i")##off("b")# ’’’’nIm folgenden werden die wichtigsten Leitungen der offiziellen #ib#V.24-Schnittstelle#ie# (#ib#serielŻ’’’’’’’’’^le Schnittstelle#ie# zum Anschluū von Terminals, Druckern, Fremdrechnern u.Ł.) beschrieŻ’’’’’’. Pin Betriebsrichtung Bedeutung ’’’’. 2 out Sendedaten ’’’. 3 in Empfangsdaten > 4 out Sendeaufforderung (RTS) ’’’’’’> 5 in Empfangsbereitschaft (CTS) ’’’. 7 Signalerde ’’’> 8 in Gegenstation bereit (DCD) ’’’’> 20 out eigene Station bereit (DTR) ’’^Dabei dient das Paar (2,3) zur Ųbertragung der Daten, mit Hilfe von (4,5) ist #ib#FluūkonŻ’’’’^trolle#ie# mŚglich (z.B. kann ein Drucker damit Sendungen vom Rechner "verlangsamen").’’’’’’’’^Das Paar (8,20) wird bei manchen GerŁten und Rechnern benutzt, um festzustellen, ob’’’’’’’’’’’.die Gegenstation eingeschaltet ist. ’’’’’’’’’’^Die meisten Rechner haben die gleiche #ib#Pinbelegung#ie# wie oben aufgefŪhrt. Die Kabel’’’’’’>mŪssen dann die folgenden #ib#Pin#ie#s verbinden: ’’’’’’’’’’’’NRechner 2 3 4 5 7 8 20 VollstŁndige Verbindung mit Fluūkontrolle. ’’’’’’GerŁt 2 3 4 5 7 8 20 ’’’^Rechner 2 3 4 5 7 Reicht fŪr die meisten AnschlŪsse mit FluūkontrolŻ’’’’’’’’’’’’’’> le, z.B. Rechnerkopplung. ’’’’’’GerŁt 2 3 4 5 7 ’’’’’’’’’^Rechner 2 3 5 7 Reicht fŪr die meisten Drucker, Fluūkontrolle nur’’’’’’’’’’’’’’’N einseitig vom Drucker zum Rechner. ’’’’’’’’’’’’’GerŁt 2 3 4 7 ’’’’’’’’’NRechner 2 3 7 Reicht meistens fŪr Terminals, Fluūkontrolle ist> dabei ŪberflŪssig. ’’’’’’’’’’’’’GerŁt 2 3 7 ’’’’’’’’’NRechner 2 3 4 5 7 Manchmal fŪr Terminals. Rechnerseitig wird FluūŻN kontrolle durch die BrŪcke 4-5 simuliert. ’’’’’’GerŁt 2 3 7 ’’’’’’’’’NBei manchen Rechnern werden die notwendigen paarweisen Vertauschungen schon’’’>im Rechner durchgefŪhrt. Es ergibt sich entsprechend: ’’’’’’’’NRechner 2 3 4 5 7 8 20 VollstŁndige Verbindung mit Fluūkontrolle. ’’’’’’GerŁt 2 3 4 5 7 8 20 ’’’NRechner 2 3 4 5 7 Einfacher Anschluū mit Fluūkontrolle. ’’’’’’’’’’ := (INITFLAG VAR flag, BOOL CONST flagtrue) #off("b")# ’’’’’’’’. Erlaubt die Initialisierung von INITFLAGs ’N #on("b")#BOOL PROC initialized (INITFLAG VAR flag) #off("b")# ’’’’’’’’’’’’’^ Wenn die Flagge in der Task A auf TRUE oder FALSE gesetzt wurde, dann liefert’’’’’’’’’’’’’’N sie beim ersten Aufruf den entsprechenden Wert, danach immer TRUE (in der’’N Beim Einrichten von SŚhnen wird die Flagge in den Sohntasks automatisch auf^ FALSE gesetzt. So wird erreicht, daū diese Prozedur in den neu eingerichteten’’’’’’’’’’’’’’N SŚhnen und Enkeltasks genau beim ersten Aufruf FALSE liefert. ’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. PACKET stack DEFINES push, pop: ’’’’’’’’’’’’’. INITFLAG VAR in this task := FALSE ; ’’’’’’’’ INT VAR stack pointer ; ’’’’’ ROW 1000 INT VAR stack ; ’’’’. PROC push (INT CONST value) : ’’’’’’’’’’’’’’’. initialize stack if necessary ; ’’’’’’’’’’ END PROC push ; ’’’’’’’’’’’’’ PROC pop (INT VAR value) : ’’. initialize stack if necessary ; ’’’’’’’’’’ END PROC pop ;. ’’’’’’’’’’’’’. initialize stack if necessary : ’’’’’’’’’’’’’. IF NOT initialized (in this task) ’’’’’’’’’’’ THEN stack pointer := 0 ’’ END PACKET stack ’’’’’’’’’’’’N____________________________________________________________________________ ’programmierhandbuch.2b’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.4’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Ćž’’’’’’’’’’’’’ų’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’bea€ė’’ž›0’’’’00ŸM’’’’Be’ kap4’’’’’’’’a€’’’’’’’’’’’’ž’’’’’’’’’’’’’’’’’’€’M’’’’’’’’’’’’’’’’’’’р’/’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’A’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’‘’!’’’’’’’’’’’’’’’’’’’Į’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’‚’E’’’’’’’’’’’’’’’’’’’a‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomodd# ’’’’’’’’’‚’E’’’’’’’’’’’’’’’’’’’т’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’ń‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ƒ’M’’’’’’’’’’’’’’’’’’’aƒ’N’’’’’’’’’’’’’’’’’’’±ƒ’S’’’’’’’’’’’’’’’’’’’„’M’’’’’’’’’’’’’’’’’’’a„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”„’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į„’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!…’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q…’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’…’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į…’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń…’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!†’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q†’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’†’N’’’’’’’’’’’’’’’’’’’ц’U’’’’’’’’’’’’’’’’’’’1‡’2’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’q‡’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‡’J’’’’’’’’’’’’’’’’’’’ᇒM’’’’’’’’’’’’’’’’’’’1ˆ’F’’’’’’’’’’’’’’’’’’’’’ erscheint. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ˆ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ш’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‰’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A‰’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q‰’’’’’’’’’’’’’’’’’’’’‘‰’1’’’’’’’’’’’’’’’’’’’щ’9’’’’’’’’’’’’’’’’’’’Š’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŠ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Š’M’’’’’’’’’’’’’’’’’’’ńŠ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‹’Q’’’’’’’’’’’’’’’’’’’q‹’M’’’’’’’’’’’’’’’’’’’Į‹’+’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'begin' ’’’’’’’’’’’’’ń‹’8’’’’’’’’’’’’’’’’’’’1Œ’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŒ’C’’’’’’’’’’’’’’’’’’’ĮŒ’Q’’’’’’’’’’’’’’’’’’’!’Q’’’’’’’’’’’’’’’’’’’’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’э’*’’’’’’’’’’’’’’’’’’’Ž’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'continue' ’’’’’’’’’’1Ž’;’’’’’’’’’’’’’’’’’’’qŽ’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŽ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŽ’V’’’’’’’’’’’’’’’’’’’Q’S’’’’’’’’’’’’’’’’’’’±’S’’’’’’’’’’’’’’’’’’’’L’’’’’’’’’’’’’’’’’’’a’L’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'break' ’’’’’’’’’’’’’±’"’’’’’’’’’’’’’’’’’’’ᐒ.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'halt' ’’’’’’’’’’’’’’‘’!’’’’’’’’’’’’’’’’’’’A‘’N’’’’’’’’’’’’’’’’’’’’’ brochen. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‘’P’’’’’’’’’’’’’’’’’’’ń‘’N’’’’’’’’’’’’’’’’’’’A’’L’’’’’’’’’’’’’’’’’’’‘’’Q’’’’’’’’’’’’’’’’’’’ń’’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’!“’’’’’’’’’’’’’’’’’’’’A“’)’’’’’’’’’’’’’’’’’’’q“’O’’’’’’’’’’’’’’’’’’’ѓ’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#foot# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’P’’’’’’’’’’’’’’’’’’’q”’$’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’””’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'task info' ’’’’’’’’’є’&’’’’’’’’’’’’’’’’’’’•’R’’’’’’’’’’’’’’’’’’’a•’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'help' ’’’’’’’’’’’’’’‘•’!’’’’’’’’’’’’’’’’’’’Į•’&’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ 4.2 Monitor’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń•’I’’’’’’’’’’’’’’’’’’’A–’I’’’’’’’’’’’’’’’’’’’‘–’Q’’’’’’’’’’’’’’’’’’’ń–’H’’’’’’’’’’’’’’’’’’’A—’L’’’’’’’’’’’’’’’’’’’‘—’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ї’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’˜’7’’’’’’’’’’’’’’’’’’’’’ Parameter ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q˜’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘˜’5’’’’’’’’’’’’’’’’’’’’’ ’’’’GerŁt 2 3 4 5 7 ’’’’’’’’’NRechner 2 3 4 7 Drucker, einseitige Fluūkontrolle. ’’’’’’’’’’’’’GerŁt 2 3 4 7 ’’’’’’’’’.Rechner 2 3 7 Terminal. ’’’’’’GerŁt 2 3 7 ’’’’’’’’’NRechner 2 3 4 5 7 Terminal mit simulierter Fluūkontrolle. ’’’’’’’’GerŁt 2 3 7 ’’’’’’’’’>#ib(9)#2.4. #ib#KanŁle#ie# und #ib#Konfigurierung#ie##ie(9)# ’^Im EUMEL-System dienen #ib#KanŁle#ie# zur Kommunikation mit der Auūenwelt, d.h. KanŁle’’’’’’’’^sind Verbindungen vom Rechner zu peripheren GerŁten wie Terminals, Drucker, Plotter’’’’’’’’’’’^und Archiv. KanŁle kŚnnen fŪr zeichen- und #ib#blockorientierte Ein-/Ausgabe#ie# verwendet’’’’~werden. Ein Kanal heiūt #ub##ib#privilegiert#ie(1,"er Kanal")##ue#, wenn er nur von privilegierten Systemtasks (NachŻ’’’’’’’’’.kommen des Supervisors) benutzt werden kann. ’#ib#Kanalaufteilung#ie#: ’’’’’. Kanal Bedeutung ’’’’’’’’’’’’’> 1 zeichenorientiert, blockorientiert ’’’’N Dieser Kanal muū mit einem Terminal verbunden sein, da’> Ūber ihn der Systemstart erfolgt. ’’’’’> 2-16 zeichenorientiert, blockorientiert ’’’’^ Diese KanŁle werden fŪr weitere Terminals, Drucker, PlotŻ’’’’’’’’’’’’’’> ter, Rechnerkopplung usw. verwandt. ’’’. 15-23 blockorientiert ’’’’’’’> 24-30 blockorientiert, privilegiert ’’’’’’’’’> 31 blockorientiert, privilegiert ’’’’’’’’’^ Dieser Kanal ist der #ib#Standardkanal des Archivsystems#ie#, d.h.’’’’’^ Ūblicherweise wird darŪber die Archivfloppy angesprochen. ’’’’’’’’’’’’’> 32 blockorientiert, privilegiert ’’’’’’’’’^ Dieses ist ein #ib#interner Kanal#ie#, an den kein externes GerŁt’’’’’’N angeschlossen werden kann. Er wird zur Konfigurierung’’> der anderen KanŁle benutzt. ’’’’’’’’’’’^Der Supervisor des EUMEL-Systems verwaltet die KanŁle. Jeder Task ist dabei kein’’’’’’’’’’’’’’Noder genau ein Kanal zugeordnet. Entsprechend ist jedem Kanal keine oder genauNeine Task zugeordnet. Solche Zuordnungen kŚnnen von auūen durch den Benutzer’’^(nur bei interaktiven KanŁlen) Ūber die SV-Kommandos bzw. Prozeduraufrufe 'contiŻ’’’’’’’’’’’’’^nue' und 'break' (s. Kap. 5) verŁndert werden. In jedem Fall ŪberprŪft der Supervisor’’’’’’’’’die Zugriffsberechtigung. ’’’’>#ib##ib(9)#Zeichenorientierte Ein-/Ausgabe#ie##ie(9)# ’’’’’’’’^Zeichenorientierte Ein-/Ausgabe kann auf den KanŁlen 1 bis 16 benutzt werden. DafŪr’’’’’’’’’’’stehen die Basisoperationen ’’. PROC #ib#out#ie# (TEXT CONST text) ’’’’’’> PROC #ib#outsubtext#ie# (TEXT CONST source, ’’’’’’’’’’’’’. INT CNST from) ’’’’’’’’’. PROC outsubtext (TEXT CONST source, ’’’’’. INT CONST from, to)9 ’’’. PROC #ib#cursor#ie# (INT CONST x, y) ’’’’. PROC #ib#inchar#ie# (TEXT VAR char) ’’’’’. TEXT PROC #ib#incharety#ie# ’’’’’’’’’’’’’> TEXT PROC incharety (INT CONST time limit) ’’’’’’’’’’’’’’. PROC #ib#get cursor#ie# (INT VAR x, y) ’’^und alle darauf aufbauenden Operationen (wie 'put', 'get', 'putline', 'getline' usw.) zur’’’’’^VerfŪgung. Diese KanŁle sind 'konfigurierbar' (s.u.) und erlauben den Anruf des’’’’’’’’’’’’’’’^Systems durch den Benutzer von auūen (SV-Taste). In der Regel werden die KanŁle 1’’’’’’’’’’’’’^bis 16 fŪr Terminals, Drucker, Plotter und andere zeichenorientierte AnschlŪsse beŻ’’’’’’’’’’’^Wenn ein Kanal zum Anschluū eines Terminals verwendet wird, mŪssen die #ib#Standard-’’’’’’’’’’^Steuerzeichen#ie# des EUMEL-Systems (s. Benutzerhandbuch Programmierung, Kap. 3’’’’’’’’’’’’’’’^"Der Editor", "5.2.4. Der EUMEL-Zeichensatz") auf jedem Terminal die gleiche Semantik’’’’’’’’’^haben. Das heiūt beispielsweise, daū der Code ""2"" auf jedem Terminal bei Ausgabe’’’’’’’’’’’’^den Cursor um eine Stelle nach rechts verschiebt. Da DatenendgerŁte in dieser HinŻ’’’’’’’’’’’’^sicht aber faktisch keiner Norm gehorchen, mŪssen die EUMEL-Codes in der Regel in’’’’’’’’’’’’’^#ib#terminalspezifische Codes#ie# umgesetzt werden. Diese Umsetzregeln kann man bei der’’’’’’’^Konfigurierung (s.u.) festlegen. FŪr die meisten Terminaltypen werden allerdings’’’’’’’’’’’’’’^fertige KonfigurationssŁtze mit dem EUMEL-System zusammen ausgeliefert, die man’’’’’’’’’’’’’’’^bei der Einrichtung des Systems (s. Kap. 1 Installationsanleitung) interaktiv anwŁhlen’’’’’’’’>#ib##ib(9)#Blockorientierte Ein-/Ausgabe#ie##ie(9)# ’’’’’’’’’’^Blockorientiere Ein-/Ausgabe kann auf den KanŁlen 1 bis 32 benutzt werden. DafŪr’’’’’’’’’’’’’’stehen die Operationen ’’’’’’’> PROC #ib#control#ie# (INT CONST code1, code2, code3, ’’’’. INT VAR return code) ’’’’’’> PROC #ib#blockout#ie# (DATASPACE CONST ds, ’’’’’’’’’’’’’’N INT CONST page nr, code1, code2, INT VAR return code) ’’’’’> PROC #ib#blockout#ie# (ROW 256 INT CONST block, ’’’’’’’’’N INT CONST code1, code2, INT VAR return code) ’’’’’’’’’’’’’’. PROC #ib#blockin#ie# (DATASPACE VAR ds, ’N INT CONST page nr, code1, code2, INT VAR return code) ’’’’’> PROC #ib#blockin#ie# (ROW 256 INT VAR block, ’’’’’’’’’’’’N INT CONST code1, code2, INT VAR return code) ’’’’’’’’’’’’’’Nzur VerfŪgung. NŁheres findet man in Kap. 4.5 dieses Systemhandbuchs. ’’’’’’’’>#ib##ib(9)#Konfigurierung von Kanal 1 bis 15#ie(9)##ie# ’’’’’’^Alle #ib#zeichenorientierten KanŁle#ie# kŚnnen (mittels Block I/O auf Kanal 32) konfiguriert’’^werden. Dabei werden im wesentlichen #ib#Umsetzregeln#ie# fŪr Ein- und Ausgabe definiert,’’’’’die den Zweck haben, ’’’’’’’’’N - bei der Ausgabe den EUMEL Zeichensatz auf den Zeichensatz des angeŻ’’’’. schlossenen GerŁts abzubilden und ’’’’’^ - bei der Eingabe die gerŁtespezifischen Zeichen auf den EUMEL Zeichensatz’’’’’’’’’’’’’’’ abzubilden. ’’’’’’’’’’’>So ist eine gerŁteunabhŁngige Programmierung mŚglich. ’’’’’’’’^Mit Hilfe der Prozedur '#ib#link#ie#' kann man einen der KanŁle 1 bis 16 auf einen bestimmŻ’’’>ten Typ setzen. Immer vorhanden sind die Typen: ’’’’’’’’’’’’’’N"#ib#transparent#ie#": Keine Codeumsetzungen (fŪr Drucker usw.) und ’’’’’’’’’^"#ib#psi#ie#" : Keine Codeumsetzungen, jedoch folgende Sonderfunktionen: ’’’’’’’’’’’’’. Code Funktion ’’’’’’’’’’. 7 (CTLg) SV ’’’’’’’’’’’’’’. 17 (CTLq) Stop ’’’’’’’’’’’’. 23 (CTLw) Weiter ’’’’’’’’’’NWeitere Typen mŪssen in Form eines DATASPACE, die nach den GerŁtetypen benanntNsind, in der Task vorliegen, in der das Kommando 'link' gegeben wird. ’’’’’’’’^Neue Terminaltypen kŚnnen mit den Prozeduren 'new type', 'enter outcode', 'enter’’’’’’’’’’’’’’^incode' usw. definiert werden. Im einzelnen stehen folgende Prozeduren zur VerfŪŻ’’’’’’’’’’’’’> PROC link (INT CONST channel, TEXT CONST type) ’’’’’’’’’’^ Zweck: Der angegebene Kanal (1 bis 16) wird auf den angegebenen Typ konfiŻ’’’’’’’’’’’’’’’ guriert. ’’’’’’’’’N Hinweis: Die Prozedur 'link' hat die angegebene Wirkung nur, wenn’N die Task an Kanal 32 hŁngt, der nur fŪr SŚhne des’’’’’’’’N SUPERVISOR zugŁnglich ist ('continue (32)'). ’’’’’’’’’’’’#ib#y size#ie# ’’’’’’’’’’’’’’’N PROC y size (INT CONST channel, new size, INT VAR old size) ’’’’’’’’’’’’’^ Zweck: EinstellmŚglichkeiten fŪr verschiedene BildschirmgrŚūen. Diese ProzeŻ’’’’’’’’’’’’’^ dur wirkt nur auf ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ј’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’™’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A™’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q™’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”™’B’’’’’’’’’’’’’’’’’’’ń™’B’’’’’’’’’’’’’’’’’’’Aš’$’’’’’’’’’’’’’’’’’’’qš’"’’’’’’’’’’’’’’’’’’’”š’C’’’’’’’’’’’’’’’’’’’ńš’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’!›’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a›’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±›’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į›’4’’’’’’’’’’’’’’’’’’’!œ’;’’’’’’’’’’’’’’’’’’’aœ’>’’’’’’’’’’’’’’’’’’’”œ’3’’’’’’’’’’’’’’’’’’’ᜒ7’’’’’’’’’’’’’’’’’’’!’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’/’’’’’’’’’’’’’’’’’’’Į’-’’’’’’’’’’’’’’’’’’’ń’$’’’’’’’’’’’’’’’’’’’!ž’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qž’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ž’-’’’’’’’’’’’’’’’’’’’±ž’,’’’’’’’’’’’’’’’’’’’įž’-’’’’’’’’’’’’’’’’’’’Ÿ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŸ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŸ’0’’’’’’’’’’’’’’’’’’’±Ÿ’%’’’’’’’’’’’’’’’’’’’្$’’’’’’’’’’’’’’’’’’’ ’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’A ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a ’P’’’’’’’’’’’’’’’’’’’Į ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'packets' ’’’’’’’’’’’ń ’$’’’’’’’’’’’’’’’’’’’!”’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'bulletin' ’’’’’’’’’’a”’=’’’’’’’’’’’’’’’’’’’””’J’’’’’’’’’’’’’’’’’’’ń”’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A¢’%’’’’’’’’’’’’’’’’’’’q¢’X’’’’’’’’’’’’’’’’’’’Ń¢’k’’’’’’’’’’’’’’’’’’’A£’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'help' ’’’’’’’’’’’’’’a£’3’’’’’’’’’’’’’’’’’’’”£’J’’’’’’’’’’’’’’’’’’’ń£’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A¤’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘¤’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’±¤’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’„’’’’’’’’’’’’’’’’’’’’!„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A„’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ liefert: ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘„’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¦’4’’’’’’’’’’’’’’’’’’’A¦’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q¦’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘¦’@’’’’’’’’’’’’’’’’’’’ᦒ/’’’’’’’’’’’’’’’’’’’!§’#’’’’’’’’’’’’’’’’’’’Q§’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q§’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į§’M’’’’’’’’’’’’’’’’’’’Ø’S’’’’’’’’’’’’’’’’’’’qØ’L’’’’’’’’’’’’’’’’’’’ĮØ’R’’’’’’’’’’’’’’’’’’’!©’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A©’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘©’M’’’’’’’’’’’’’’’’’’’į©’’’’’’’’’’’’’’’’’’’’Ŗ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ŗ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŖ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŖ’-’’’’’’’’’’’’’’’’’’’ńŖ’,’’’’’’’’’’’’’’’’’’’!«’"’’’’’’’’’’’’’’’’’’’Q«’’’’’’’’’’’’’’’’’’’’q«’,’’’’’’’’’’’’’’’’’’’”«’,’’’’’’’’’’’’’’’’’’’Ń«’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń«’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A¬’U’’’’’’’’’’’’’’’’’’’”¬’i’’’’’’’’’’’’’’’’’’’­’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Q­’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'storage' ’’’’’’’’’’’q­’:’’’’’’’’’’’’’’’’’’’±­’P’’’’’’’’’’’’’’’’’’’®’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q®’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”®’’’’’’’’’’’’’’’’’’’’Į®’’’’’’’’’’’’’’’’’’’’’’ 1234 ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į®’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Æ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QÆ’’’’’’’’’’’’’’’’’’’’qÆ’)’’’’’’’’’’’’’’’’’’’”Æ’O’’’’’’’’’’’’’’’’’’’°’M’’’’’’’’’’’’’’’’’’’Q°’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’°’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ѱ’’’’’’’’’’’’’’’’’’’’ń°’’’’’’’’’’’’’’’’’’’’±’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1±’’’’’’’’’’’’’’’’’’’’Q±’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'task info' ’’’’’’’’’”±’&’’’’’’’’’’’’’’’’’’’ѱ’R’’’’’’’’’’’’’’’’’’’1²’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q²’6’’’’’’’’’’’’’’’’’’’±²’O’’’’’’’’’’’’’’’’’’’³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1³’O’’’’’’’’’’’’’’’’’’’‘³’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ѳ’P’’’’’’’’’’’’’’’’’’’1“’M’’’’’’’’’’’’’’’’’’’“’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į“’-’’’’’’’’’’’’’’’’’’’µ’L’’’’’’’’’’’’’’’’’’’aµ’&’’’’’’’’’’’’’’’’’’’‘µ’M’’’’’’’’’’’’’’’’’’’įµ’L’’’’’’’’’’’’’’’’’’’1¶’F’’’’’’’’’’’’’’’’’’’¶’N’’’’’’’’’’’’’’’’’’’Ѷ’N’’’’’’’’’’’’’’’’’’’!·’7’’’’’’’’’’’’’’’’’’’a·’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’·’P’’’’’’’’’’’’’’’’’’’į·’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#foot# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ø’:’’’’’’’’’’’’’’’’’’’Qø’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’qø’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įø’’’’’’’’’’’’’’’’’’’’įø’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¹’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ liefert: ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q¹’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¹’>’’’’’’’’’’’’’’’’’’’į¹’B’’’’’’’’’’’’’’’’’’’1ŗ’@’’’’’’’’’’’’’’’’’’’ŗ’@’’’’’’’’’’’’’’’’’’’Ńŗ’@’’’’’’’’’’’’’’’’’’’!»’?’’’’’’’’’’’’’’’’’’’q»’@’’’’’’’’’’’’’’’’’’’Į»’?’’’’’’’’’’’’’’’’’’’¼’@’’’’’’’’’’’’’’’’’’’a¼’@’’’’’’’’’’’’’’’’’’’±¼’?’’’’’’’’’’’’’’’’’’’½’@’’’’’’’’’’’’’’’’’’’Q½’@’’’’’’’’’’’’’’’’’’’”½’@’’’’’’’’’’’’’’’’’’’ń½’@’’’’’’’’’’’’’’’’’’’A¾’@’’’’’’’’’’’’’’’’’’’‘¾’B’’’’’’’’’’’’’’’’’’’į¾’?’’’’’’’’’’’’’’’’’’’1æ’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’æ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńæ’J’’’’’’’’’’’’’’’’’’’!Ą’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qĄ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĄ’;’’’’’’’’’’’’’’’’’’’Į’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’!Į’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qĮ’C’’’’’’’’’’’’’’’’’’’ĮĮ’W’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ā’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qĀ’’’’’’’’’’’’’’’’’’’’‘Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ā’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’Ć’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ć’(’’’’’’’’’’’’’’’’’’’AĆ’K’’’’’’’’’’’’’’’’’’’‘Ć’(’’’’’’’’’’’’’’’’’’’ĮĆ’’’’’’’’’’’’’’’’’’’’įĆ’’’’’’’’’’’’’’’’’’’’Ä’.’’’’’’’’’’’’’’’’’’’1Ä’*’’’’’’’’’’’’’’’’’’’aÄ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ä’7’’’’’’’’’’’’’’’’’’’ĮÄ’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Å’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aÅ’’’’’’’’’’’’’’’’’’’’Å’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Å’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃÅ’’’’’’’’’’’’’’’’’’’’ńÅ’’’’Kanal 32. 'channel' gibt dabei den zu konfigurierenden’’’’’’’’’’ Kanal an. ’’’’’’’’#ib#new type#ie# ’’’’’’’’’’’’’. PROC new type (TEXT CONST typ) ’’’’’’’’’’N Zweck: ErŚffnet einen neuen Kanaltyp mit dem Namen 'typ'. Die folgenden’’^ Aufrufe von 'enter outcode', 'enter incode' usw. beziehen sich dann auf’’’’’’’’’’’ diesen Typ. ’’’’’’#ib#enter outcode#ie# ’’’’’’’’> PROC enter outcode (INT CONST eumelcode, zielcode) ’’’’’’^ Zweck: Legt fest, daū der Code 'eumelcode' bei Ausgabe auf dem Terminaltyp’’’’’’’’’’’’’’’> in 'zielcode' gewandelt werden soll. ’’’’’’’’’’’’’N PROC enter outcode (INT CONST eumelcode, TEXT CONST zeichen) ’’’’’’’’’’’’N Zweck: Wirkt wie 'enter outcode (eumelcode, code (zeichen))'. ’’’’’’’’’’’N PROC enter outcode (INT CONST eumelcode, zeit, TEXT CONST seq) ’’’’’’’’’’^ Zweck: Hiermit wird festgelegt, daū der Code 'eumelcode' als Mehrzeichenfolge’’’’’’’’’’’’^ 'seq' ausgegeben werden soll. Jedesmal, wenn diese Folge ausgegeben’’’’’’’’’’’’’’’N wurde, verzŚgert das System die Ausgabe des nŁchsten Zeichens um’’^ mindestens 'zeit' Millisekunden. Dies wird z.B. von den meisten TermiŻ’’’’’’’’’’’’^ nals gefordert, wenn sie die Funktion 'LŚschen Bildschirm' ausfŪhren’’’’’’’’’’’’’’ sollen. ’’’’’’’’’’#ib#enter incode#ie# ’’’’’’’’’> PROC enter incode (INT CONST eumelcode, TEXT CONST seq) ’^ Zweck: Es wird festgelegt, daū eine Eingabezeichenfolge 'seq' an das System’’’’’’’’’’’’’’N als ein (!) Zeichen mit dem Code 'eumelcode' weitergegeben werden’^ soll. Die ganze Sequenz muū dabei innerhalb von ca. 40 Millisekunden’’’’’’’’’’’’’’N eintreffen, andernfalls werden die Zeichen einzeln gemeldet. Diese^ Logik ist erforderlich, um auch Terminals anzuschlieūen, die z.B. CursorŻ’’’’’’’’’N tasten als ESC-Sequenzen melden. Ohne die ZeitŪberwachung wŪrde’’’^ das BetŁtigen der ESC-Taste sonst die Eingabe blockieren, bis die Folge’’’’’’’’’’’. 'seq' vollstŁndig ist. ’’’’’’’’’’’^ Folgende Eumelcodes sind fŪr die Sondertasten (SV usw.) anzugeben: ’’’’’’’’’’’’’’’. 17 : STOP ’’’’’’’’’’’’. 23 : WEITER ’’’’’’’’’’. 7 : SV ’’’’’’’’’’’’’’N Weitere Codes ('HOP',...) sind im Benutzerhandbuch Programmierung’> (5 - 29, Der EUMEL-Zeichensatz) angegeben. ’’’’’’’^ #on("i")#Hinweis: Liefert die SV-Taste eines Terminals von sich aus schon Code’’’’^ 7, so ist dennoch 'enter incode (7, ""7"")' anzugeben. EntspreŻ’’’’’’’’’’^ chendes gilt fŪr die zwei anderen "Ereignistasten" STOP und’’’’’’’’’’’’’’^ WEITER. Bei allen anderen Tasten brauchen jedoch nur echte’’’’’’’’’’’’’’’N Umcodierungen vermerkt zu werden.#off("i")# ’’’’’’’’’’’’’#ib#cursor logic#ie# ’’’’’’’’’N PROC cursor logic (INT CONST offset, modus, TEXT CONST pre, mid, post) ’’N Zweck: Es wird festgelegt, daū der EUMEL-Code 6 (Cursorposition) mit den’N folgenden beiden Zeichen, deren Codes y und x seien, ’’’’’’’’’’’’’. bei modus = 255 als ’’’’’’’’’’’’’’N pre + code (offset+y) + mid + code (offset+x) + post ’’’’’’’’’. und bei modus = 1 als ’’’’’’’’’’’’N pre + text (offset+y) + mid + text (offset+x) + post ’’’’’’’’’ ausgegeben wird. ’N Hinweis: 'offset' ist Ūblicherweise 32 (manchmal 0) und ’’’’’’’’’’. mid = post = "". ’’’’’’’#ib#cursor logic#ie# ’’’’’’’’’N PROC cursor logic (INT CONST dist, TEXT CONST pre, mid, post) ’’’’’’’’’’’N Zweck: Diese Prozedur wird von den Konfigurationsdateien alter Versionen’ benutzt. ’’’’’’’’’#ib#ansi cursor#ie# ’’’’’’’’’’> PROC ansi cursor (TEXT CONST pre, mid, post) ’’’’’’’’’’’’^ Zweck: Diese Prozedur ist anstelle von 'cursor logic' zu verwenden, wenn die’’’’’’’’’’’’’N Cursor-Positionierungen bei dem Terminal so erfolgt, wie im Ansi-’. Standard definiert wird. ’’’’’’’’’#ib#elbit cursor#ie# ’’’’’’’’’ PROC elbit cursor ’’’’’’’^ Zweck: Diese Prozedur ist bei Elbit-Terminals anstelle von 'cursor logic' zu’’’’’’’’’’’’’ verwenden. ’’’’’’’.#ib##ib(9)#Konfigurations-Manager#ie##ie(9)# ’^Wenn das System gestartet wird, weiū der Urlader noch nicht, welche #ib#Terminaltypen#ie#’’’’’^an welchen KanŁlen hŁngen. (Der Vortest kann deshalb auch nicht bildschirmorienŻ’’’’’’’’’’’’’’tiert arbeiten). ’’’’’’’’’’’’’^Falls eine Task 'configurator' im System ist, schickt der SUPERVISOR dieser eine StartŻ’’’’’’’^sendung zu. Diese Task kann daraufhin die nŚtigen Konfigurierkommandos ('link',...)’’’’’’’’’’’^Ansonsten ist 'configurator' ein normaler Fontmanager, der die Fonttabellen verwaltet’’’’’’’’’^(siehe Kap. 7). Deshalb sollte im System immer eine Task 'configurator' existieren und’’’’’’’’^nach MŚglichkeit immer im 'wait' stehen. Man kann ihn also auch mit 'continue' an ein’’’’’’’’’>Terminal holen und dann wie Ūblich Kommandos geben. ’’’’’’’’’’#ib#configurate#ie# ’’’’’’’’’’ PROC configurate ’’’’’’’’N Zweck: FŪhrt den Konfigurationsdialog und anschlieūendes 'setup' durch. ’#ib#setup#ie#  PROC setup ’’’’’’’’’’’’’’^ Zweck: Alle KanŁle werden gemŁū der im letzten Konfigurationsdialog bestimmŻ’’’’’’’’’’’’’^ ten Werte konfiguriert (wird automatisch bei jedem Systemstart durchŻ’’’’’’’’’’’’’ gefŪhrt). ’’’’’’’’#ib#configuration manager#ie# . PROC configuration manager ’’’’’’’’’’’’’’^ Zweck: Durch Aufruf dieser Prozedur wird die Task zu einem KonfigurationsŻ’’’’’’’’’’’’’’’N manager. Man kann also die Task "configurator" lŚschen, neu als’’’N Systemtask einrichten und mit diesem Kommando wieder etablieren. ’> BEACHTE: - Die Task muū 'configurator' heiūen. ’’’’’’’’’N - Alle Terminalanpassungen gehen beim LŚschen verloren, d.h.’’’> man sollte sie vorher sichern! ’’’’’’’’’’’’’’^#on("i")#Hinweis: Es passieren, daū eine Task schon Ausgaben macht, bevor der Kanal’’’’’’’’’’^ konfiguriert ist (z.B. wenn ein 'shutup' bei aktiver Netz-Kommunikation’’’’’’’’’’’’’. durchgefŪhrt wurde).#off("i")# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’systemhandbuch.2’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Ę’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AĘ’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ę’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ę’^’’’’’’’’’’’’’’’’’’’Ē’K’’’’’’’’’’’’’’’’’’’aĒ’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ē’O’’’’’’’’’’’’’’’’’’’Č’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AČ’N’’’’’’’’’’’’’’’’’’’‘Č’S’’’’’’’’’’’’’’’’’’’’’nen. ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńČ’;’’’’’’’’’’’’’’’’’’’1É’#’’’’’’’’’’’’’’’’’’’aÉ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘É’\’’’’’’’’’’’’’’’’’’’ńÉ’W’’’’’’’’’’’’’’’’’’’QŹ’S’’’’’’’’’’’’’’’’’’’±Ź’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įŹ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ė’U’’’’’’’’’’’’’’’’’’’Ė’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ė’S’’’’’’’’’’’’’’’’’’’’’nennen: ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ģ’T’’’’’’’’’’’’’’’’’’’qĢ’I’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'ALL' ’’’’’’’’’’’’’’’ĮĢ’&’’’’’’’’’’’’’’’’’’’ńĢ’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AĶ’?’’’’’’’’’’’’’’’’’’’‘Ķ’N’’’’’’’’’’’’’’’’’’’įĶ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'all' ’’’’’’’’’’’’’’’Ī’*’’’’’’’’’’’’’’’’’’’AĪ’T’’’’’’’’’’’’’’’’’’’”Ī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'SOME' ’’’’’’’’’’’’’’ĮĪ’E’’’’’’’’’’’’’’’’’’’Ļ’Q’’’’’’’’’’’’’’’’’’’qĻ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ļ’;’’’’’’’’’’’’’’’’’’’įĻ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Š’@’’’’’’’’’’’’’’’’’’’QŠ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'remainder' ’’’’’’’’’Š’&’’’’’’’’’’’’’’’’’’’±Š’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŃ’’’’’’’’’’’’’’’’’’’’qŃ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ń’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŃ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ņ’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŅ’M’’’’’’’’’’’’’’’’’’’ĮŅ’’’’’’’’’’’’’’’’’’’’įŅ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ó’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QÓ’8’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'LIKE' ’’’’’’’’’’’’’’‘Ó’X’’’’’’’’’’’’’’’’’’’ńÓ’N’’’’’’’’’’’’’’’’’’’AŌ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŌ’O’’’’’’’’’’’’’’’’’’’ŃŌ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŌ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AÕ’’’’’’’’’’’’’’’’’’’’aÕ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Õ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃÕ’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'+' ’’’’’’’’’’’’’’’’’Ö’F’’’’’’’’’’’’’’’’’’’aÖ’;’’’’’’’’’’’’’’’’’’’”Ö’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÖ’P’’’’’’’’’’’’’’’’’’’Q×’P’’’’’’’’’’’’’’’’’’’’’ ten ist. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'-' ’’’’’’’’’’’’’’’’’±×’F’’’’’’’’’’’’’’’’’’’Ų’N’’’’’’’’’’’’’’’’’’’’’ mehrfach. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŲ’P’’’’’’’’’’’’’’’’’’’±Ų’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŲ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŁ’’’’’’’’’’’’’’’’’’’’aŁ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ł’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'/' ’’’’’’’’’’’’’’’’’įŁ’F’’’’’’’’’’’’’’’’’’’1Ś’’’’’’’’’’’’’’’’’’’’QŚ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ 4.2.3 Tasks’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ś’U’’’’’’’’’’’’’’’’’’’ńŚ’N’’’’’’’’’’’’’’’’’’’AŪ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ū’R’’’’’’’’’’’’’’’’’’’įŪ’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ü’Q’’’’’’’’’’’’’’’’’’’‘Ü’’’’’’’’’’’’’’’’’’’’’’#foot# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ü’/’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÜ’P’’’’’’’’’’’’’’’’’’’QŻ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ż’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŻ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ž’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŽ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ž’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŽ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'/' ’’’’’’’’’’’’’’’’’ńŽ’7’’’’’’’’’’’’’’’’’’’1ß’R’’’’’’’’’’’’’’’’’’’‘ß’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įß’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ą’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ą’M’’’’’’’’’’’’’’’’’’’ą’P’’’’’’’’’’’’’’’’’’’įą’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'niltask' ’’’’’’’’’’’į’*’’’’’’’’’’’’’’’’’’’1į’W’’’’’’’’’’’’’’’’’’’‘į’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'task' ’’’’’’’’’’’’’’ńį’<’’’’’’’’’’’’’’’’’’’1ā’R’’’’’’’’’’’’’’’’’’’‘ā’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įā’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńā’A’’’’’’’’’’’’’’’’’’’Ać’C’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'brother' ’’’’’’’’’’’‘ć’;’’’’’’’’’’’’’’’’’’’Ńć’V’’’’’’’’’’’’’’’’’’’1ä’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'father' ’’’’’’’’’’’’ä’(’’’’’’’’’’’’’’’’’’’±ä’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įä’:’’’’’’’’’’’’’’’’’’’!å’X’’’’’’’’’’’’’’’’’’’å’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'myself' ’’’’’’’’’’’’Įå’(’’’’’’’’’’’’’’’’’’’ńå’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'son' ’’’’’’’’’’’’’’’!ę’7’’’’’’’’’’’’’’’’’’’aę’Q’’’’’’’’’’’’’’’’’’’Įę’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'archive' ’’’’’’’’’’’ē’)’’’’’’’’’’’’’’’’’’’Aē’L’’’’’’’’’’’’’’’’’’’‘ē’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'printer' ’’’’’’’’’’’įē’)’’’’’’’’’’’’’’’’’’’č’T’’’’’’’’’’’’’’’’’’’qč’L’’’’’’’’’’’’’’’’’’’’’ lers. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'public' ’’’’’’’’’’’’Įč’(’’’’’’’’’’’’’’’’’’’ńč’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'supervisor' ’’’’’’’’Aé’,’’’’’’’’’’’’’’’’’’’qé’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'name' ’’’’’’’’’’’’’’±é’8’’’’’’’’’’’’’’’’’’’ńé’R’’’’’’’’’’’’’’’’’’’Qź’N’’’’’’’’’’’’’’’’’’’”ź’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńź’’’’’’’’’’’’’’’’’’’’ńź’B’’’’’’’’’’’’’’’’’’’Aė’N’’’’’’’’’’’’’’’’’’’‘ė’Q’’’’’’’’’’’’’’’’’’’’’ beziehen. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńė’%’’’’’’’’’’’’’’’’’’’!ģ’’’’’’’’’’’’’’’’’’’’Aģ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'reserve' ’’’’’’’’’’’qģ’6’’’’’’’’’’’’’’’’’’’±ģ’R’’’’’’’’’’’’’’’’’’’ķ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ķ’J’’’’’’’’’’’’’’’’’’’ķ’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńķ’Q’’’’’’’’’’’’’’’’’’’1ī’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Qī’’’’’’’’’’’’’’’’’’’’’’ ’’’’°ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’B_a€ė’’IF$’’’’$$JM’’’’a€’’’’’’’’’’’’’’’’’’’’’’’’’’’’I’’’’’’’’’’’’’’’’’’€’’’’’’’’’’’’’’’’’’’’’’ #pageblock# ’’’’’’’’’’’#block# ’’’’’’’’’’’’’’’ #page (35)# ’’’’’’’’’’’ #headeven# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”€’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į€’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń€’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘’Y’’’’’’’’’’’’’’’’’’’ń’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q‚’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‚’X’’’’’’’’’’’’’’’’’’’ń‚’P’’’’’’’’’’’’’’’’’’’Qƒ’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ƒ’/’’’’’’’’’’’’’’’’’’’გM’’’’’’’’’’’’’’’’’’’1„’A’’’’’’’’’’’’’’’’’’’„’9’’’’’’’’’’’’’’’’’’’Į„’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!…’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’…’M’’’’’’’’’’’’’’’’’’’х’‡’’’’’’’’’’’’’’’’’’’a†’R’’’’’’’’’’’’’’’’’’’Į†’L’’’’’’’’’’’’’’’’’’’‡’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A‡’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q‡’’’’’’’’’’’’’’’’’’’’”‡’’’’’’’’’’’’’’’’’’’’Į‡’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń‡’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ˆ’’’’’’’’’’’’’’’’’’’’Qˆ’’’’’’’’’’’’’’’’’’’’qˆ’’’’’’’’’’’’’’’’’’’’”ˆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ш’L’’’’’’’’’’’’’’’’’’’!‰’O’’’’’’’’’’’’’’’’’’’‰’O’’’’’’’’’’’’’’’’’’’ቒX’’’’’’’’’’’’’’’’’’’AŠ’O’’’’’’’’’’’’’’’’’’’”Š’R’’’’’’’’’’’’’’’’’’’‹’X’’’’’’’’’’’’’’’’’’’a‹’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”‹’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į‹’(’’’’’’’’’’’’’’’’’’’Œ’(’’’’’’’’’’’’’’’’’’’AŒ’(’’’’’’’’’’’’’’’’’’’qŒ’(’’’’’’’’’’’’’’’’’’’”Œ’(’’’’’’’’’’’’’’’’’’’ь’(’’’’’’’’’’’’’’’’’’’’(’’’’’’’’’’’’’’’’’’’1’(’’’’’’’’’’’’’’’’’’’a’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’э’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ž’W’’’’’’’’’’’’’’’’’’’qŽ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŽ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŽ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’Z’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’į’O’’’’’’’’’’’’’’’’’’’A’P’’’’’’’’’’’’’’’’’’’”’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ѐ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘’3’’’’’’’’’’’’’’’’’’’Q‘’3’’’’’’’’’’’’’’’’’’’‘‘’3’’’’’’’’’’’’’’’’’’’ё’3’’’’’’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’Q’’3’’’’’’’’’’’’’’’’’’’‘’’3’’’’’’’’’’’’’’’’’’’ђ’3’’’’’’’’’’’’’’’’’’’“’3’’’’’’’’’’’’’’’’’’’Q“’3’’’’’’’’’’’’’’’’’’’‘“’3’’’’’’’’’’’’’’’’’’’ѓ’3’’’’’’’’’’’’’’’’’’’”’3’’’’’’’’’’’’’’’’’’’Q”’3’’’’’’’’’’’’’’’’’’’‘”’3’’’’’’’’’’’’’’’’’’’’’aber: ’’’’’’’’’’’’’’’є’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’•’`’’’’’’’’’’’’’’’’’’’•’M’’’’’’’’’’’’’’’’’’’ѕ’T’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1–’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q–’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘–’!’’’’’’’’’’’’’’’’’’’Į–’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń–’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Ųbersicht ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!—’’’’’’’’’’’’’’’’’’’’A—’E’’’’’’’’’’’’’’’’’’’‘—’C’’’’’’’’’’’’’’’’’’’į—’D’’’’’’’’’’’’’’’’’’’1˜’E’’’’’’’’’’’’’’’’’’’˜’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į˜’]’’’’’’’’’’’’’’’’’’’!™’P’’’’’’’’’’’’’’’’’’’™’Q’’’’’’’’’’’’’’’’’’’į™’]’’’’’’’’’’’’’’’’’’’Aš’L’’’’’’’’’’’’’’’’’’’‘š’L’’’’’’’’’’’’’’’’’’’ᚒ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’›’,’’’’’’’’’’’’’’’’’’’A›’Q’’’’’’’’’’’’’’’’’’’”›’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į›’'’’’’’’’’’’’’’’’’’’’œ’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qœ’!’’’’’’’’’’’’’’’’’’’”œ’V’’’’’’’’’’’’’’’’’’’’P’’’’’’’’’’’’’’’’’’’a’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’N’’’’’’’’’’’’’’’’’’’ѝ’O’’’’’’’’’’’’’’’’’’’1ž’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’až’P’’’’’’’’’’’’’’’’’’’Įž’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńž’Q’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŸ’Q’’’’’’’’’’’’’’’’’’’±Ÿ’Q’’’’’’’’’’’’’’’’’’’ ’U’’’’’’’’’’’’’’’’’’’q ’R’’’’’’’’’’’’’’’’’’’Ń ’S’’’’’’’’’’’’’’’’’’’1”’Y’’’’’’’’’’’’’’’’’’’‘”’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±”’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń”’R’’’’’’’’’’’’’’’’’’’Q¢’P’’’’’’’’’’’’’’’’’’’±¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń¢’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’£’S’’’’’’’’’’’’’’’’’’’q£’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į£’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¤’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A¤’’’’’’’’’’’’’’’’’’’’a¤’’’’’’’’’’’’’’’’’’’’¤’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¤’M’’’’’’’’’’’’’’’’’’’ń¤’d’’’’’’’’’’’’’’’’’’’a„’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±„’’’’’’’’’’’’’’’’’’’’Ń„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń„’M’’’’’’’’’’’’’’’’’’’A¦’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a¦’’’’’’’’’’’’’’’’’’’’¦’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’‘¦’’’’’’’’’’’’’’’’’’’’±¦’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ѧ’S’’’’’’’’’’’’’’’’’’’1§’S’’’’’’’’’’’’’’’’’’’’’tet. ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘§’S’’’’’’’’’’’’’’’’’’’ń§’V’’’’’’’’’’’’’’’’’’’QØ’\’’’’’’’’’’’’’’’’’’’±Ø’V’’’’’’’’’’’’’’’’’’’©’T’’’’’’’’’’’’’’’’’’’q©’Q’’’’’’’’’’’’’’’’’’’Ń©’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń©’V’’’’’’’’’’’’’’’’’’’QŖ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŖ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ŗ’U’’’’’’’’’’’’’’’’’’’ńŖ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!«’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A«’U’’’’’’’’’’’’’’’’’’’”«’R’’’’’’’’’’’’’’’’’’’’’ stimmen). ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’'copy' ’’’’’’’’’’’’’’qī’;’’’’’’’’’’’’’’’’’’’±ī’S’’’’’’’’’’’’’’’’’’’’’ zer-Task. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ļ’&’’’’’’’’’’’’’’’’’’’Aļ’$’’’’’’’’’’’’’’’’’’’qļ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'forget' ’’’’’’’’’’’’‘ļ’:’’’’’’’’’’’’’’’’’’’Ńļ’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!š’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qš’?’’’’’’’’’’’’’’’’’’’”š’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńš’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ań’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ń’’’’’’’’’’’’’’’’’’’’±ń’’’’’’’’’’’’’’’’’’’’Ńń’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńń’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'list' ’’’’’’’’’’’’’’Aņ’!’’’’’’’’’’’’’’’’’’’qņ’Q’’’’’’’’’’’’’’’’’’’Ńņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńņ’3’’’’’’’’’’’’’’’’’’’1ó’M’’’’’’’’’’’’’’’’’’’ó’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įó’2’’’’’’’’’’’’’’’’’’’ō’Z’’’’’’’’’’’’’’’’’’’’’ muū. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aō’F’’’’’’’’’’’’’’’’’’’±ō’O’’’’’’’’’’’’’’’’’’’õ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1õ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’õ’’’’’’’’’’’’’’’’’’’’”õ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įõ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'rename' ’’’’’’’’’’’’1ö’E’’’’’’’’’’’’’’’’’’’ö’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įö’*’’’’’’’’’’’’’’’’’’’ńö’(’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!÷’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'edit' ’’’’’’’’’’’’’’A÷’8’’’’’’’’’’’’’’’’’’’÷’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±÷’!’’’’’’’’’’’’’’’’’’’į÷’’’’’’’’’’’’’’’’’’’’ų’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qų’’’’’’’’’’’’’’’’’’’’qų’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ų’’’’’’’’’’’’’’’’’’’’Įų’O’’’’’’’’’’’’’’’’’’’!ł’S’’’’’’’’’’’’’’’’’’’ł’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ł’5’’’’’’’’’’’’’’’’’’’ńł’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aś’U’’’’’’’’’’’’’’’’’’’”ś’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'editget' ’’’’’’’’’’’Įś’9’’’’’’’’’’’’’’’’’’’ū’G’’’’’’’’’’’’’’’’’’’Qū’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'show' ’’’’’’’’’’’’’’qū’8’’’’’’’’’’’’’’’’’’’±ū’T’’’’’’’’’’’’’’’’’’’ü’P’’’’’’’’’’’’’’’’’’’qü’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ü’!’’’’’’’’’’’’’’’’’’’Įü’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’ńü’’’’’’’’’’’’’’’’’’’’ż’V’’’’’’’’’’’’’’’’’’’qż’O’’’’’’’’’’’’’’’’’’’Ńż’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ž’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’až’’’’’’’’’’’’’’’’’’’’ž’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńž’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’’’’’’’’’’’’’’’’’’’’’A’’F’’’’’’’’’’’’’’’’’’’‘’’M’’’’’’’’’’’’’’’’’’’į’’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2’K’’’’’’’’’’’’’’’’’’’‚’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’ņ’S’’’’’’’’’’’’’’’’’’’R’S’’’’’’’’’’’’’’’’’’’²’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’O’’’’’’’’’’’’’’’’’’’’’ sig. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’"’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’ā’J’’’’’’’’’’’’’’’’’’’2’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’/’’’’’’’’’’’’’’’’’’’Ņ’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'word wrap' ’’’’’’’’’"’5’’’’’’’’’’’’’’’’’’’b’O’’’’’’’’’’’’’’’’’’’Ā’O’’’’’’’’’’’’’’’’’’’"’U’’’’’’’’’’’’’’’’’’’‚’L’’’’’’’’’’’’’’’’’’’’’ Dateien. ’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’N’’’’’’’’’’’’’’’’’’’B’K’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’_’’’’’’’’’’’’’’’’’’’" ’Q’’’’’’’’’’’’’’’’’’’‚ ’6’’’’’’’’’’’’’’’’’’’’’ #off("b")# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'fetch' ’’’’’’’’’’’’’Ā ’M’’’’’’’’’’’’’’’’’’’ ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R ’K’’’’’’’’’’’’’’’’’’’¢ ’Q’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b ’’’’’’’’’’’’’’’’’’’’‚ ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’² ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’I’’’’’’’’’’’’’’’’’’’R ’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’¢ ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ ’’’’’’’’’’’’’’’’’’’’ ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’ ’P’’’’’’’’’’’’’’’’’’’ņ ’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’9’’’’’’’’’’’’’’’’’’’r’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’7’’’’’’’’’’’’’’’’’’’ņ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'fetchall' ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’%’’’’’’’’’’’’’’’’’’’r’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’9’’’’’’’’’’’’’’’’’’’ā’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'save' ’’’’’’’’’’’’’’’L’’’’’’’’’’’’’’’’’’’b’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’J’’’’’’’’’’’’’’’’’’’ņ’P’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’L’’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’J’’’’’’’’’’’’’’’’’’’B’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’8’’’’’’’’’’’’’’’’’’’Ā’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’6’’’’’’’’’’’’’’’’’’’B’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’!’’’’’’’’’’’’’’’’’’’Ņ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'saveall' ’’’’’’’’’’’’$’’’’’’’’’’’’’’’’’’’B’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’9’’’’’’’’’’’’’’’’’’’²’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'erase' ’’’’’’’’’’’’’ā’M’’’’’’’’’’’’’’’’’’’2’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’K’’’’’’’’’’’’’’’’’’’Ā’P’’’’’ ’’’’’’’’’’’’’’’’’’’’¬’’’’’’’’’’’’’’’’’’’’!¬’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’1¬’’’’’’’’’’’’’’’’’’’’Q¬’’’’’’’’’’’’’’’’’’’’q¬’’’’’’’’’’’’’’’’’’’’‘¬’&’’’’’’’’’’’’’’’’’’’Į¬’’’’’’’’’’’’’’’’’’’’ᬒ’’’’’’’’’’’’’’’’’’’’’ FI; ’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’­’P’’’’’’’’’’’’’’’’’’’a­’S’’’’’’’’’’’’’’’’’’’Į­’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’®’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!®’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q®’’’’’’’’’’’’’’’’’’’’‘®’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’”®’’’’’’’’’’’’’’’’’’’’Į®’’’’’’’’’’’’’’’’’’’’į®’’’’’’’’’’’’’’’’’’’’Æ’'’’’’’’’’’’’’’’’’’’’1Æ’’’’’’’’’’’’’’’’’’’’QÆ’’’’’’’’’’’’’’’’’’’’’’ FI; ’’’’’’’’’’’’qÆ’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Æ’O’’’’’’’’’’’’’’’’’’’ńÆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!°’d’’’’’’’’’’’’’’’’’’’‘°’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’±°’’’’’’’’’’’’’’’’’’’’Ѱ’’’’’’’’’’’’’’’’’’’’ń°’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±’U’’’’’’’’’’’’’’’’’’’q±’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į±’S’’’’’’’’’’’’’’’’’’’!²’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q²’R’’’’’’’’’’’’’’’’’’’Ѳ’V’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q³’b’’’’’’’’’’’’’’’’’’’Į³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’“’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q“’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q“’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į“’’’’’’’’’’’’’’’’’’’’į“’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’ń“’’’’’’’’’’’’’’’’’’’’µ’’’’’’’’’’’’’’’’’’’’1µ’’’’’’’’’’’’’’’’’’’’Qµ’/’’’’’’’’’’’’’’’’’’’‘µ’.’’’’’’’’’’’’’’’’’’’Įµ’’’’’’’’’’’’’’’’’’’’įµ’’’’’’’’’’’’’’’’’’’’¶’’’’’’’’’’’’’’’’’’’’’’ FI; ’’’’’’’’’’’’!¶’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A¶’S’’’’’’’’’’’’’’’’’’’”¶’V’’’’’’’’’’’’’’’’’’’·’^’’’’’’’’’’’’’’’’’’’a·’M’’’’’’’’’’’’’’’’’’’±·’[’’’’’’’’’’’’’’’’’’’ø’Y’’’’’’’’’’’’’’’’’’’qø’R’’’’’’’’’’’’’’’’’’’Ńø’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!¹’5’’’’’’’’’’’’’’’’’’’a¹’?’’’’’’’’’’’’’’’’’’’±¹’1’’’’’’’’’’’’’’’’’’’ń¹’@’’’’’’’’’’’’’’’’’’’Aŗ’;’’’’’’’’’’’’’’’’’’’ŗ’1’’’’’’’’’’’’’’’’’’’Įŗ’8’’’’’’’’’’’’’’’’’’’’’ FI; ’’’’’’’’’»’’’’’’’’’’’’’’’’’’’’!»’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A»’W’’’’’’’’’’’’’’’’’’’”»’]’’’’’’’’’’’’’’’’’’’¼’_’’’’’’’’’’’’’’’’’’’q¼’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į¼’V’’’’’’’’’’’’’’’’’’’!½’T’’’’’’’’’’’’’’’’’’’½’V’’’’’’’’’’’’’’’’’’’į½’T’’’’’’’’’’’’’’’’’’’A¾’U’’’’’’’’’’’’’’’’’’’”¾’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń¾’Y’’’’’’’’’’’’’’’’’’’Qæ’Y’’’’’’’’’’’’’’’’’’’±æ’U’’’’’’’’’’’’’’’’’’’Ą’P’’’’’’’’’’’’’’’’’’’qĄ’V’’’’’’’’’’’’’’’’’’’ŃĄ’T’’’’’’’’’’’’’’’’’’’1Į’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Į’c’’’’’’’’’’’’’’’’’’’!Ā’F’’’’’’’’’’’’’’’’’’’qĀ’F’’’’’’’’’’’’’’’’’’’ĮĀ’F’’’’’’’’’’’’’’’’’’’Ć’E’’’’’’’’’’’’’’’’’’’aĆ’H’’’’’’’’’’’’’’’’’’’±Ć’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĆ’W’’’’’’’’’’’’’’’’’’’QÄ’F’’’’’’’’’’’’’’’’’’’”Ä’D’’’’’’’’’’’’’’’’’’’ńÄ’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Å’b’’’’’’’’’’’’’’’’’’’”Å’B’’’’’’’’’’’’’’’’’’’ńÅ’F’’’’’’’’’’’’’’’’’’’AĘ’F’’’’’’’’’’’’’’’’’’’‘Ę’H’’’’’’’’’’’’’’’’’’’įĘ’G’’’’’’’’’’’’’’’’’’’1Ē’B’’’’’’’’’’’’’’’’’’’Ē’D’’’’’’’’’’’’’’’’’’’ŃĒ’J’’’’’’’’’’’’’’’’’’’!Č’J’’’’’’’’’’’’’’’’’’’qČ’J’’’’’’’’’’’’’’’’’’’ĮČ’C’’’’’’’’’’’’’’’’’’’É’G’’’’’’’’’’’’’’’’’’’aÉ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”É’d’’’’’’’’’’’’’’’’’’’Ź’B’’’’’’’’’’’’’’’’’’’aŹ’F’’’’’’’’’’’’’’’’’’’±Ź’F’’’’’’’’’’’’’’’’’’’Ė’\’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aĖ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ė’’’’’’’’’’’’’’’’’’’’ĮĖ’’’’’’’’’’’’’’’’’’’’įĖ’S’’’’’’’’’’’’’’’’’’’AĢ’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ģ’’’’’’’’’’’’’’’’’’’’ĮĢ’’’’’’’’’’’’’’’’’’’’įĢ’O’’’’’’’’’’’’’’’’’’’AĶ’T’’’’’’’’’’’’’’’’’’’”Ķ’Q’’’’’’’’’’’’’’’’’’’Ī’U’’’’’’’’’’’’’’’’’’’aĪ’O’’’’’’’’’’’’’’’’’’’ĮĪ’T’’’’’’’’’’’’’’’’’’’!Ļ’R’’’’’’’’’’’’’’’’’’’Ļ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĻ’’’’’’’’’’’’’’’’’’’’įĻ’’’’’’’’’’’’’’’’’’’’Š’V’’’’’’’’’’’’’’’’’’’aŠ’T’’’’’’’’’’’’’’’’’’’ĮŠ’O’’’’’’’’’’’’’’’’’’’!Ń’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŃ’/’’’’’’’’’’’’’’’’’’’±Ń’’’’’’’’’’’’’’’’’’’’ŃŃ’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ņ’’’’’’’’’’’’’’’’’’’’QŅ’’’’’’’’’’’’’’’’’’’’qŅ’=’’’’’’’’’’’’’’’’’’’±Ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŅ’’’’’’’’’’’’’’’’’’’’ńŅ’’’’’’’’’’’’’’’’’’’’Ó’’’’’’’’’’’’’’’’’’’’1Ó’5’’’’’’’’’’’’’’’’’’’qÓ’’’’’’’’’’’’’’’’’’’’‘Ó’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ó’’’’’’’’’’’’’’’’’’’’ŃÓ’’’’’’’’’’’’’’’’’’’’ńÓ’O’’’’’’’’’’’’’’’’’’’QŌ’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ō’’’’’’’’’’’’’’’’’’’’”Ō’’’’’’’’’’’’’’’’’’’’ĮŌ’O’’’’’’’’’’’’’’’’’’’!Õ’6’’’’’’’’’’’’’’’’’’’aÕ’U’’’’’’’’’’’’’’’’’’’ĮÕ’L’’’’’’’’’’’’’’’’’’’Ö’S’’’’’’’’’’’’’’’’’’’qÖ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ö’’’’’’’’’’’’’’’’’’’’±Ö’*’’’’’’’’’’’’’’’’’’’įÖ’M’’’’’’’’’’’’’’’’’’’1×’T’’’’’’’’’’’’’’’’’’’‘×’R’’’’’’’’’’’’’’’’’’’ń×’T’’’’’’’’’’’’’’’’’’’QŲ’R’’’’’’’’’’’’’’’’’’’±Ų’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įŲ’:’’’’’’’’’’’’’’’’’’’!Ł’P’’’’’’’’’’’’’’’’’’’Ł’Q’’’’’’’’’’’’’’’’’’’įŁ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ś’’’’’’’’’’’’’’’’’’’’!Ś’’’’’’’’’’’’’’’’’’’’AŚ’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ś’’’’’’’’’’’’’’’’’’’’±Ś’’’’’’’’’’’’’’’’’’’’ŃŚ’S’’’’’’’’’’’’’’’’’’’1Ū’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ū’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ū’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įŪ’C’’’’’’’’’’’’’’’’’’’1Ü’+’’’’’’’’’’’’’’’’’’’aÜ’'’’’’’’’’’’’’’’’’’’’‘Ü’&’’’’’’’’’’’’’’’’’’’ĮÜ’%’’’’’’’’’’’’’’’’’’’ńÜ’#’’’’’’’’’’’’’’’’’’’!Ż’&’’’’’’’’’’’’’’’’’’’QŻ’&’’’’’’’’’’’’’’’’’’’Ż’+’’’’’’’’’’’’’’’’’’’±Ż’2’’’’’’’’’’’’’’’’’’’ńŻ’2’’’’’’’’’’’’’’’’’’’1Ž’2’’’’’’’’’’’’’’’’’’’qŽ’/’’’’’’’’’’’’’’’’’’’±Ž’0’’’’’’’’’’’’’’’’’’’ńŽ’0’’’’’’’’’’’’’’’’’’’1ß’+’’’’’’’’’’’’’’’’’’’aß’&’’’’’’’’’’’’’’’’’’’‘ß’"’’’’’’’’’’’’’’’’’’’Įß’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ą’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ą’^’’’’’’’’’’’’’’’’’’’‘ą’P’’’’’’’’’’’’’’’’’’’ńą’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1į’M’’’’’’’’’’’’’’’’’’’į’T’’’’’’’’’’’’’’’’’’’įį’S’’’’’’’’’’’’’’’’’’’Aā’Q’’’’’’’’’’’’’’’’’’’”ā’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ć’’’’’’’’’’’’’’’’’’’’Ać’;’’’’’’’’’’’’’’’’’’’ć’M’’’’’’’’’’’’’’’’’’’Ńć’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ä’’’’’’’’’’’’’’’’’’’’Aä’C’’’’’’’’’’’’’’’’’’’‘ä’R’’’’’’’’’’’’’’’’’’’ńä’T’’’’’’’’’’’’’’’’’’’Qå’Q’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’9’’’’’’’’’’’’’’’’’’’r’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’7’’’’’’’’’’’’’’’’’’’ņ’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’"’’’’’’’’’’’’’’’’’’’r’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'print' ’’’’’’’’’’’’’²’P’’’’’’’’’’’’’’’’’’’’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’M’’’’’’’’’’’’’’’’’’’’’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’9’’’’’’’’’’’’’’’’’’’"’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’7’’’’’’’’’’’’’’’’’’’¢’R’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’B’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’K’’’’’’’’’’’’’’’’’’’’U’’’’’’’’’’’’’’’’’’’b’N’’’’’’’’’’’’’’’’’’’²’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’b’O’’’’’’’’’’’’’’’’’’’Ā’M’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’J’’’’’’’’’’’’’’’’’’’‚’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’P’’’’’’’’’’’’’’’’’’’2 ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢ ’O’’’’’’’’’’’’’’’’’’’!’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R!’S’’’’’’’’’’’’’’’’’’’²!’M’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’""’N’’’’’’’’’’’’’’’’’’’r"’I’’’’’’’’’’’’’’’’’’’Ā"’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’#’K’’’’’’’’’’’’’’’’’’’b#’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’¢#’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā#’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’$’Q’’’’’’’’’’’’’’’’’’’r$’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²$’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’%’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R%’’’’’’’’’’’’’’’’’’’’r%’’’’’’’’’’’’’’’’’’’’’%’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā%’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ bewirkt: ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’&’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b&’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢&’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ&’!’’’’’’’’’’’’’’’’’’’'’#’’’’’’’’’’’’’’’’’’’2'’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R'’’’’’’’’’’’’’’’’’’’’r'’1’’’’’’’’’’’’’’’’’’’²'’9’’’’’’’’’’’’’’’’’’’ņ'’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2(’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’‚(’’’’’’’’’’’’’’’’’’’’¢(’J’’’’’’’’’’’’’’’’’’’ņ(’’’’’’’’’’’’’’’’’’’’)’N’’’’’’’’’’’’’’’’’’’R)’J’’’’’’’’’’’’’’’’’’’¢)’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā)’T’’’’’’’’’’’’’’’’’’’B*’K’’’’’’’’’’’’’’’’’’’’*’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ*’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"+’’’’’’’’’’’’’’’’’’’’B+’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚+’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ+’A’’’’’’’’’’’’’’’’’’’",’T’’’’’’’’’’’’’’’’’’’‚,’S’’’’’’’’’’’’’’’’’’’ā,’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’-’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R-’’’’’’’’’’’’’’’’’’’’r-’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢-’’’’’’’’’’’’’’’’’’’’Ā-’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā-’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’2.’’’’’’’’’’’’’’’’’’’’R.’@’’’’’’’’’’’’’’’’’’’¢.’R’’’’’’’’’’’’’’’’’’’/’Q’’’’’’’’’’’’’’’’’’’b/’P’’’’’’’’’’’’’’’’’’’Ā/’R’’’’’’’’’’’’’’’’’’’"0’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B0’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ PUBLIC ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’0’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢0’(’’’’’’’’’’’’’’’’’’’Ņ0’’’’’’’’’’’’’’’’’’’’ņ0’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’’"1’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B1’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ bewirkt: ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’1’M’’’’’’’’’’’’’’’’’’’’’ PUBLIC ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā1’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ1’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’22’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R2’’’’’’’’’’’’’’’’’’’’b2’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚2’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ2’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ2’>’’’’’’’’’’’’’’’’’’’23’T’’’’’’’’’’’’’’’’’’’’3’N’’’’’’’’’’’’’’’’’’’ā3’K’’’’’’’’’’’’’’’’’’’24’O’’’’’’’’’’’’’’’’’’’’4’N’’’’’’’’’’’’’’’’’’’ā4’M’’’’’’’’’’’’’’’’’’’25’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R5’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r5’O’’’’’’’’’’’’’’’’’’’Ņ5’S’’’’’’’’’’’’’’’’’’’26’S’’’’’’’’’’’’’’’’’’’’6’Q’’’’’’’’’’’’’’’’’’’ņ6’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B7’T’’’’’’’’’’’’’’’’’’’¢7’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ7’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"8’U’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚8’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²8’L’’’’’’’’’’’’’’’’’’’9’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’29’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b9’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’9’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā9’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'archive' ’’’’’’’’’’’ņ9’<’’’’’’’’’’’’’’’’’’’2:’N’’’’’’’’’’’’’’’’’’’‚:’T’’’’’’’’’’’’’’’’’’’ā:’P’’’’’’’’’’’’’’’’’’’’’ chen. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'release' ’’’’’’’’’’’B;’9’’’’’’’’’’’’’’’’’’’‚;’N’’’’’’’’’’’’’’’’’’’Ņ;’H’’’’’’’’’’’’’’’’’’’"<’S’’’’’’’’’’’’’’’’’’’‚<’Q’’’’’’’’’’’’’’’’’’’ā<’R’’’’’’’’’’’’’’’’’’’B=’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'clear' ’’’’’’’’’’’’’‚=’7’’’’’’’’’’’’’’’’’’’Ā=’Q’’’’’’’’’’’’’’’’’’’">’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B>’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’>’’’’’’’’’’’’’’’’’’’’²>’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā>’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2?’O’’’’’’’’’’’’’’’’’’’’?’T’’’’’’’’’’’’’’’’’’’ņ?’Q’’’’’’’’’’’’’’’’’’’R@’_’’’’’’’’’’’’’’’’’’’Ā@’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ@’M’’’’’’’’’’’’’’’’’’’BA’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #foot# ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rA’<’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²A’K’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'format' ’’’’’’’’’’’’B’8’’’’’’’’’’’’’’’’’’’RB’Q’’’’’’’’’’’’’’’’’’’²B’O’’’’’’’’’’’’’’’’’’’C’Q’’’’’’’’’’’’’’’’’’’rC’U’’’’’’’’’’’’’’’’’’’ŅC’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņC’1’’’’’’’’’’’’’’’’’’’2D’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rD’l’’’’’’’’’’’’’’’’’’’āD’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’E’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RE’’’’’’’’’’’’’’’’’’’’rE’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’E’’’’’’’’’’’’’’’’’’’’²E’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅE’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"F’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RF’M’’’±å’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įå’4’’’’’’’’’’’’’’’’’’’!ę’L’’’’’’’’’’’’’’’’’’’qę’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ę’’’’’’’’’’’’’’’’’’’’±ę’$’’’’’’’’’’’’’’’’’’’įę’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#get#ie# ’’’’’’’’’1ē’@’’’’’’’’’’’’’’’’’’’ē’R’’’’’’’’’’’’’’’’’’’įē’S’’’’’’’’’’’’’’’’’’’Ač’T’’’’’’’’’’’’’’’’’’’”č’U’’’’’’’’’’’’’’’’’’’é’N’’’’’’’’’’’’’’’’’’’Qé’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”é’(’’’’’’’’’’’’’’’’’’’Ńé’.’’’’’’’’’’’’’’’’’’’ź’8’’’’’’’’’’’’’’’’’’’Aź’-’’’’’’’’’’’’’’’’’’’qź’,’’’’’’’’’’’’’’’’’’’”ź’8’’’’’’’’’’’’’’’’’’’įź’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ė’’’’’’’’’’’’’’’’’’’’!ė’0’’’’’’’’’’’’’’’’’’’aė’C’’’’’’’’’’’’’’’’’’’±ė’M’’’’’’’’’’’’’’’’’’’ģ’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qģ’’’’’’’’’’’’’’’’’’’’qģ’C’’’’’’’’’’’’’’’’’’’Įģ’N’’’’’’’’’’’’’’’’’’’ķ’R’’’’’’’’’’’’’’’’’’’qķ’O’’’’’’’’’’’’’’’’’’’Ńķ’(’’’’’’’’’’’’’’’’’’’ī’N’’’’’’’’’’’’’’’’’’’Qī’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ī’0’’’’’’’’’’’’’’’’’’’įī’8’’’’’’’’’’’’’’’’’’’!ļ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aļ’ ’’’’’’’’’’’’’’’’’’’qļ’’’’’’’’’’’’’’’’’’’’‘ļ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ļ’4’’’’’’’’’’’’’’’’’’’ńļ’R’’’’’’’’’’’’’’’’’’’Qš’D’’’’’’’’’’’’’’’’’’’”š’’’’’’’’’’’’’’’’’’’’Įš’’’’’’’’’’’’’’’’’’’’įš’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#link#ie# ’’’’’’’’ń’8’’’’’’’’’’’’’’’’’’’Qń’P’’’’’’’’’’’’’’’’’’’±ń’S’’’’’’’’’’’’’’’’’’’ņ’W’’’’’’’’’’’’’’’’’’’qņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#name#ie# ’’’’’’’’‘ņ’9’’’’’’’’’’’’’’’’’’’Ńņ’M’’’’’’’’’’’’’’’’’’’!ó’S’’’’’’’’’’’’’’’’’’’ó’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ó’’’’’’’’’’’’’’’’’’’’Ńó’8’’’’’’’’’’’’’’’’’’’ō’T’’’’’’’’’’’’’’’’’’’qō’Q’’’’’’’’’’’’’’’’’’’Ńō’Z’’’’’’’’’’’’’’’’’’’1õ’7’’’’’’’’’’’’’’’’’’’qõ’’’’’’’’’’’’’’’’’’’’‘õ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įõ’D’’’’’’’’’’’’’’’’’’’ö’O’’’’’’’’’’’’’’’’’’’qö’’’’’’’’’’’’’’’’’’’’”ö’’’’’’’’’’’’’’’’’’’’Įö’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńö’’’’’’’’’’’’’’’’’’’’÷’’’’’’’’’’’’’’’’’’’’1÷’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’:= ’’’’’’’’’’’’’’’’’’a÷’8’’’’’’’’’’’’’’’’’’’”÷’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į÷’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń÷’^’’’’’’’’’’’’’’’’’’’Qų’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#ALL#ie# ’’’’’’’’’‘ų’(’’’’’’’’’’’’’’’’’’’Įų’M’’’’’’’’’’’’’’’’’’’ł’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ł’-’’’’’’’’’’’’’’’’’’’ał’O’’’’’’’’’’’’’’’’’’’Įł’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#all#ie# ’’’’’’’’’ś’’’’’’’’’’’’’’’’’’’’!ś’R’’’’’’’’’’’’’’’’’’’ś’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#LIKE#ie# ’’’’’’’’±ś’F’’’’’’’’’’’’’’’’’’’ū’O’’’’’’’’’’’’’’’’’’’aū’1’’’’’’’’’’’’’’’’’’’”ū’Q’’’’’’’’’’’’’’’’’’’ü’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#SOME#ie# ’’’’’’’’!ü’3’’’’’’’’’’’’’’’’’’’aü’K’’’’’’’’’’’’’’’’’’’±ü’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ż’)’’’’’’’’’’’’’’’’’’’1ż’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aż’.’’’’’’’’’’’’’’’’’’’‘ż’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įż’’’’’’’’’’’’’’’’’’’’įż’8’’’’’’’’’’’’’’’’’’’!ž’O’’’’’’’’’’’’’’’’’’’ž’O’’’’’’’’’’’’’’’’’’’įž’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’’:’’’’’’’’’’’’’’’’’’’a’’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’’%’’’’’’’’’’’’’’’’’’’Ń’’5’’’’’’’’’’’’’’’’’’’’Q’’’’’’’’’’’’’’’’’’’r’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’+ ’’’’’’’’’’’’’’’’’’’¢’2’’’’’’’’’’’’’’’’’’’ā’B’’’’’’’’’’’’’’’’’’’2’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’=’’’’’’’’’’’’’’’’’’’Ā’O’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’- ’’’’’’’’’’’’’’’’’’’B’2’’’’’’’’’’’’’’’’’’’‚’Q’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’=’’’’’’’’’’’’’’’’’’’B’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’/ ’’’’’’’’’’’’’’’’’’’‚’2’’’’’’’’’’’’’’’’’’’Ā’%’’’’’’’’’’’’’’’’’’’ņ’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#do#ie# ’’’’’’’’’’B’D’’’’’’’’’’’’’’’’’’’’’P’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’5’’’’’’’’’’’’’’’’’’’R’:’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’Ā’,’’’’’’’’’’’’’’’’’’’ņ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’@’’’’’’’’’’’’’’’’’’’’’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’ņ’,’’’’’’’’’’’’’’’’’’’"’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’@’’’’’’’’’’’’’’’’’’’²’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’)’’’’’’’’’’’’’’’’’’’B’Q’’’’’’’’’’’’’’’’’’’¢’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’ ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B ’’’’’’’’’’’’’’’’’’’’b ’-’’’’’’’’’’’’’’’’’’’’ ’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā ’’’’’’’’’’’’’’’’’’’’ ’-’’’’’’’’’’’’’’’’’’’2 ’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚ ’’’’’’’’’’’’’’’’’’’’¢ ’’’’’’’’’’’’’’’’’’’’Ā ’P’’’’’’’’’’’’’’’’’’’" ’’’’’’’’’’’’’’’’’’’’B ’#’’’’’’’’’’’’’’’’’’’r ’R’’’’’’’’’’’’’’’’’’’Ņ ’3’’’’’’’’’’’’’’’’’’’ ’D’’’’’’’’’’’’’’’’’’’b ’L’’’’’’’’’’’’’’’’’’’² ’’’’’’’’’’’’’’’’’’’’Ņ ’*’’’’’’’’’’’’’’’’’’’ ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#save#ie# ’’’’’’’’B ’+’’’’’’’’’’’’’’’’’’’r ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’² ’?’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’B’(’’’’’’’’’’’’’’’’’’’r’Q’’’’’’’’’’’’’’’’’’’Ņ’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’B’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’&’’’’’’’’’’’’’’’’’’’²’(’’’’’’’’’’’’’’’’’’’ā’!’’’’’’’’’’’’’’’’’’’’(’’’’’’’’’’’’’’’’’’’B’4’’’’’’’’’’’’’’’’’’’‚’-’’’’’’’’’’’’’’’’’’’²’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’W’’’’’’’’’’’’’’’’’’’Ā’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’P’’’’’’’’’’’’’’’’’’’r’O’’’’’’’’’’’’’’’’’’’’’ arbeiten. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’B’ ’’’’’’’’’’’’’’’’’’’r’?’’’’’’’’’’’’’’’’’’’Ā’2’’’’’’’’’’’’’’’’’’’’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’/’’’’’’’’’’’’’’’’’’’‚’P’’’’’’’’’’’’’’’’’’’ā’P’’’’’’’’’’’’’’’’’’’B’P’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#yes#ie# ’’’’’’’’’Ā’)’’’’’’’’’’’’’’’’’’’ņ’L’’’’’’’’’’’’’’’’’’’B’Q’’’’’’’’’’’’’’’’’’’¢’K’’’’’’’’’’’’’’’’’’’ņ’J’’’’’’’’’’’’’’’’’’’B’O’’’’’’’’’’’’’’’’’’’¢’ ’’’’’’’’’’’’’’’’’’’Ņ’>’’’’’’’’’’’’’’’’’’’’<’’’’’’’’’’’’’’’’’’’R’K’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’Ā’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#no#ie# ’’’’’’’’’’’(’’’’’’’’’’’’’’’’’’’2’L’’’’’’’’’’’’’’’’’’’‚’A’’’’’’’’’’’’’’’’’’’Ņ’<’’’’’’’’’’’’’’’’’’’’>’’’’’’’’’’’’’’’’’’’R’K’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’Ā’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#say#ie# ’’’’’’’’’’#’’’’’’’’’’’’’’’’’’’2’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²’O’’’’’’’’’’’’’’’’’’’’N’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢F’’’’’’’’’’’’’’’’’’’’ĀF’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āF’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’G’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bG’R’’’’’’’’’’’’’’’’’’’ĀG’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņG’H’’’’’’’’’’’’’’’’’’’BH’Q’’’’’’’’’’’’’’’’’’’¢H’K’’’’’’’’’’’’’’’’’’’ņH’O’’’’’’’’’’’’’’’’’’’’’ ben. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RI’M’’’’’’’’’’’’’’’’’’’¢I’(’’’’’’’’’’’’’’’’’’’ŅI’5’’’’’’’’’’’’’’’’’’’J’5’’’’’’’’’’’’’’’’’’’RJ’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’J’O’’’’’’’’’’’’’’’’’’’ņJ’T’’’’’’’’’’’’’’’’’’’RK’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #on("b")# ’’’’’’’’’’’’K’P’’’’’’’’’’’’’’’’’’’ņK’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BL’L’’’’’’’’’’’’’’’’’’’’L’E’’’’’’’’’’’’’’’’’’’’’ #off("b")# ’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'check' ’’’’’’’’’’’’’āL’J’’’’’’’’’’’’’’’’’’’2M’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚M’G’’’’’’’’’’’’’’’’’’’ŅM’S’’’’’’’’’’’’’’’’’’’’’ sind. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2N’N’’’’’’’’’’’’’’’’’’’‚N’M’’’’’’’’’’’’’’’’’’’ŅN’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’O’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RO’’’’’’’’’’’’’’’’’’’’rO’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’’²O’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āO’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2P’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚P’’’’’’’’’’’’’’’’’’’’¢P’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀP’’’’’’’’’’’’’’’’’’’’āP’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RQ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚Q’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅQ’’’’’’’’’’’’’’’’’’’’ņQ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BR’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²R’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’S’’’’’’’’’’’’’’’’’’’’"S’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BS’’’’’’’’’’’’’’’’’’’’bS’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’S’’’’’’’’’’’’’’’’’’’’²S’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āS’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2T’*’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’bT’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²T’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’U’$’’’’’’’’’’’’’’’’’’’2U’$’’’’’’’’’’’’’’’’’’’bU’$’’’’’’’’’’’’’’’’’’’’U’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀU’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’V’’’’’’’’’’’’’’’’’’’’BV’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’V’’’’’’’’’’’’’’’’’’’’²V’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅV’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’"W’’’’’’’’’’’’’’’’’’’’BW’L’’’’’’’’’’’’’’’’’’’’’ chiv-System ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’W’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āW’’’’’’’’’’’’’’’’’’’’X’’’’’’’’’’’’’’’’’’’’"X’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RX’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢X’J’’’’’’’’’’’’’’’’’’’ņX’R’’’’’’’’’’’’’’’’’’’RY’S’’’’’’’’’’’’’’’’’’’²Y’X’’’’’’’’’’’’’’’’’’’Z’J’’’’’’’’’’’’’’’’’’’bZ’P’’’’’’’’’’’’’’’’’’’ĀZ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āZ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2[’’’’’’’’’’’’’’’’’’’’R[’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚[’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ[’Q’’’’’’’’’’’’’’’’’’’’’ gelesen. ’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2\’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b\’"’’’’’’’’’’’’’’’’’’’’\’U’’’’’’’’’’’’’’’’’’’ņ\’’’’’’’’’’’’’’’’’’’’]’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R]’&’’’’’’’’’’’’’’’’’’’‚]’,’’’’’’’’’’’’’’’’’’’²]’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’^’!’’’’’’’’’’’’’’’’’’’2^’+’’’’’’’’’’’’’’’’’’’b^’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’^’’’’’’’’’’’’’’’’’’’’²^’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā^’ ’’’’’’’’’’’’’’’’’’’_’<’’’’’’’’’’’’’’’’’’’R_’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚_’’’’’’’’’’’’’’’’’’’’¢_’M’’’’’’’’’’’’’’’’’’’ņ_’’’’’’’’’’’’’’’’’’’’`’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B`’M’’’’’’’’’’’’’’’’’’’’`’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ`’#’’’’’’’’’’’’’’’’’’’a’=’’’’’’’’’’’’’’’’’’’Ba’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚a’’’’’’’’’’’’’’’’’’’’¢a’Q’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’b’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Rb’*’’’’’’’’’’’’’’’’’’’‚b’A’’’’’’’’’’’’’’’’’’’Ņb’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņb’A’’’’’’’’’’’’’’’’’’’Bc’<’’’’’’’’’’’’’’’’’’’‚c’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Āc’’’’’’’’’’’’’’’’’’’’āc’O’’’’’’’’’’’’’’’’’’’Bd’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rd’/’’’’’’’’’’’’’’’’’’’²d’P’’’’’’’’’’’’’’’’’’’e’.’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’''''’’N#headandbottom("1","EUMEL-Benutzerhandbuch","TEIL 4 : Kommandosprache","4")# ’>#pagenr("%",1)##setcount(1)##block##pageblock# ’’’’’’’’’’’’’’’.#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’.#center#TEIL 4 : Kommandosprache ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’4 - % #right#GMD ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #right#4 - % ’’’’’’’’’’’’’TEIL 4: Kommandosprache ’’’’’NIn Teil 4 sind diejenigen Kommandos beschrieben, die erfahrungsgemŁū eher der’NHandhabung der Arbeitsumgebung zuzurechnen sind. Es ist den Verfassern bewuūt,^daū Auswahl und Zusammenstellung recht willkŪrlich sind, weil eine klare Abgrenzung’’’’’’’’’’’Nzum Teil 5, welcher die Kommandos, die dem Thema: 'Programmierung' zugeordnet’werden, nicht mŚglich ist. ’’’Der Teil 4 ist in die Themen: >- 4.1. Supervisor-Kommandos ’’’’’’’’’’’’’’>- 4.2.1 Hilfs- und Informationsprozeduren ’.- 4.2.2 Thesaurus ’’’’’’’’’.- 4.2.3 Tasks ’’’’’’’’’’’’’>- 4.2.4 Handhabung von Dateien ’’’’’’’’’’’’.- 4.2.5 Editor ’’’’’’’’’’’’.- 4.2.6 Dateitransfer ’’’’’.- 4.2.7 Passwortschutz ’’’’.- 4.2.8 Archiv ’’’’’’’’’’’’Ngegliedert. Insbesondere zu 4.2.4 ist anzumerken, daū nur Kommandos, die ganze^Dateien betreffen hier erlŁutert sind. Kommandos, die Dateiinhalte betreffen (Suchen,’’’’’’’’’>Ersetzen etc.) sind in 3.5, bzw. 5.3 beschrieben. ’’’’’’’’’’’’4.1 Supervisor ’’’’’’’’’’’’’’NEs gibt genau sieben vom Supervisor akzeptierte Kommandos. Diese Kommandos’’’’NkŚnnen gegeben werden wenn nacb’P’’’’’’’’’’’’’’’’’’’Ā’T’’’’’’’’’’’’’’’’’’’"’I’’’’’’’’’’’’’’’’’’’r’Q’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’&’’’’’’’’’’’’’’’’’’’"’O’’’’’’’’’’’’’’’’’’’‚’R’’’’’’’’’’’’’’’’’’’ā’P’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’'’’’’’’’’’’’’’’’’’’’Ā’Q’’’’’’’’’’’’’’’’’’’" ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#std#ie# ’’’’’’’’’B ’’’’’’’’’’’’’’’’’’’’b ’R’’’’’’’’’’’’’’’’’’’Ā ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2!’Y’’’’’’’’’’’’’’’’’’’’!’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ!’’’’’’’’’’’’’’’’’’’’ņ!’H’’’’’’’’’’’’’’’’’’’B"’W’’’’’’’’’’’’’’’’’’’¢"’S’’’’’’’’’’’’’’’’’’’#’M’’’’’’’’’’’’’’’’’’’R#’K’’’’’’’’’’’’’’’’’’’¢#’J’’’’’’’’’’’’’’’’’’’ņ#’N’’’’’’’’’’’’’’’’’’’B$’K’’’’’’’’’’’’’’’’’’’’$’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ$’1’’’’’’’’’’’’’’’’’’’%’O’’’’’’’’’’’’’’’’’’’r%’O’’’’’’’’’’’’’’’’’’’Ņ%’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"&’’’’’’’’’’’’’’’’’’’’B&’B’’’’’’’’’’’’’’’’’’’’&’5’’’’’’’’’’’’’’’’’’’Ņ&’D’’’’’’’’’’’’’’’’’’’"'’6’’’’’’’’’’’’’’’’’’’b'’I’’’’’’’’’’’’’’’’’’’²'’R’’’’’’’’’’’’’’’’’’’(’I’’’’’’’’’’’’’’’’’’’b(’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’(’C’’’’’’’’’’’’’’’’’’’ā(’;’’’’’’’’’’’’’’’’’’’")’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚)’’’’’’’’’’’’’’’’’’’’¢)’ ’’’’’’’’’’’’’’’’’’’Ņ)’O’’’’’’’’’’’’’’’’’’’2*’'’’’’’’’’’’’’’’’’’’’b*’<’’’’’’’’’’’’’’’’’’’¢*’<’’’’’’’’’’’’’’’’’’’ā*’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"+’’’’’’’’’’’’’’’’’’’’R+’F’’’’’’’’’’’’’’’’’’’¢+’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā+’M’’’’’’’’’’’’’’’’’’’2,’L’’’’’’’’’’’’’’’’’’’‚,’M’’’’’’’’’’’’’’’’’’’Ņ,’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’-’’’’’’’’’’’’’’’’’’’’2-’’’’’’’’’’’’’’’’’’’’R-’’’’’’’’’’’’’’’’’’’’r-’’’’’’’’’’’’’’’’’’’’’-’’’’’’’’’’’’’’’’’’’’²-’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā-’J’’’’’’’’’’’’’’’’’’’2.’N’’’’’’’’’’’’’’’’’’’‚.’Q’’’’’’’’’’’’’’’’’’’ā.’L’’’’’’’’’’’’’’’’’’’2/’O’’’’’’’’’’’’’’’’’’’’/’P’’’’’’’’’’’’’’’’’’’ņ/’R’’’’’’’’’’’’’’’’’’’R0’K’’’’’’’’’’’’’’’’’’’¢0’Q’’’’’’’’’’’’’’’’’’’1’J’’’’’’’’’’’’’’’’’’’R1’L’’’’’’’’’’’’’’’’’’’¢1’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā1’4’’’’’’’’’’’’’’’’’’’2’5’’’’’’’’’’’’’’’’’’’B2’D’’’’’’’’’’’’’’’’’’’’2’6’’’’’’’’’’’’’’’’’’’Ņ2’N’’’’’’’’’’’’’’’’’’’"3’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b3’’’’’’’’’’’’’’’’’’’’‚3’’’’’’’’’’’’’’’’’’’’¢3’M’’’’’’’’’’’’’’’’’’’ņ3’R’’’’’’’’’’’’’’’’’’’R4’N’’’’’’’’’’’’’’’’’’’¢4’T’’’’’’’’’’’’’’’’’’’5’0’’’’’’’’’’’’’’’’’’’B5’'’’’’’’’’’’’’’’’’’’’r5’’’’’’’’’’’’’’’’’’’’’5’’’’’’’’’’’’’’’’’’’’²5’7’’’’’’’’’’’’’’’’’’’ņ5’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"6’’’’’’’’’’’’’’’’’’’’B6’’’’’’’’’’’’’’’’’’’’b6’M’’’’’’’’’’’’’’’’’’’²6’P’’’’’’’’’’’’’’’’’’’7’T’’’’’’’’’’’’’’’’’’’r7’P’’’’’’’’’’’’’’’’’’’Ņ7’K’’’’’’’’’’’’’’’’’’’"8’K’’’’’’’’’’’’’’’’’’’r8’K’’’’’’’’’’’’’’’’’’’Ā8’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā8’’’’’’’’’’’’’’’’’’’’9’’’’’’’’’’’’’’’’’’’’"9’K’’’’’’’’’’’’’’’’’’’r9’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²9’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ9’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’":’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b:’’’’’’’’’’’’’’’’’’’’‚:’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢:’ ’’’’’’’’’’’’’’’’’’’Ņ:’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ:’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’;’’’’’’’’’’’’’’’’’’’’2;’’’’’’’’’’’’’’’’’’’’b;’2’’’’’’’’’’’’’’’’’’’¢;’/’’’’’’’’’’’’’’’’’’’ā;’2’’’’’’’’’’’’’’’’’’’"<’/’’’’’’’’’’’’’’’’’’’b<’’’’’’’’’’’’’’’’’’’’’’ PER ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚<’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢<’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā<’’’’’’’’’’’’’’’’’’’’ā<’’’’’’’’’’’’’’’’’’’’=’"’’’’’’’’’’’’’’’’’’’2=’+’’’’’’’’’’’’’’’’’’’b=’’’’’’’’’’’’’’’’’’’’‚=’"’’’’’’’’’’’’’’’’’’’²=’+’’’’’’’’’’’’’’’’’’’ā=’’’’’’’’’’’’’’’’’’’’>’!’’’’’’’’’’’’’’’’’’’2>’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R>’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r>’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢>’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ>’’’’’’’’’’’’’’’’’’’’ņ>’’’’’’’’’’’’’’’’’’’’"?’:’’’’’’’’’’’’’’’’’’’b?’A’’’’’’’’’’’’’’’’’’’²?’’’’’’’’’’’’’’’’’’’’Ņ?’’’’’’’’’’’’’’’’’’’’ņ?’’’’’’’’’’’’’’’’’’’’@’’’’’’’’’’’’’’’’’’’’’’ FI ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2@’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R@’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r@’’’’’’’’’’’’’’’’’’’’’@’’’’’’’’’’’’’’’’’’’’²@’’’’’’’’’’’’’’’’’’’’Ņ@’*’’’’’’’’’’’’’’’’’’’A’S’’’’’’’’’’’’’’’’’’’bA’’’’’’’’’’’’’’’’’’’’‚A’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢A’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀA’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņA’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’V’’’’’’’’’’’’’’’’’’’rB’V’’’’’’’’’’’’’’’’’’’ŅB’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņB’’’’’’’’’’’’’’’’’’’’C’’’’’’’’’’’’’’’’’’’’2C’K’’’’’’’’’’’’’’’’’’’‚C’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ REP ’’’’’’’’’’’’²C’(’’’’’’’’’’’’’’’’’’’āC’9’’’’’’’’’’’’’’’’’’’"D’%’’’’’’’’’’’’’’’’’’’’’ PER. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RD’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚D’U’’’’’’’’’’’’’’’’’’’āD’U’’’’’’’’’’’’’’’’’’’BE’S’’’’’’’’’’’’’’’’’’’¢E’{’’’’’’’’’’’’’’’’’’’’’wurde. ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"F’’’’’’’’’’’’’’’’’’’’BF’’’’’’’’’’’’’’’’’’’’bF’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’:= ’’’’’’’’’’’’’’’’’’¢F’4’’’’’’’’’’’’’’’’’’’āF’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"G’’’’’’’’’’’’’’’’’’’’BG’/’’’’’’’’’’’’’’’’’’’‚G’L’’’’’’’’’’’’’’’’’’’ŅG’O’’’’’’’’’’’’’’’’’’’2H’)’’’’’’’’’’’’’’’’’’’bH’O’’’’’’’’’’’’’’’’’’’ĀH’T’’’’’’’’’’’’’’’’’’’"I’O’’’’’’’’’’’’’’’’’’’‚I’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢I’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅI’/’’’’’’’’’’’’’’’’’’’J’"’’’’’’’’’’’’’’’’’’’BJ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rJ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢J’,’’’’’’’’’’’’’’’’’’’ŅJ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņJ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’K’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BK’,’’’’’’’’’’’’’’’’’’’rK’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’K’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²K’*’’’’’’’’’’’’’’’’’’’āK’.’’’’’’’’’’’’’’’’’’’L’&’’’’’’’’’’’’’’’’’’’BL’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bL’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚L’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²L’Y’’’’’’’’’’’’’’’’’’’M’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RM’R’’’’’’’’’’’’’’’’’’’²M’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#AND#ie# ’’’’’’’’’ŅM’(’’’’’’’’’’’’’’’’’’’N’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’h dem Einschalten des GerŁts oder dem Abkoppeln’Neiner Task die SV-Taste gedrŪckt wurde und die sogenannte EUMEL-Tapete’’’’’’’’N____________________________________________________________________________ ’> Terminal 2 ’’’’’’’. EUMEL Version 1.8.1/M ’’’’. gib supervisor kommando: ’’’’’’’’’’’’’ ESC ? --> help ’’’’’’’’’’’’> ESC b --> begin("") ESC h --> halt ’’’’’’’’’’’’’> ESC c --> continue("") ESC s --> storage info ’’’’’> ESC q --> break ESC t --> task info ’’’’’’’’N____________________________________________________________________________ ’NDesweiteren kann in einer Task gedrŪckt werden, um durch einen’Programmabbruch einzuleiten. ’^Im Gegensatz zu den im weiteren beschriebenen, durch ELAN Prozeduren realisierten’’’’’’’’’’’’’NKommandos, sind diese Supervisor-Kommandos nicht als Prozeduren im System und’.mithin nicht durch 'help (...)' anzeigbar. ’’’> #on("b")#PROC begin (TEXT CONST taskname) #off("b")# ’’’’’’> Richtet eine neue Task als Sohn von PUBLIC ein. ’’’’’’’’’’’N #on("b")#PROC begin (TEXT CONST taskname, vatertask) #off("b")# ’’’’’’’’’’’^ Richtet eine neue Task als Sohn der Task 'vatertask' ein, falls die Vater-Task’’’’’’’’’’’’’^ eine Manager-Task ist. Falls diese Task keinen Managerstatus besitzt, passiert’’’’’’’’’’’’’N nichts! In diesem Falle muū das Kommando durch abgebrochen werden. ’’’. FEHLER : "taskname" existiert bereits ’’’’. "vatertask" gibt es nicht ’’’’’’’> #on("b")#PROC continue (TEXT CONST taskname) #off("b")# ’’’N Eine existierende Task wird an das Terminal des Benutzers angekoppelt. ’’’’. FEHLER : "taskname" gibt es nicht ’’’’’’’’^ Falls 'begin' oder 'continue' trotz korrekter Voraussetzungen kein Resultat zeigen,’’’’’’’’^ 'hŁngt' die betroffene Task. Beim 'begin' Kommando kann das der Fall sein, falls’’’’’’’’’’’^ die Vater-Task nicht durch 'break' abgekoppelt wurde, sondern mit < SV > verlasŻ’’’’’’’’’’’N sen wurde. In diesem Fall muū das Kommando durch abgebrochen werden,’’N die Vater-Task angekoppelt und mit korrekt abgekoppelt werden. ’’. #on("b")#PROC break #off("b")# ’’’’’’’’’’’’. Das Terminal wird vom Rechner abgekoppelt. . #on("b")#PROC halt #off("b")# ’’’’’’’’’’’’’N Das laufende Programm der dem Terminal aktuell zugeordneten Task wird abgeŻ^ Falls in der an das Terminal gekoppelten Task ein laufendes Programm abgebroŻ’’’’’’’’’’’’’’N chen werden soll, muū zunŁchst durch der Supervisor aufgerufen werden.N Durch das Supervisor-Kommando 'halt' wird der Fehler 'halt from terminal'’’^ induziert. Das Programm wird wie durch jeden anderen Fehler abgebrochen, falls’’’’’’’’’’’’’. nicht 'disable stop' gesetzt wurde! ’’’’’’’'storage info' ’’’’’’’’’’’’’’’. #on("b")#PROC storage info #off("b")# ’’’’’^ Informationsprozedur Ūber den belegten und den verfŪgbaren Hintergrund-SpeiŻ’’’’’’’’’’’’’’’> cher des gesamten Systems in KByte#u#1)#e#. ’’’’’’’’’’’’’’’^ 1) Bei der derzeit aktuellen '+' Version EUMEL 1.8.1/M+ sind die beiden AngaŻ’’’’’’’’’’’’’’. ben mit 4 zu multiplizieren ! ’’’’’’’’’’. Das Terminal wird unmittelbar abgekoppelt! . #on("b")#PROC task info #off("b")# ’’’’’’’’^ Informiert Ūber alle Tasknamen im System unter gleichzeitiger Angabe der Vater/’’’’’’’’’’’’. Sohn-Beziehungen durch EinrŪckungen. ’’’’’’. #on("b")#PROC help #off("b")# ’’’’’’’’’’’’’. Kurzbeschreibung der SV-Kommandos. ’’’’’’’’NUnter dem Stichwort Monitor-Kommandos sind an dieser Stelle Kommandos beŻ’’’’’Nschrieben, die stŁndig zur Handhabung der Arbeitsumgebung benutzt werden.’’’’’^Gleichwohl sei sofort darauf hingewiesen, daū jedes ELAN Programm dem Monitor zur’’’’’’’’’’’’’NAusfŪhrung Ūbergeben werden kann. Es gibt also keine speziellen Monitor-’’’’’’NKommandos, sondern nur eine Reihe von Prozeduren (=Kommandos), die in dieser’’>Umgebung erfahrungsgemŁū besonders hŁufig benutzt werden. ’’’’>#on("u")#4.2.1 Hilfs- und Informationsprozeduren#off("u")# ’’>- Pakete, Prozeduren : packets, bulletin , help ’’’’’’’>- Tasksystem zeigen : task info , task status ’’’’’’’’>- Speicherplatz zeigen : storage , storage info ’’’’’’’’’.#on("u")#4.2.2 Thesaurus #off("u")# ’’’’’’’’’>- besondere Thesauri : ALL , all , SOME , remainder ’’’.- VerknŪpfung : + , - , / ’’’’’.#on("u")#4.2.3 Taskoperationen#off("u")# ’’’’N- besondere Tasknamen : archive , brother , father , myself ’’’’’’’’’’’’N printer , public , son , supervisor ’’’’’’’’’’’’.- Terminal abkoppeln : break ’’’’’’’’’’.- Task lŚschen : end ’’’’’’’’’’’’N- Manager-Task : global manager , free global manager ’’’’’’’’’’’.- Umbenennen der Task : rename myself ’’>#on("u")#4.2.4 Handhabung von Dateien #off("u")# ’’’’’’’’’’’’N : copy , edit , forget , list , rename , show ’’’’.#on("u")#4.2.5 Editor #off("u")# ’’’’’’’’’’’’>- Editieren : edit , editget , show ’’’’’’’’’’>- Tastenbelegung : kommando auf taste (legen) , ’’’> lernsequenz auf taste (legen) , > std tastenbelegung , ’’’’’’’’’’’> taste enthŁlt kommando , ’’’’’’’. word wrap ’’’’’’.#on("u")#4.2.6 Transfer #off("u")# ’’’’’’’’’’>- Datei holen : fetch , fetchall ’’’’’’’’’’’’’’’.- Datei senden : save , saveall ’.- Drucken : print ’’’’’’’’’’.- Datei lŚschen : erase ’’’’’’’’’’.#on("u")#4.2.7 Passwortschutz #off("u")# ’’’’.- 'begin' absichern : begin password ’.- 'continue' absichern : task password ’’.- Dateien absichern : enter password ’.- Systemzweig sichern : family password .#on("u")#4.2.8 Das Archiv #off("u")# ’’’’’’’’>- Reservieren/freigeben : archive , release ’’’’’’’’’’’’’’.- Formatieren : format ’’’’’’’’’.- LŚschen : clear ’’’’’’’’’’.- Kontrollesen : check ’’’’’’’’’’4.2.1 Hilfsprozeduren ’’’’’’’^Die drei Prozeduren listen ihre Ausgabe jeweils in eine temporŁre Datei, die mit’’’’’’’’’’’’’’.'show' (s. 4.2.5) gezeigt wird. ’’’’’’’’’’’’’’. #on("b")#PROC packets #off("b")# ’’’’’’’’’’> Auflisten der Namen aller insertierten Pakete in der Task. > #on("b")#PROC bulletin (TEXT CONST paket name) #off("b")# ’N Listen aller in der DEFINES-Liste des Pakets mit dem Namen "paket name"’’’’ enthaltenen Prozeduren. ’’’. FEHLER : ... ist kein Paketname ’’’’’’’’’’. #on("b")#PROC bulletin #off("b")# ’’’’’’’’’^ Es wird eine Liste aller bisher insertierten Objekte erstellt. Diese Liste ist paketŻ’’’’’’n weise sortiert. 'bulletin' zeigt also eine Liste #on("u")#aller#off("u")# Prozeduren an, die in der Task’’’ benutzt werden kŚnnen. ’’’’> #on("b")#PROC help (TEXT CONST name) #off("b")# ’’’’’’’’’’’N Listen aller Prozeduren / Operatoren mit dem Namen "name". Der Name des’’’’N Packets in dessen Schnittstelle die Prozedur steht wird mit ausgegeben. ’’’N Falls es kein Objekt des erfragten Namens gibt, erfolgt die Ausgabe: ’’’’’’ unbekannt "name". ’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’ help("save") ’’’’’’’’’’’’N____________________________________________________________________________ ’N____________________________________________________________________________ ’PACKET nameset: ’’’’’’’’’’’’’’’’ #ib#OR#ie# ’’’’’’’’’’BN’'’’’’’’’’’’’’’’’’’’’rN’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#XOR#ie# ’’’’’’’’’²N’(’’’’’’’’’’’’’’’’’’’āN’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#bit#ie# ’’’’’’’’’2O’,’’’’’’’’’’’’’’’’’’’bO’P’’’’’’’’’’’’’’’’’’’ĀO’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņO’’’’’’’’’’’’’’’’’’’’P’3’’’’’’’’’’’’’’’’’’’RP’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢P’’’’’’’’’’’’’’’’’’’’ĀP’5’’’’’’’’’’’’’’’’’’’Q’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RQ’’’’’’’’’’’’’’’’’’’’rQ’:’’’’’’’’’’’’’’’’’’’²Q’H’’’’’’’’’’’’’’’’’’’R’+’’’’’’’’’’’’’’’’’’’2R’+’’’’’’’’’’’’’’’’’’’bR’/’’’’’’’’’’’’’’’’’’’¢R’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅR’’’’’’’’’’’’’’’’’’’’ņR’*’’’’’’’’’’’’’’’’’’’"S’X’’’’’’’’’’’’’’’’’’’‚S’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²S’’’’’’’’’’’’’’’’’’’’ŅS’,’’’’’’’’’’’’’’’’’’’T’X’’’’’’’’’’’’’’’’’’’bT’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’T’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅT’Y’’’’’’’’’’’’’’’’’’’2U’[’’’’’’’’’’’’’’’’’’’’U’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅU’O’’’’’’’’’’’’’’’’’’’2V’(’’’’’’’’’’’’’’’’’’’bV’G’’’’’’’’’’’’’’’’’’’²V’T’’’’’’’’’’’’’’’’’’’W’Q’’’’’’’’’’’’’’’’’’’rW’U’’’’’’’’’’’’’’’’’’’’’ ben werden. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅW’’’’’’’’’’’’’’’’’’’’ņW’F’’’’’’’’’’’’’’’’’’’BX’(’’’’’’’’’’’’’’’’’’’rX’Q’’’’’’’’’’’’’’’’’’’ŅX’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"Y’B’’’’’’’’’’’’’’’’’’’rY’(’’’’’’’’’’’’’’’’’’’¢Y’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņY’’’’’’’’’’’’’’’’’’’’Z’;’’’’’’’’’’’’’’’’’’’RZ’7’’’’’’’’’’’’’’’’’’’’Z’Q’’’’’’’’’’’’’’’’’’’ņZ’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B[’E’’’’’’’’’’’’’’’’’’’’[’)’’’’’’’’’’’’’’’’’’’Ā[’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’\’’’’’’’’’’’’’’’’’’’’2\’G’’’’’’’’’’’’’’’’’’’‚\’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā\’’’’’’’’’’’’’’’’’’’’ā\’,’’’’’’’’’’’’’’’’’’’]’T’’’’’’’’’’’’’’’’’’’r]’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’]’’’’’’’’’’’’’’’’’’’’²]’C’’’’’’’’’’’’’’’’’’’^’P’’’’’’’’’’’’’’’’’’’b^’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²^’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā^’Y’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’systemhandbuch.24.1.91 / 2’’’’#start(2.5,1.5)# ’’’’’’’’’’’’’%#center#EUMEL-Systemhandbuch .#center#3. ELAN-Programme#right#% ’’’’’’’’’’’’.#ib(9)#3. #ib#ELAN-Programme#ie##ie(9)# ’’’’’’N#ib(9)#3.1. #ib#Wertebereich#ie#e und #ib#Speicherbedarf#ie##ie(9)# ’’’’’’’’’’#ib#INT-Objekte#ie# ’’’’’’’’’’^Jedes #ib#Datenobjekt#ie# vom Typ INT belegt im Speicher 2 Bytes. MŚgliche INT-Werte sind’’’’’>die ganzen Zahlen von -32768 bis +32767 einschlieūlich. ’’’’’’#ib#REAL-Objekte#ie# ’’’’’’’’’>Jedes Datenobjekt vom Typ REAL belegt im Speicher 8 Bytes. ’’’^REALs haben eine 13-stellige #ib#Mantisse#ie#, die im Rechner dezimal gefŪhrt wird. (Das’’’’’’^heiūt, bei Konversionen zwischen interner und TEXT-Darstellung treten keine RunŻ’’’’’’’’’’’’’’Ndungsfehler auf.) Der Wertebereich wird durch folgende Eckwerte abgelegt: ’’’’> 9.999999999999e+126 grŚūter REAL-Wert ’’’’’’’’’’’’’’’N 0.000000000001 kleinster positiver REAL-Wert mit x + 1.0 > 1.0 ’N 9.999999999999e-126 kleinster positiver REAL-Wert > 0.0 ’’’’’’’’’’’’’> -9.999999999999e-126 grŚūter negativer REAL-Wert ’’’’’> -9.999999999999e+126 kleinster REAL-Wert ’’’’’’’’’’’’’#ib#BOOL-Objekte#ie# ’’’’’’’’’>Jedes Datenobjekt vom Typ BOOL belegt im Speicher 2 Bytes. ’’’#ib#TEXT-Objekte#ie# ’’’’’’’’’NJedes Datenobjekt vom Typ TEXT besteht aus einem festen Teil von 16 Bytes und’ŽmŚglicherweise aus einem flexiblen Teil auf dem #on("i")##on("b")##ib#Heap#ie##off("i")##off("b")#. Im festen Teil werden #ib#Texte bis’’’’’’’^zur LŁnge von 13 Zeichen#ie# untergebracht. Wenn eine TEXT-Variable einen Wert mit’’’’’’’’’’’’Nmehr als 13 Zeichen LŁnge annimmt, werden alle Zeichen auf dem Heap untergeŻ’’.bracht. Genauer ergibt sich folgendes Bild: ’’. kurzer Text (LENGTH <= 13): ’’’’’’’’’’’’’. Heap-Link 2 Bytes ’’’’’’’’’’’’’’’ TextlŁnge 1 Byte . Text 13 Bytes ’’’’’’’’’’’’’’’. langer Text (LENGTH > 13): ’’’’’’’’’’’’’’. Heap-Link 2 Bytes ’’’’’’’’’’’’’’’ 255 1 Byte . LŁnge 2 Bytes ’’’’’’’’’’’’’’’. ungenutzt 11 Bytes ’’’’’’’’’’’’’’’NWenn eine Variable einmal Platz auf dem Heap bekommen hat, behŁlt sie diesen’’^vorbeugend auch dann, wenn sie wieder einen kurzen Text als Wert erhŁlt. So muū’’’’’’’’’’’’’’’^wahrscheinlich kein neuer Platz auf dem Heap zugewiesen werden, wenn sie wieder’’’’’’’’’’’’’’’^lŁnger wird. Das gilt allerdings nur bis zur nŁchsten #ib#Garbage Collection#ie# auf den’’’’’’^TEXT-Heap, denn dabei werden alle Heap-Container minimal gemacht bzw. gelŚscht,’’’’’’’’’’’’’’’^wenn sie nicht mehr benŚtigt werden. Der Platz auf dem Heap wird in Vielfachen von’’’’’’’’’’’’^16 Bytes vergeben. In FremddatenrŁumen wird in jedem #ib#Container#ie# neben dem eigentŻ’’’’’’>lichen Text auch die ContainerlŁnge untergebracht. ’’’’’’’’’’’>Beispiele: TEXT-LŁnge Speicherbedarf (Byte) ’’’’’’’’’’’. 0 16 ’’’’’’. 13 16 ’’’’’’. 14 32 ’’’’’’. 15 48 ’’’’’’. 30 48 ’’’’’’. 31 64 ’’’’’’. 46 64 ’’’’’’. 47 80 ’’’’’’. 62 80 ’’’’’’>Die HeapgrŚūe eines Fremddatenraums berechnet sich als: ’’’’’’> 1024 * 1024 - 520 = 1048056 - stat Bytes ’’’’’’’’’’’’’’^'stat' ist dabei die statistische GrŚūe der Datenstruktur, die dem Datenraum aufgeprŁgt’’’’’’’Nwurde. Bei einem BOUND ROW 1000 TEXT ergibt sich also eine HeapgrŚūe von ’’’’’. 1048056 - (1000 * 16) = 1032056 Bytes. .#ib#ROW- und STRUCT-Objekte#ie# ’’’’’’’’’’’’’’^Bei der Berechnung des Speicherbedarfs von #ib#STRUCT#ie#s und #ib#ROW#ie#s muū man bedenŻ’’’’^ken, daū lŁngere Datenobjekte ausgerichtet werden. Und zwar werden alle Objekte, die’’’’’’’’’’^mindestens die LŁnge eines REAL-Objektes haben, auf durch 8 teilbare SpeicheraŻ’’’’’’’’’’’’’’’^dressen ausgerichtet. Man bedenke, daū bei ROWs alle Elemente entsprechend ihres’’’’’’’’’’’’’’.Elementtyps ausgerichtet sind. ’’’’’’’’’’’’’’’>Beispiele: LŁnge (Byte) ’’’’’’> ROW 2 BOOL 4 ’’’’’’’’’’’> ROW 4 INT 8 ’’’’’’’’’’’> ROW 5 INT 16 ’’’’’’’’’’’> ROW 2 STRUCT (INT, BOOL) 4 ’’’’’’’’’’’> ROW 100 STRUCT (INT,INT) 400 ’’’’’’’’’’’> ROW 100 STRUCT (INT,REAL) 1600 ’’’’’’’’’’’> ROW 100 STRUCT (INT,INT,INT,INT,REAL) 1600 ’’’’’’’’’’’> ROW 100 STRUCT (REAL, REAL) 1600 ’’’’’’’’’’’> ROW 100 STRUCT (INT,TEXT) 2400 ’’’’’’’’’’’> ROW 100 STRUCT (INT,INT,INT,INT,TEXT) 2400 ’’’’’’’’’’’> ROW 100 STRUCT (INT,TEXT,INT,TEXT) 4800 ’’’’’’’’’’’> ROW 100 STRUCT (INT,INT,TEXT,TEXT) > save........... (THESAURUS CONST, TASK CONST) ’’’’’’’’’’. save........... (THESAURUS CONST) ’’’’’’PACKET globalmanager: ’’’’’’’’N save........... (DATASPACE CONST, TEXT CONST, TASK CONST) ’’’’’’’’’’’’’’> save........... (TEXT CONST, TASK CONST) ’’’’’’’’’’’’’’’. save........... (TEXT CONST) ’’’’’’’’’’’ save........... ’’’’’’’’N____________________________________________________________________________ ’N Desweiteren kann auch nach Prozedurnamen gesucht werden, die nur annŁhernd’^ bekannt sind, indem ein Suchmuster spezifiziert wird. Das Suchmuster besteht aus’’’’’’’’’’’N dem bekannten Teil des Namens und dem Operator '*', der vor und/oder nach’’^ dem Suchbegriff gesetzt werden kann. '*' bezeichnet eine beliebige (auch leere)’’’’’’’’’’’’ Zeichenkette. ’’’’’’’’’’’’’N Beispiel: Gesucht werden die verschiedenen 'info' Prozeduren: ’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’ help("*info*") ’’’’’’’’’’N____________________________________________________________________________ ’N____________________________________________________________________________ ’. taskinfo....... (INT CONST, INT CONST) ’. taskinfo....... (INT CONST, FILE VAR) ’’. taskinfo....... (INT CONST) ’’’’’’’’’’’’ taskinfo....... ’’’’’’’’. editinfo....... (FILE VAR, INT CONST) ’’. editinfo....... (FILE CONST) --> INT ’’ storageinfo.... ’’’’’’’’N____________________________________________________________________________ ’^ Dieser Stern darf nicht mit dem 'joker' des 'Pattern Matching' verwechselt werden.’’’’’’’’’n In der 'help' Prozedur darf '*' #on("u")#nicht#off("u")# in den Suchbegriff eingesetzt werden, sondern’’’’’> nur an Wortanfang und -Ende gesetzt werden. ’’’’’’’’’’’’’’’Informationsprozeduren ’’’’’’’> #on("b")#INT PROC storage (TASK CONST task) #off("b")# ’’’’^ Informationsprozedur Ūber den logisch belegten Hintergrund-Speicher der Task.’’’’’’’’’’’’’’> (Angabe in KByte, bzw. 4KB Einheiten bei der '+'-Version) ’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ put(storage(myself)) ’’’’’ gib kommando : ’’’’’’’’’’’N____________________________________________________________________________ ’'storage info' ’’’’’’’’’’’’’’’. #on("b")#PROC storage info #off("b")# ’’’’’^ Informationsprozedur Ūber den belegten und den verfŪgbaren Hintergrund-SpeiŻ’’’’’’’’’’’’’’’N cher des gesamten Systems. Die Ausgabe erfolgt in KByte, bei der aktuellen’. '+'-Version in 4 KByte Einheiten. ’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ storage info ’’’’’’’’’’’’’ 1234K von 12000K ’’’’’’’’’ gib kommando : ’’’’’’’’’’’N____________________________________________________________________________ ’. #on("b")#PROC task info #off("b")# ’’’’’’’’^ Informiert Ūber alle Tasknamen im System unter gleichzeitiger Angabe der Vater/’’’’’’’’’’’’> Sohn-Beziehungen (Angabe durch EinrŪckungen). ’’’’’’’’’’’’’> #on("b")#PROC task info (INT CONST art) #off("b")# ’’’’’’’’^ Informiert Ūber alle Tasks im System. Mit 'art' kann man die Art der Zusatz-’’’’’’’’’’’’’’’ Information auswŁhlen. ’’’’^ art=1: entspricht 'task info' ohne Parameter, d.h. es gibt nur die Tasknamen’’’’’’’’’’’’’’’> unter Angabe der Vater/Sohn-Beziehungen aus. ’’’’’’’^ art=2: gibt die Tasknamen aus. ZusŁtzlich erhalten Sie Informationen Ūber die’’’’’’’’’’’’’’N verbrauchte CPU-Zeit der Task, die PrioritŁt, den Kanal, an dem die’^ Task angekoppelt ist, und den eigentlichen Taskstatus. Hierbei bedeuten: ’’’’’’’’’’’. 0 -busy- Task ist aktiv. ’N 1 i/o Task wartet auf Beendigung des Outputs oder auf’’. Eingabe. ’’’’’’’’N 2 wait Task wartet auf Sendung von einer anderen Task. ’N 4 busy-blocked Task ist rechenwillig, aber blockiert#u#1)#e#. ’’N 5 i/o -blocked Task wartet auf I/O, ist aber blockiert. ’’’’’’’’N 6 wait-blocked Task wartet auf Sendung, ist aber blockiert. AchŻN tung: Die Task wird beim Eintreffen einer Sendung> automatisch entblockiert. ’’’’’’’ > 6 dead ’’’’’’’’’’^ art=3: wie 2, aber zusŁtzlich wird der belegte Speicher angezeigt. (Achtung:’’’’’’’’’’’’’’. Prozedur ist zeitaufwendig!). ’’’’’>1) Eine Blockierung kann von 'Scheduler' veranlaūt werden ’’’’ (siehe Systemhandbuch) ’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ task info(2) ’’’’’’’’’’’’’N____________________________________________________________________________ ’N____________________________________________________________________________ ’> ............................ ............................... N 15.05.87 10:39 CPU PRIO CHAN STATUS ’’’’’’’’’’’’N SUPERVISOR.......................... 0000:19:47 0 - wait ’’’’’’’’’’’’’’N -................................ 0000:07:54 0 - wait ’’’’’’’’’’’’’’N SYSUR............................ 0000:34:02 0 - wait ’’’’’’’’’’’’’’N shutup dialog................ 0000:05:26 0 - i/o ’’’’’’’’’’’’’’’N configurator................. 0000:04:17 0 - wait ’’’’’’’’’’’’’’N OPERATOR..................... 0000:00:14 0 - i/o ’’’’’’’’’’’’’’’N ARCHIVE...................... 0000:10:33 0 31 wait ’’’’’’’’’’’’’’N net.......................... 0006:41:56 0 - wait ’’’’’’’’’’’’’’N net timer................ 0000:02:48 2 - i/o ’’’’’’’’’’’’’’’N net port................. 0000:40:23 0 7 wait ’’’’’’’’’’’’’’N PRINTER...................... 0000:05:59 0 - wait ’’’’’’’’’’’’’’N -........................ 0000:00:11 0 - wait ’’’’’’’’’’’’’’N UR.................................. 0000:02:11 0 - wait ’’’’’’’’’’’’’’N PUBLIC........................... 0002:02:03 0 - wait ’’’’’’’’’’’’’’N task1........................ 0000:41:50 0 - -busy- ’’’’’’’’’’’’N task2........................ 0000:03:10 0 - i/o ’’’’’’’’’’’’’’’N task3........................ 0000:57:28 0 1 -busy- ’’’’’’’’’’’’N____________________________________________________________________________ ’N #on("b")#PROC task info (INT CONST art, FILE VAR infodatei) #off("b")# ’’’’N Wie oben, die Ausgabe wird jedoch in die Datei 'infodatei' geschrieben. ’’’N____________________________________________________________________________ ’> FILE VAR info := sequential file(output,"infodatei") ; ’’’ taskinfo(3, info); ’’’’’’’N____________________________________________________________________________ ’N #on("b")#PROC task info ( INT CONST art, stationsnr) #off("b")# ’’’’’’’’’’’^ ErmŚglicht im Netzbetrieb 'task info' Ūber die Station mit der Nummer 'stationsnr'. ’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ taskinfo(1,12) ; ’’’’’’’’’N____________________________________________________________________________ ’'task status' . #on("b")#PROC task status #off("b")# ’’’’’’N Informationsprozedur Ūber den Zustand der eigenen Task. Informiert Ūber ’’’. - Name der Task, Datum und Uhrzeit; ’’’’’’ - verbrauchte CPU-Zeit; ’’ - belegten Speicherplatz; 4000 ’’’’’’’’’’’> ROW 100 ROW 3 INT 600 ’’’’’’’’’’’> ROW 100 ROW 4 INT 800 ’’’’’’’’’’’> ROW 100 ROW 5 INT 1600 ’’’’’’’’’’’> ROW 500 INT 1000 ’’’’’’’’’’’n#on("i")#Anmerkung: Bei der #ib#Speichervergabe#ie# der einfachen Variablen und Konstanten eines’’’’’’’’’’’’’’N Programms spielen Verluste aufgrund von Ausrichtungen in der Regel’^ keine Rolle. Der ELAN-Compiler optimiert dabei soweit mŚglich.#off("i")# ’’’’’’’’’’%#center#EUMEL-Systemhandbuch >#center#4. Standardpakete fŪr Systemprogrammierer#right#% ’’’’.#ib(9)#4. #ib#Standardpakete fŪr ’’’’’’’’’’’’’. Systemprogrammierer#ie(9)##ie# ’’’’’’’’’’’’.#ib(9)#4.1. #ib#Fehlerbehandlung#ie##ie(9)# ’’#on("italics")# ’’’’’’’’’’’’’’N Fehler treten auf, wenn ein Programm eine gewŪnschte Leistung’’’’’’’’’N nicht erbringen kann. Solche Situationen mŪssen von System-’’’’’’’’’’’N Programmen kontrolliert behandelt werden. Die folgenden AusŻ’’’’’’’’’’N fŪhrungen sind somit nur fŪr diejenigen interessant, die "SyŻ’’’’’’’’’> stem"-Programme schreiben wollen.#off("italics")# ’’’’^#ib#Fehler#ie# treten in Operationen auf, wenn diese eine geforderte Leistung nicht erbringen’^kŚnnen (z.B. das Drucken einer nicht vorhandenen Datei). Da folgende Anweisungen’’’’’’’’’’’’’’^aber davon ausgehen, daū die gewŪnschten Leistungen erbracht wurden, ist es nicht’’’’’’’’’’’’’^sinnvoll, die Operation weiter auszufŪhren. Wir sprechen vom #ib#Abbruch einer Operation#ie#,’Nwenn nach einem Fehler keine Anweisungen mehr ausgefŪhrt werden, sondern die’’NOperation verlassen wird. Im EUMEL-System kann durch folgende drei Maūnahmen’’.ein Abbruch verursacht werden: ’’’’’’’’’’’’’’’.- Aufruf der Prozedur '#ib#errorstop#ie#': ’’^ Die Operation wird mit einer Fehlermeldung abgebrochen, die man dem Aufruf von’’’’’’’’’’’’’> 'errorstop' als Parameter beifŪgt werden kann. ’’’’’’’’’’’’.- Aufruf der Prozedur '#ib#stop#ie#': ’’’’’’’^ Die Operation wird abgebrochen. Wirkt wie 'errorstop' mit der Meldung "stop". ’’’’’’’’’’’’’.- Umschalten in den Supervisor: ’’’’’’’’’’’’’^ Durch BetŁtigen der Taste SV und Eingabe des Kommandos '#ib#halt#ie#'. Die laufende’’’’’’’’^ Operation wird abgebrochen. Wirkt wie ein 'errorstop', der von "auūen" in das’’’’’’’’’’’’’’ Programm induziert wird. ’’NDa alle drei Maūnahmen zum Abbruch fŪhren kŚnnen und somit eine anormale (vorŻ^zeitige) Beendigung eines Programms bewirken, werden sie im folgenden zusammenŻ’’’’’’’’’’’’’’’.fassend als #ib#Fehler#ie# bezeichnet. ’’’’’’’^FŪr solche Fehler bietet das EUMEL-System die MŚglichkeit, den Abbruch zu unterŻ’’’’’’’’’’’’’’.drŪcken. Dies kann notwendig werden, wenn ’’’’^a) bestimmte FehlerfŁlle vom aufrufenden Programm selbst behandelt werden sollen.’’’’’’’’’’’’’^ Der EUMEL-Editor wird aufgerufen, um eine Datei zu bearbeiten. Er versucht als’’’’’’’’’’’’’^ erstes, die Datei zu assoziieren. Existiert die Datei nicht, wird die Prozedur’’’’’’’’’’’’’^ (z.B. 'old'), mit der die Datei angemeldet werden soll, normalerweise mit der FehŻ’’’’’’’’’^ lermeldung ' "datei" gibt es nicht' abgebrochen. Diesen Fehlerzustand fŁngt der’’’’’’’’’’’’^ Editor jedoch ab und versucht, eine neue Datei einzurichten (Anmerkung: In WirkŻ’’’’’’’’’’’^ lichkeit fragt der Editor natŪrlich vor der Assoziierung mit 'exists' ab, ob die Datei’’’’’ existiert). ’’’’’’’’’’’’’’’>b) eine Operation die Kontrolle auf jeden Fall behalten soll. ^ Dies ist z.B. beim Monitor notwendig. Gleich welche Fehler vom Monitor gerufene’’’’’’’’’’’’^ Programme produzieren, der Monitor muū in der Lage sein, die weitere BearbeiŻ’’’’’’’’’’’’’’ tung zu ermŚglichen. ’’’’’’>c) eine Operation nicht unterbrechbar sein darf. ’’’’’’’’’’’’’^ Beispielsweise dŪrfen Programm(teil)e, die Daten transportieren, nicht unterbroŻ’’’’’’’’’’’N chen werden, da sonst ein Verlust dieser Daten eintreten kŚnnte. ’’’’’’’’’’N#ib(9)##ib#Fehlerbehandlung#ie# und #ib#FŁngerebenen#ie##ie(9)# ’’’’’’’’’’’’’’.Der Aufruf einer der Prozeduren ’’’’’’’’’’’’’’ #ib#errorstop#ie# ’’’’’’’ #ib#stop#ie# ’’’’’’’’’’’’ #ib#halt#ie# ’’’’’’’’’’’’N(wobei letztere vom Supervisor gegeben werden muū) werden zusammenfassend als’n#ib#Fehler#ie# bezeichnet. Bei einem Fehler wird ein #ib#Fehlerzustand#ie# gesetzt. Im Fehlerzustand’’’’’’’’’’Nmerkt sich das EUMEL-System, daū ein Fehler vorliegt. Die Prozeduren ’’’’’’’’’ #ib#enable stop#ie# ’’’’’’ #ib#disable stop#ie# ’’’’’Nbestimmen, ob Operationen im Fehlerzustand weiter bearbeitet oder abgebrochen’werden. Beispiel: ’’’’’’’’’’’’ INT VAR x; ’’’’’’’’’’’’’’ get (x);  disable stop; ’’’’’’’’’’’ x := x * x; ’’’’’’’’’’’’’^Hier wird mit 'disable stop' verhindert, daū ein Abbruch beispielsweise durch 'INT-’’’’’’’’’’’^Ueberlauf' auftreten kann. Die Anweisungen nach 'x * x' werden also weiter bearbeiŻ’’’’’’’’’’’^Welchen Wert hat aber nun die Variable 'x', nachdem der Fehler auftrat? OffensichtŻ’’’’’’’’’’’^lich war die den Fehler auslŚsende Operation '*' nicht in der Lage, den richtigen Wert’’’’’’’’^zu errechnen. #ib#Abgebrochene Operationen#ie# liefern in der Regel keinen Wert. Dadurch ist’’^der Wert von 'x' in unserem Beispiel nach einem Fehler bei '*' undefiniert. Es ist nun’’’’’’’’^ersichtlich, daū mit der Anwendung der 'disable stop'-Prozedur Łuūerst vorsichtig zu’’’’’’’’’’^verfahren ist, weil u.U. Werte verloren gehen kŚnnen bzw. mit unerwarteten Werten’’’’’’’’’’’’’weitergerechnet wird. ’’’’’’’’^Damit Programmierer erfahren kŚnnen, ob ein Fehler aufgetreten ist, gibt es die InforŻ’’’’’’’’mations-Prozedur ’’’’’’’’’’’’’ #ib#is error#ie# ’’’’’’’’^Ūber den Fehlerzustand. Die Prozedur liefert den Wert TRUE, wenn ein Fehler vorliegt,’’’’’’’’’.andernfalls FALSE. Die Prozedur ’’’’’’’’’’’’’’ #ib#clear error#ie# ’’’’’^"lŚscht" den Fehlerzustand, d.h. anschlieūende Abfragen mit 'is error' liefern FALSE.’’’’’’’’’^(Die "richtige" Reaktion auf den Fehler muū ein Programmierer natŪrlich selbst beŻ’’’’’’’’’’’’ INT VAR x; ’’’’’’’’’’’’’’ get (x);  disable stop; ’’’’’’’’’’’ x := x * x; ’’’’’’’’’’’’’ IF is error ’’’’’’’’’’’’’. THEN put ("'x'-Wert zu groū"); ’’’’’’’’ x := 0; ’’’’’’’’’’ clear error ’’’’’’^Leider wŪrden jetzt aber auch alle folgenden Anweisungen bei eventuellen Fehlern’’’’’’’’’’’’’’^nicht abgebrochen, also auch in Situationen, in denen ein Abbruch erwŪnscht ist, um’’’’’’’’’’’>#ib#Programmierfehler#ie# zu erkennen. Deshalb kŚnnen durch ’’ #ib#enable stop#ie# ’’’’’NAbbrŪche wieder zugelassen werden. Wenn wir jetzt also schreiben: ’’’’’’’’’’’’ INT VAR x; ’’’’’’’’’’’’’’ get (x);  disable stop; ’’’’’’’’’’’ x := x * x; ’’’’’’’’’’’’’ IF is error ’’’’’’’’’’’’’. THEN put ("'x'-wert zu gross"); ’’’’’’’ x := 0; ’’’’’’’’’’ clear error ’’’’’’ enable stop; ’’’’’’’’’’’’^dann wŪrden - wie gewŪnscht - eventuelle Fehler in den Anweisungen nach 'enable’’’’’’’’’’’’’’’.stop' zu einem Abbruch fŪhren. ’’’’’’’’’’’’’’’nNicht mit '#ib#clear error#ie#' gelŚschte Fehler fŪhren bei '#ib#enable stop#ie#' ebenfalls zu einem’’’’’’’’’’Abbruch. In dem Programmteil ’ disable stop; ’’’’’’’’’’’ x := x * x; ’’’’’’’’’’’’’ enable stop; ’’’’’’’’’’’’^wŪrde der eventuell auftretender Fehler 'INT Ueberlauf' nicht abgefangen, sondern nur’’’’’’’’’NverzŚgert wirksam, weil er nicht mit 'clear error' gelŚscht wurde. ’’’’’’’’’’’^FŪr die Behandlung von Fehlern durch Benutzer gibt es Prozedur. - Kanal, an den die Task angekoppelt ist; . - Zustand der Task (rechnend u.a.m.); ’’’’ - PrioritŁt. ’’’’’’’’’’’’’> #on("b")#PROC task status (TASK CONST t) #off("b")# ’’’’’’’N Wie obige Prozedur, aber Ūber die Task mit dem internen Tasknamen 't'. ’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’’ task status (public) ’’’’’’. 15.05.87 10:30 TASK: PUBLIC ’’’’’’’’’’’’’’’ Speicher: 1234K ’’’’’’’’’’’’’ CPU Zeit: 0011.12:23 ’’’’’’’’. Zustand : wait, (Prio 0), Kanal - ’’’’’’’’’’’N____________________________________________________________________________ ’4.2.2 Thesaurus ’’’’’’’’’’’’’^Ein #ib#Thesaurus#ie# ist ein #ib#Namensverzeichnis#ie#, das bis zu 200 Namen beinhalten kann.NDabei muū jeder Namen mindestens ein Zeichen und darf hŚchstens 100 Zeichen’’’Nlang sein. Steuerzeichen (code < 32) in Namen werden umgesetzt (siehe 2.9.2). ^Thesauri werden unter anderem von der Dateiverwaltung benutzt, um das DateiverŻ’’’’’’’’’’’’’’’.zeichnis einer Task zu fŪhren. ’’’’’’’’’’’’’’’NMan kann einen Thesaurus selbst erstellen, indem eine Datei z.B. mit Namen von^Dateien gefŪllt wird. Diese Datei kann dann als Thesaurus fŪr weitere Aktionen dieŻ’’’’’’’’’’’>- Thesaurus liefern : ALL , all , SOME , remainder ’’’.- AuswŁhlen : LIKE ’’’’’’’’’’’.- VerknŪpfen : + , - , / ’’’’’’^#on("b")#ACHTUNG#off("b")# : Bei der Verwendung von Thesaurus Operationen in Verbindung mit’’^'fetch', 'save' etc. ist zu beachten, daū mit 'SOME', 'ALL' und 'all' zunŁchst nur eine’’’’’’’^Auswahl aus einer Liste getroffen wird. ZusŁtzlich muū das Ziel oder die Quelle des’’’’’’’’’’’.Dateitransfers vereinbart werden. ’’’’’’’’’’’’>Ein beliebter Fehler ist z.B.: 'fetch (ALL archive)'. ’’’’’’^Hier ist nicht weiter spezifiziert, von wo Dateien geholt werden sollen - also werden’’’’’’’’’.sie von 'father' geholt! (s. 4.2.5) ’’’’’’’’’^Falls die Dateien vom Archiv geholt werden sollen, ist das Archiv als Quelle zu beŻ’’’’’’’’’’’^Also : 'fetch (ALL archive, archive)' = Hole alle Dateien, die in dem Thesaurus von ’’’’’’’’’’N 'archive' sind von der Task 'archive'. ’’’’’. THESAURUS OP ALL (TASK CONST task) ’’’’’’’’N Liefert einen Thesaurus, der alle Dateinamen der angegebenen Task enthŁlt. N #on("b")#THESAURUS OP ALL (TEXT CONST dateiname) #off("b")# ’’’’’’’’’’’’’’’N Liefert einen Thesaurus, der die in der angegebenen Datei vorhandenen Namen. (jede Zeile ein Name) enthŁlt. ’’’’’’’’’’’’. #on("b")#THESAURUS PROC all #off("b")# ’’’’^ Liefert einen Thesaurus, der alle Dateinamen der eigenen Task enthŁlt. Entspricht’’’’’’’’’’ 'ALL myself'. ’’’’’’’’’’’’’N #on("b")#THESAURUS OP SOME (THESAURUS CONST thesaurus) #off("b")# ’’’’’’’’’^ Bietet den angegebenen Thesaurus zum editieren an. Dort kŚnnen nicht erwŪnschŻ’’’’’’’’’’’’’. te Namen gestrichen werden. ’’’’’’’’’’’’’’’> #on("b")#THESAURUS OP SOME (TASK CONST task) #off("b")# ’’’ Aufruf von: SOME ALL task. N #on("b")#THESAURUS OP SOME (TEXT CONST dateiname) #off("b")# ’’’’’’’’’’’’’’. Aufruf von: SOME ALL dateiname. ’’’’’’’’’’’. #on("b")#PROC remainder #off("b")# ’’’’’’’’N Liefert nach einem 'errorstop' die noch nicht bearbeiteten Dateien. ’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ save all (archive) ’’’’’’’> '"....." kann nicht geschrieben werden (Archiv voll)' ’’’’’N____________________________________________________________________________ ’N Nachdem man eine neue Floppy ins Archivlaufwerk gelegt hat, kann man mit ’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ save (remainder, archive) N____________________________________________________________________________ ’> den Rest der Dateien auf die nŁchste Floppy sichern. ’’’’’’^ #on("b")#THESAURUS OP LIKE (THESAURUS CONST thesaurus, TEXT CONST muster) #off("b")# ’’’’’’N Alle im Thesaurus enthaltenen Dateien, die dem 'muster' entsprechen sind im. Ergebnisthesaurus enthalten. ’’’’’’’’’’’’’’^ (Die Syntax von 'muster' ist bei der Beschreibung des Pattern-Matching (5.4)’’’’’’’’’’’’’’’ beschrieben) ’’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ print (all LIKE "*.p") ’’’N____________________________________________________________________________ ’> Alle Dateien, deren Name mit '.p' endet, werden gedruckt. ’’N #on("b")#THESAURUS OP + (THESAURUS CONST links, rechts) #off("b")# ’’’’’’’’> Liefert die Vereinigungsmenge von 'links' und 'rechts'. ’’’N Achtung: Die Vereinigungsmenge enthŁlt keine Namen mehrfach. ’’’’’’’’’’’’’’^ #on("b")#THESAURUS OP + (THESAURUS CONST links, TEXT CONST rechts)#off("b")# ’’’’’’’’’’’’’’^ FŪgt dem Thesaurus 'rechts' zu, wenn 'rechts' noch nicht im Thesaurus enthalŻ’’’’’’’’’’’’’’N #on("b")#THESAURUS OP - (THESAURUS CONST links, rechts) #off("b")# ’’’’’’’’N Liefert die Differenzmenge. Achtung: Die Differenzmenge enthŁlt keine Namen^ #on("b")#THESAURUS OP - (THESAURUS CONST links, TEXT CONST rechts)#off("b")# ’’’’’’’’’’’’’’> Nimmt den Namen 'rechts' aus dem Thesaurus. ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’. fetch(ALL father - ALL myself) ’’’’’’’’’’’N____________________________________________________________________________ ’N #on("b")#THESAURUS OP / (THESAURUS CONST links, rechts) #off("b")# ’’’’’’’’ Liefert die Schnittmenge ’’> Achtung: Die Schnittmenge enthŁlt keine Namen mehrfach. ’’’^Zur Identifizierung von Tasks dienen sogenannte 'interne Taskbezeichner'. Ein solcher’’’’’’’’’NTaskbezeichner wird beim Einrichten einer neuen Task vergeben. Interne TaskbeŻ>zeichner sind auch unter BerŪcksichtigung der Zeit eindeutig. ^Der Zugriff auf interne Taskbezeichner erfolgt Ūber Prozeduren und Operatoren, die’’’’’’’’’’’’Nauf Objekte des Datentyps TASK (siehe 2.9.1) angewandt werden. ’’’’’’’’’’’’’’’^ZusŁtzlich zum internen Tasknamen, der nicht auszugeben ist, haben Tasks meistens’’’’’’’’’’’’’einen Namen#u#1) #e#. ’’’’’’’’>1) Unbenannte Tasks haben den Pseudonamen "-". ’’’’’’’’’’’’’’’^Aus Benutzersicht kŚnnen benannte Tasks innerhalb eines Rechners vollstŁndig und’’’’’’’’’’’’’’>eindeutig Ūber ihren Namen identifiziert werden. ’’’’’’’’’’’’’>- Task liefern : / , task , niltask ’’’’’’’’’’’’’>- Verwandtschaften : brother , father , myself , son N- Ausgezeichnete Tasks : archive , printer , public , supervisor ’’’’’’’’.- Namen liefern : name ’’’’’’’’’’’.- Tasknamen Łndern : rename myself ’’.- Reservieren bes. Tasks : reserve ’’’’’’’’> #on("b")#TASK OP / (TEXT CONST taskname) #off("b")# ’’’’’’’^ Liefert die Task des angegebenen Namens, falls sie existiert. Der eigene KatalŻ’’’’’’’’’’’’. og wird automatisch aktualisiert ’’’’’’’’’’> (identisch mit der PROC task (TEXT CONST taskname). ’’’’’’’. FEHLER : "taskname" gibt es nicht ’’’’’’’N #on("b")#TASK OP / (INT CONST station number, TEXT CONST name) #off("b")# ’^ Liefert im Netzbetrieb die Task des angegebenen Namen von der Station mit der’’’’’’’’’’’’’’ angegebenen Nummer. ’’’’’’’. #on("b")#TASK CONST niltask #off("b")# ’’’’^ Bezeichner fŪr "keine Task". So liefern die Prozeduren 'son', 'brother' und 'father'’’’’’’’^ als Resultat 'niltask', wenn keine Sohn-, Bruder- oder Vatertask existiert. ’’’’’’’’’’’’’’’> #on("b")#TAen, die eine adŁquate’’’’’’’’’’’.Reaktion auf den Fehler erlauben. Mit ’’’’’’’’ #ib#error message#ie# ’’’^kŚnnen Sie auf die erste Fehlermeldung (eines 'error stop') nach dem letzen 'clear’’’’’’’’’’’’^error' zugreifen (d.h. Folgefehler verŁndern nicht die Originalmeldung). Die Prozedur ’’’’’’’’ #ib#error code#ie# ’’’’’’nliefert den #ib#Fehlercode#ie#, der bei der Prozedur 'errorstop' zusŁtzlich zum #ib#Fehlertext#ie#’’’’’’’’’’’’angegeben werden kann. ’’’’’’’ #ib#error line#ie# ’’’’’’Nliefert die Zeilennummer des zuletzt aufgetretenen Fehlers. Mit ’’’’’’’’’’’’’’ #ib#put error#ie# ’’’’’’’Nkann eine noch anstehende Fehlermeldung ausgegeben werden. Beispiel: ’’’’’’’’’ INT VAR x; ’’’’’’’’’’’’’’ get (x);  disable stop; ’’’’’’’’’’’ x := x * x; ’’’’’’’’’’’’’ IF is error ’’’’’’’’’’’’’> THEN IF error message = "INT-Ueberlauf" ’’’’’’’’’’’’’’’. THEN put ("'x'-wert zu gross");  ELSE put error ’ FI; ’’’’’’’’’’’’’’ clear error ’’’’’’ enable stop; ’’’’’’’’’’’’^Tritt ein Fehler auf, so wird die den Fehler auslŚsende Operation entweder abgebroŻ’’’’’’’’’’’^chen oder "normal" weiter bearbeitet, je nachdem, ob 'enable stop' oder 'disable stop'’’’’’’’’^gesetzt ist. Auf jeden Fall wird der #ib#Fehlerzustand#ie# an die aufrufende Operation weiterŻNgemeldet, die wiederum abgebrochen oder weiterbearbeitet werden kann usw. Die’^#ib#Weitermeldung#ie# eines Fehlers kann auch Ūber mehrere Stufen erfolgen, solange bis der’’’^Fehler gelŚscht wird. Andererseits gilt 'enable/ disable stop' nicht nur fŪr die aktuelle’’’’’^Operation, sondern auch fŪr gerufene Operationen ("Vererbung"). Die gerufenen OpeŻ’’’’’’’’’’’’Nrationen kŚnnen allerdings 'enable/disable stop' neu festlegen. Beispiel: ’’’’> PROC a: PROC b: PROC c: ’’’’’’’’’N ... ... ROW 10 INT VAR x; ’’’’’’’’’’’’’’’> disable stop; enable stop; ... ’’’’’’’’’’’’’N b; ... INT VAR i :: 4711; ’’’’’’’’’’’’’’> IF is error c; x [i] := ...; ’’’> THEN ... ... ... ’’’’’’’’’’’’’> clear error END PROC b END PROC c ’’’’’’ enable stop ’’’’’’’’’’ END PROC a; ’’’’’’’’’’^In der Prozedur 'a' wird die Prozedur 'b' aufgerufen. Diese ruft wiederum eine Prozedur’’’’’’’^'c' auf. FŪr die Prozedur 'c' gilt nun der Zustand 'enable stop' der Prozedur 'b' (#ib#VererŻ’nbung von 'enable stop'#ie#). Tritt jetzt in 'c' der Subskriptions-Fehler auf, wird 'c' abgebroŻ’’’’’’’’’’’’’’’Nchen. Die Wirkung der fehlerauslŚsenden Operation ist nicht definiert. ’’’’’’’^Da aber auch die Prozedur 'b' im 'enable stop' Zustand ist, wird auch die Prozedur 'b'’’’’’’’’^abgebrochen. Der Fehler bleibt jedoch erhalten, wird also weitergemeldet. Dies wirkt’’’’’’’’’’^sich so aus, daū die Anweisung 'c' nicht ausgefŪhrt wird. Da die Prozedur 'a' 'disable’’’’’’’’^stop' gesetzt hat, werden die auf den Aufruf von 'b' folgenden Anweisungen durchlauŻ’’’’’’’’’’^fen und somit durch 'clear error' der Fehler gelŚscht. In diesem Beispiel "fŁngt" die’’’’’’’’’NProzedur 'a' Fehler auf, die in den Prozeduren 'b' und 'c' entstehen kŚnnen. ’^Ein solcher #ib#FŁnger#ie# wird durch zwei Prozeduren konstruiert. Der eigentliche FŁnger’’’’’^(hier: Prozedur 'a') ruft eine ausfŪhrende Prozedur (hier: 'b') im 'disable stop'-Zustand’’’’’^auf. Die gerufene Prozedur setzt sofort 'enable stop' und fŪhrt dann die eigentlichen’’’’’’’’’^Aktionen aus. So wird die gerufene Prozedur abgebrochen (kann also im Fehlerfall’’’’’’’’’’’’’’^nicht zuviel Schaden anrichten). Der Abbruch fŪhrt bis zur FŁngerprozedur ('a') hinter’’’’’’’’^den Aufruf der gerufenen Prozedur ('b'). Nach LŚschung eventuell auftretender Fehler’’’’’’’’’’Nist somit sichergestellt, daū der FŁnger immer weiterarbeiten kann. ’’’’’’’’’’.#ib(9)#Wichtiger Hinweis#ie(9)# ’’’’’’’’’’’’’’n 1. #on("italics")##on("bold")#Da im 'disable stop'-Zustand kein Fehler zum Abbruch fŪhrt, kann’’’’’’’’’’’N eine Operation in diesem Zustand auch nicht durch 'halt' abgeŻ’’’’’’’’N brochen werden. Einerseits ist das fŪr manche Systemteile wŪnŻ’’’’’’’’N schenswert, andererseits kŚnnen Operationen, die auf Grund von’’’’’’’’N Programmierfehlern nicht terminieren (Endlosschleifen), nicht’’’’’’’’’N unter Kontrolle gebracht werden. Also Vorsicht! (Letztes Mittel:’’’’’’> Task lŚschen)#off("italics")##off("bold")# ’’’’’’’’’’’^ 2. #on("i")##on("b")#Es ist nicht (!) garantiert, daū im Fehlerzustand aufgerufene’’’’’’’N Prozeduren ihre normale Wirkung haben. Garantiert ist dies jeŻ’’’’’’’’N doch fŪr alle Prozeduren und Operatoren, die in diesem KapiŻ’’’’’’’’’’> tel aufgefŪhrt werden.#off("i")##off("b")# ’’’’’’’’’’’n#on("italics")##on("bold")#Merke: Fehler sind im EUMEL-System Aufrufe der Prozeduren 'errorstop',’’’’’’’’’’’’N 'stop' oder das BetŁtigen der SV Taste und dem Supervisor-’’’’’’’’’’’’N Kommando 'halt'. Ein Fehler gilt solange, bis er mit Hilfe der’’’’’’’’N Prozedur 'clear error' gelŚscht wurde. Die Prozeduren 'enable/’’’’’’’’N disable stop' steuern die Abarbeitung der Operationen im FehlerŻ’’’’’’N fall. Gilt fŪr eine Operation 'enable stop', wird die Operation’’’’’’’N abgebrochen, d.h. die restlichen Anweisungen der Operation’’’’’’’’’’’’N nach der Fehler auslŚsenden Anweisung werden nicht durchlauŻ’’’’’’’’’’N fen. Ist 'disable stop' gesetzt, werden die restlichen Operationen’’’’N weiterhin abgearbeitet. 'enable/disable stop' gilt fŪr alle - auch’’’’N indirekt - aufgerufenen Operationen ("Vererbung"), es sei denn, in’’’’N den gerufenen Operationen wird ein erneutes 'enable/disable’’’’’’’’’’’N stop' gesetzt. Ųber die Aufrufkette werden ggf. auch die Fehler’’’’’’’> zurŪck gemeldet.#off("italics")##off("bold")# ’’’’’’’’n #on("italics")##on("bold")#Eine FŁnger-Ebene ist eine Prozedur, die 'disable stop' setzt und’’’’’’’’’’N dann andere Operationen aufruft. Nach jedem dieser Aufrufe’’’’’’’’’’’’N kann eine Fehlerbehandlung mit 'clear error' durchgefŪhrt werŻ’’’’’’’’N den. Damit ist gewŁhrleistet, daū Fehler immer von der FŁnger-’’’’’’’’^ Ebene "aufgefangen" und entsprechend behandelt werden.#off("italics")##off("bold")# ’’>#ib(9)##ib#Prozeduren zur Fehlerbehandlung#ie##ie(9)# ’’’’’’’’#ib#clear error#ie# ’’’’’’’’’’ PROC clear error ’’’’’’’’^ Zweck: LŚscht den Fehlerzustand. 'is error' liefert anschlieūend wieder FALSE.’’’’’’’’’’’^ 'error message', 'error code' und 'error line' werden nicht gelŚscht. ’’’’’’’’’’’’#ib#disable stop#ie# ’’’’’’’’’ PROC disable stop ’’’’’’’^ Zweck: Unterbindet den Abbruch in aufgerufenen Operationen. 'disable stop'’’’’’’’’’’’’’’’^ gilt fŪr die Prozedur, in der sie aufgerufen wird und in allen folgenden’’’’’’’’’’^ gerufenen Prozeduren, es sei denn, sie wird durch 'enable stop' auūer’’’’’’’’’’’’’^ Kraft gesetzt. Wird die Operation verlassen, in der 'disable stop' aufgeŻ’’’’’’’’’^ rufen wurde, wird der "alte" Zustand wiederhergestellt, der vor dem’’’’’’’’’’’’’’’^ Aufruf der Operation galt. 'disable stop' kann weiterhin in einer aufgeŻ’’’’’’’’’’^ rufenen Operation durch den Aufruf von 'enable stop' in dieser und den’’’’’’’’’’’’> folgenden Operationen auūer Kraft gesetzt werden. #ib#enable stop#ie# ’’’’’’’’’’ PROC enable stop ’’’’’’’’SK PROC task (TEXT CONST taskname) #off("b")# ’’^ Liefert die Task des angegebenen Namens, falls sie existiert. Der eigene KatalŻ’’’’’’’’’’’’. og wird automatisch aktualisiert. ’’’’’’’’’. FEHLER : "taskname" gibt es nicht ’’’’’N #on("b")#TASK PROC task (INT CONST channel number) #off("b")# ’’’’’’’’’’’’’N Liefert den Namen der Task, die an dem angegebenen Kanal hŁngt. ’’’’’’’’’’’> #on("b")#TASK PROC brother (TASK CONST task) #off("b")# ’’’^ Liefert den nŁchsten Bruder von 'task'. Falls kein Bruder existiert, wird 'niltask'’’’’’’’’N geliefert. Aktualisiert den eigenen Katalog nicht automatisch! ’’’’’’’’’’’’. #on("b")#TASK PROC father #off("b")# ’’’’’’. Liefert die eigene Vatertask. ’’’’’’’’’’’’’> #on("b")#TASK PROC father (TASK CONST task) #off("b")# ’’’’^ Liefert den Vater von 'task'. Existiert kein Vater (z.B. bei UR), wird niltask gelieŻ’’’’’’> fert. Aktualisiert den eigenen Katalog nicht automatisch! ’. #on("b")#TASK PROC myself #off("b")# ’’’’’’. Liefert eigenen Task-Bezeichner. ’’’’’’’’’’> #on("b")#TASK PROC son (TASK CONST task) #off("b")# ’’’’’’’^ Liefert den ersten Sohn von 'task'. Falls keiner im Katalog vermerkt ist, wird’’’’’’’’’’’’’N 'niltask' geliefert. Aktualisiert den eigenen Katalog nicht automatisch! ’’. #on("b")#TASK PROC archive #off("b")# ’’’’’N Liefert den internen Taskbezeichner der aktuellen Task mit Namen ARCHIVE.’’N Diese Prozedur dient zum schnellen und bequemen Ansprechen der Archivtask. . #on("b")#TASK PROC printer #off("b")# ’’’’’^ Liefert den internen Taskbezeichner der aktuellen Task mit Namen #ib#PRINTER#ie#.’’’’’’’’’’N Diese Prozedur dient zum schnellen und bequemen Ansprechen des DruckspooŻ’’. #on("b")#TASK PROC public #off("b")# ’’’’’’N Liefert den internen Taskbezeichner der Task #ib#PUBLIC#ie#. ’’’’’’’’’’’’’’. #on("b")#TASK PROC supervisor #off("b")# ’’> Liefert den internen Taskbezeichner des Supervisors. ’’’’’’> #on("b")#TEXT PROC name (TASK CONST task) #off("b")# ’’’’’’^ Liefert den Namen von 'task'. Die Task muū noch im System existieren, sonst ist’’’’’’’’’’’’N der Name nicht mehr bekannt. Falls die 'task' noch nicht im eigenen Katalog. enthalten ist, wird er aktualisiert. ’’’’’’'rename myself' ’’’’’’’’’’’’’’N #on("b")#PROC rename myself (TEXT CONST neuer name) #off("b")# ’’’’’’’’’’’’N Name der eigenen Task wird in 'neuer name' geŁndert. Wirkt wie LŚschung und^ Wiedereinrichten der Task in Bezug auf alle TASK VAR's die sich auf diese Task’’’’’’’’’’’’’. FEHLER : Task existiert bereits ’’’’’’’’’ Name unzulŁssig . => anderen Namen wŁhlen ’’’’’’’’> #on("b")#PROC reserve (TASK CONST task) #off("b")# ’’’’’’’’^ Reservieren einer Task fŪr den ausschlieūlichen Dialog mit der Task, in der das’’’’’’’’’’’’ Kommando gegeben wurde. ’’’N #on("b")#PROC reserve (TEXT CONST message, TASK CONST task) #off("b")# ’’’’N Wie 'reserve (TASK CONST task)' mit Ųbergabe einer 'message'. ’’’’’’’’’’’’’^ Die reservierte Task muū ein spezieller Manager, (z.B. /"DOS" aus dem Werkzeug’’’’’’’’’’’’’ MS-DOS-DAT) sein ! ’’’’’’’’4.2.4 Handhabung von Dateien > #on("b")#PROC copy (TEXT CONST quelle, ziel) #off("b")# ’’’^ Kopiert die Datei 'quelle' in eine neue Datei mit dem Namen 'ziel' in der BenutŻ’’’’’’’’’’’. FEHLER : "ziel" existiert bereits ’’’’’’’’. "quelle" gibt es nicht ’’’’’’’’’’ zu viele Dateien > #on("b")#PROC forget (TEXT CONST dateiname) #off("b")# ’’’’N LŚschen einer Datei mit dem Namen 'dateiname' in der Benutzer-Task. ’’’’’’’. FEHLER : "datei" gibt es nicht ’’’’’’’’’’’N #on("b")#PROC forget (THESAURUS CONST thesaurus) #off("b")# ’’’’’’’’’’’’’’’N LŚscht die im 'thesaurus' enthaltenen Dateien in der Benutzer-Task. ’’’’’’’N Im Dialog erfolgt vor dem LŚschen einer Datei standardmŁūig die Abfrage: ’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ forget("einedatei") ’’’’’’ "einedatei" lŚschen(j/n) ? ’’N____________________________________________________________________________ ’. #on("b")#PROC list #off("b")# ’’’’’’’’’’’’’^ Listet alle Dateien der Benutzer-Task mit Namen und Datum des letzten Zugriffs’’’’’’’’’’’’’ auf dem Terminal auf. ’’’’’> #on("b")#PROC list (TASK CONST task) #off("b")# ’’’’’’’’’’’N Listet alle Dateien der angegebenen 'task' mit Namen und Datum der letzten’> Önderung auf dem Terminal auf. Die Task muū Manager sein. ’> #on("b")#PROC list (FILE VAR liste) #off("b")# ’’’’’’’’’’’’^ Listet alle Dateinamen in die Datei 'liste', die mit 'output'(s. 5.3.5) assoziiert sein’’’’N #on("b")#PROC list (FILE VAR liste, TASK CONST manager) #off("b")# ’’’’’’’’^ Listet alle Dateien der Task 'manager' mit Namen und Datum der letzten ÖndeŻ’’’’’’’’’’’’’’’ rung in die Datei 'liste'. N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’’’’> FILE VAR f:= sequential file (output,"list");list(f,archive) N____________________________________________________________________________ ’N #on("b")#PROC rename (TEXT CONST altername, neuername) #off("b")# ’’’’’’’’’> Umbenennen einer Datei von 'altername' in 'neuername'. ’’’’. FEHLER : "neuername" gibt es bereits ’’’’. "altername" gibt es nicht ’’’’’’4.2.5 Editor-Prozeduren ’’’’> #on("b")#PROC edit (TEXT CONST dateiname) #off("b")# ’’’’’’. Ruft den Editor mit 'dateiname' auf. ’’’’’’. #on("b")#PROC edit #off("b")# ’’’’’’’’’’’’’ a) Im Monitor: ’’’’’’’’’’’’N Ruft den Editor mit den zuletzt verwandten Dateinamen auf. ’’’’’’’’’’’’’ b) Im Editor: ’’’’’’’’’’’’’. Der Dateiname wird erfragt. ’’’’’’’’’’’’ FŪr jedes 'edit' gilt: ’’’’^ Wurde 'edit' zum ersten Mal aufgerufen, nimmt das Fenster den gesamten BildŻ’’’’’’’’’’’’’’’^ schirm ein. Bei erneutem 'edit'-Aufruf wird ein Fenster nach rechts unten ab der’’’’’’’’’’’. aktuellen Cursor-Position erŚffnet. ’’’’’’’> #on("b")#PROC edit (THESAURUS CONST t) #off("b")# ’’’’’’’’’N Editieren aller in dem Thesaurus 't' enthaltenen Dateien nacheinander. ’’’’^ Weitere 'edit-Prozeduren', die z.B. Variation der FenstergrŚūe etc. zulassen, sind’’’’’’’’’ in 5.4.6 beschrieben. ’’’’’> #on("b")#PROC editget (TEXT VAR editsatz) #off("b")# ’’’’’N Ausgabe einer (Kommando)zeile, in der Editorfunktionen zur VerfŪgung’’’’’’’ stehen siehe Teil 5.5.1.4. > #on("b")#PROC show (TEXT CONST dateiname) #off("b")# ’’’’’’^ Die Datei wird am Bildschirm gezeigt. Positionierung und Suchen funktionieren wie’’’’’’’’’’^ in 'edit', Aktionen die Önderungen in der Datei bewirken wŪrden, werden nicht’’’’’’’’’’’’’’ angenommen. ’’’’’’’’’’’’’’’. #on("b")#PROC show #off("b")# ’’’’’’’’’’’’’. 'show' auf der zuletzt bearbeiteten Datei. 'kommando auf taste legen' ’’’^ #on("b")#PROC kommando auf taste legen (TEXT CONST taste, elan programm)#off("b")# ’’’’’’’’^ Die Taste 'taste' wird mit dem angegebenen ELAN-Programm belegt. Durch ’’’’’’’’’’’’’’’> wird das Programm direkt ausgefŪhrt. ’’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’’’N kommando auf taste legen ("a","fetch (SOME archive,archive)") ’’’’’’’’’’’’’’N____________________________________________________________________________ ’'kommando auf taste' ’’’’’’’’’N #on("b")#TEXT PROC kommando auf taste (TEXT CONST taste)#off("b")# ’’’’’’’’N Falls 'taste' mit einem ELAN-Programm belegt ist, liefert die Prozedur den’> Programmtext, andernfalls d^ Zweck: Setzt die Wirkung eines Aufrufs von 'disable stop' zurŪck. Fehler ('errorŻ’’’’’’’’^ stop', 'stop' oder 'halt') in der aktuellen Operation oder den folgenden’’’’’’’’’’^ aufgerufenen Operationen fŪhren zum Abbruch. Bisher nicht gelŚschte’’’’’’’’’’’’’’’N Fehler (siehe 'clear error') fŪhren sofort zum Abbruch. ’’’’’’’’’’>#ib#error code#ie##--goalpage ("fehlercodes")# ’’’’’’’’’’’’’’’ INT PROC error code ’’’’’^ Zweck: Liefert den durch 'errorstop' gesetzten #ib#Fehlercode#ie#. Beispiel: ’’’’’’’’’’’’ PROC test: ’’’’ enable stop; > error stop (110, "Dies ist mein Abbruch!"); ’ END PROC test;  ... ’’’’’’’’’’’ disable stop; ’ test; ’’’’’’’’’> put (error code); (* liefert 110 *) ’’’’’’’’’ clear error; ’’ enable stop ’’’#ib#error line#ie# ’’’’’’’’’’’ INT PROC error line ’’’’’^ Zweck: Liefert die Zeilennummmer des Fehlers (Voraussetzung : Die ŲbersetŻ’’’’’’’’’’’’’’’. zung erfolgt im 'checkon-Modus). ’#ib#error message#ie# ’’’’’’’’ TEXT PROC error message ’^ Zweck: Liefert die Fehlermeldung als Text. Anhand dieser Meldung kann entŻ’’’’’’’’’’’’’’’> schieden werden, welcher Fehler vorliegt. ’’’’’’’’^ Hinweis: Eine Fehlermeldung "" (also: 'error stop ("")') fŪhrt zum Fehlerabbruch’’’’’’’’’N mit der Bedeutung "Fehlermeldung wurde bereits ausgegeben". DemŻ’’^ entsprechend erfolgt bei der Fehlermeldung 'niltext' keine Reaktion bei’’’’’’’’’’’ 'put error'. ’’’’’#ib#errorstop#ie# ’’’’’’’’’’’’. PROC error stop (TEXT CONST message) ’’’’N Zweck: Bricht ab und setzt die Zeilennummer (wenn man sich im 'checkon'-’^ Modus befindet), in der der Fehler aufgetreten ist, sowie den Text 'mesŻ’’’’’’’’’’^ sage'. Der Abbruch kann mit 'disable stop' unterbunden werden. 'errorŻ’’’’’’’’’’’’^ stop' hat keine Wirkung, wenn ein noch nicht gelŚschter Fehler vorliegt.’’’’’’’’’’^ Zu einer Fehlermeldung "" siehe auch die Prozedur 'error message'. Als’’’’’’’’’’’’. 'error-code' wird 0 gesetzt. ’’’’’> PROC error stop (INT CONST code, TEXT CONST message) ’’’’^ Zweck: Analog obiger 'errorstop'-Prozedur, aber mit Angabe des Fehlercodes,’’’’’’’’’’’’’’^ der durch die Prozedur 'error code' in einer FŁngerebene erfragt werŻ’’’’’’’’’’’’’ den kann. ’’’’’’’’#ib#is error#ie# ’’’’’’’’’’’’’ BOOL PROC is error ’’’’’’N Zweck: Informationsprozedur auf das Vorhandensein eines Fehlers. ’’’’’’’’#ib#put error#ie# ’’’’’’’’’’’’ PROC put error ’’’’’’’’’’^ Zweck: Gibt die durch 'errorstop' gesetzte Fehlermeldung aus, falls ein Fehler’’’’’’’’’’’N noch nicht gelŚscht ist (siehe auch: 'error message'). ’’’’’’’’’’’.#ib##ib(9)#Fehlercode#ie#s#ie(9)# ’’’’’’’’’’’’.Einige Fehlercodes sind bereits belegt: ’’’’’’N 0 kein Fehlercode spezifiziert (Standardwert) ’’’’’’’’’’’. 1 'halt' vom Terminal ’’’. 2 Stack-Ueberlauf ’’’’’’’. 3 Heap-Ueberlauf ’’’’’’’’. 4 INT-Ueberlauf ’’’’’’’’’. 5 DIV durch 0 ’’’’’’’’’’’. 6 REAL-Ueberlauf ’’’’’’’’. 7 TEXT-Ueberlauf ’’’’’’’’. 8 zu viele DATASPACEs ’’’> 9 Ueberlauf bei Subskription ’’’’’’’’’’’’> 10 Unterlauf bei Subskription ’’’’’’’’’’’’> 11 falscher DATASPACE-Zugriff ’’’’’’’’’’’’> 12 INT nicht initialisiert ’’’’’’’’’’’’’’’> 13 REAL nicht initialisiert ’’’’’’’’’’’’’’> 14 TEXT nicht initialisiert ’’’’’’’’’’’’’’. 15 nicht implementiert ’’’. 16 Block unlesbar ’’’’’’’’. 17 Codefehler ’’’’’’’’’’’’> 100 Syntax-Fehler beim Ųbersetzen ’’’’’’’’’.#ib(9)#4.2. #ib#THESAURUS#ie##ie(9)# ’’’’’’’’’^Ein #ib#Thesaurus#ie# ist ein #ib#Namensverzeichnis#ie#, das bis zu 200 Namen beinhalten kann.^Dabei muū jeder Namen mindestens ein Zeichen und darf hŚchstens 100 Zeichen lang’’’’’’’’’’’’’’>sein. Steuerzeichen (code < 32) sind in Namen nicht erlaubt. ’NEin Thesaurus ordnet jedem eingetragenen Namen einen Index zwischen 1 und 200’^(einschlieūlich) zu. Diese Indizes bieten dem Anwender die MŚglichkeit, Thesauri zur’’’’’’’’’’^Verwaltung benannter Objekte zu verwenden. (Der Zugriff erfolgt dann Ūber den Index’’’’’’’’’’’^eines Namens in einem Thesaurus). So werden Thesauri u.a. von der Dateiverwaltung’’’’’’’’’’’’’Nbenutzt. Sie bilden die Grundlage der ALL- und SOME-Operatoren. ’’’’’’’’’’’’’’.#ib(9)#Grundoperationen#ie(9)# ’’’’’’’’’’’’’’’#ib#CONTAINS#ie# ’’’’’’’’’’’’’> BOOL OP CONTAINS (THESAURUS CONST t, TEXT CONST name) ’’’N Zweck: Liefert genau dann TRUE, wenn 't' den Namen 'name' enthŁlt. Falls’N 'name=""' oder 'LENGTH name > 100', wird FALSE geliefert. ’’’’’’’’#ib#delete#ie# ’’’’’’’’’’’’’’’N PROC delete (THESAURUS VAR t, TEXT CONST name, INT VAR index) ’’’’’’’’’’’^ Zweck: Falls der Name 'name' im Thesaurus 't' enthalten ist, wird er dort geŻ’’’’’’’’’’’’^ lŚscht. In 'index' wird dann sein alter Index geliefert, unter dem er im’’’’’’’’’’^ Thesaurus eingetragen war. Ist der Name nicht im Thesaurus enthalten,’’’’’’’’’’’’’. wird 0 als Index geliefert. ’’’’’’> PROC delete (THESAURUS VAR t, INT CONST index) ’’’’’’’’’’N Zweck: Der Eintrag mit dem angegebenen Index wird aus dem Thesaurus 't'’’ gelŚscht. ’’’’’’’’#ib#empty thesaurus#ie# ’’’’’’. THESAURUS PROC empty thesaurus ’’’’’’’’’’N Zweck: FŪr Initialisierungszwecke wird ein leerer Thesaurus geliefert. ’’N PROC get (THESAURUS CONST t, TEXT VAR name, INT VAR index) ’’’’’’’’’’’’’’^ Zweck: Liefert den "nŁchsten" Eintrag aus dem Thesaurus 't'. "NŁchster" heiūt’’’’’’’’’’’’^ hier, der kleinste vorhandene mit einem Index grŚūer als 'index'. Dabei’’’’’’’’’’’^ wird in 'name' der Name und in 'index' der Index des Eintrags geliefert.’’’’’’’’’’^ D.h. 'index' wird automatisch weitergeschaltet. Den ersten Eintrag erhŁlt’’’’’’’’’N man entsprechend durch Aufruf mit 'index=0'. Nach dem letzten EinŻN trag wird 'name=""' und 'index=0' geliefert. Beispiel: ’’’’’’’’’’’. TEXT VAR name; ’’’’’’. INT VAR index := 0 ; > get (thesaurus, name, index) ; ’’’’’’. WHILE index > 0 REP ’. putline (name) ; ’’> get (thesaurus, name, index) ’’’’’’ PER ’#ib#highest entry#ie# ’’’’’’’’> INT PROC highest entry (THESAURUS CONST t) ’’’’’’’’’’’’’’N Zweck: Liefert den hŚchsten belegten Index des Thesaurus 't'. ’’’’’’’’’’’N Achtung: Das ist nicht die Anzahl der vorhandenen Namen, da durch’N LŚschungen LŪcken entstanden sein kŚnnen. ’’’’’’’’’’’’’’’#ib#insert#ie# ’’’’’’’’’’’’’’’N PROC insert (THESAURUS VAR t, TEXT CONST name, INT VAR index) ’’’’’’’’’’’N Zweck: Der Name 'name' wird als zusŁtzlicher Eintrag in den Thesaurus 't'^ eingetragen und der dafŪr vergebene Index geliefert. Falls der ThesauŻ’’’’’’’’’’’’^ rus schon voll ist und der Name nicht mehr eingetragen werden kann,’’’’’’’’’’’’’’’. wird 0 als Index geliefert. ’’’’’’en leeren Text niltext. ’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’’’. put (kommando auf taste("f")) ’’’’’’’’’’’’’’N____________________________________________________________________________ ’'taste enthaelt kommando' ’’’’N #on("b")#BOOL PROC taste enthaelt kommando (TEXT CONST taste)#off("b")# ’’’N Liefert TRUE falls 'taste' mit einem ELAN-Programm belegt ist. ’’’’’’’’’’’’'lernsequenz auf taste legen' ^ #on("b")#PROC lernsequenz auf taste legen (TEXT CONST taste, sequenz)#off("b")# ’’’’’’’’’’’^ 'taste' wird mit der Zeichenfolge 'sequenz' belegt. Durch wird die’’’’’’’’’’’> Zeichenfolge an der aktuellen Position ausgegeben. ’’’’’’’’^ Als Zeichenfolge sind natŪrlich auch einzelne Zeichen und EUMEL-Codes zulŁsŻ’’’’’’’’’’’’’’’^ Die vom System vorbelegten Tasten sind in 3.4 'Zeichen schreiben' aufgelistet. ’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’’’N lernsequenz auf taste legen ("x","gib kommando :"13""2""2"") ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’'lernsequenz auf taste' ’’’’’’N #on("b")#TEXT PROC lernsequenz auf taste (TEXT CONST taste) #off("b")# ’’’’> Liefert die auf 'taste' gelegte Zeichenfolge. ’’’’’’’’’’’’’'std tastenbelegung' ’’’’’’’’’> #on("b")#PROC std tastenbelegung #off("b")# ’’’’’’’’’’’’’’’N Die Standard-Tastenbelegung (s.3.4) wird (wieder) hergestellt. ’’’’’’’’’’’’> #on("b")#PROC word wrap (BOOL CONST b) #off("b")# ’’’’’’’’’^ Der automatische Zeilenumbruch wird durch 'word wrap (FALSE)' aus- und durch’’’’’’’’’’’’’’’^ 'word wrap (TRUE)' eingeschaltet. Wird diese Prozedur wŁhrend des Editierens’’’’’’’’’’’’’’’^ aufgerufen, gilt die Einstellung fŪr die aktuelle Textdatei. Wird die Prozedur als’’’’’’’’’N Monitor-Kommando gegeben, so gilt die Eingabe als Voreinstellung fŪr neue’’4.2.6 Dateitransfer’’’’’’’’’’NUnter diesem Abschnitt sind diejenigen Prozeduren beschrieben, die der simplenNKommunikation mit Manager-Tasks dienen: Holen oder Senden einer Dateikopie,’’’LŚschen in der Manager-Task. ’n#on("b")#ACHTUNG : FŪr alle Prozeduren gilt: falls die Manager-Task nicht existiert, wird eine’’’’’’’’’’’’’’’^Fehlermeldung erzeugt, existiert eine Task des angegebenen Namens, die aber nicht’’’’’’’’’’’’’>Managertask ist, so terminieren die Prozeduren nicht! ’’’’’’’’N #on("b")#PROC fetch (TEXT CONST dateiname, TASK CONST manager) #off("b")# ’> Kopiert die Datei 'dateiname' aus der Task 'manager' ’’’’’’N #on("b")#PROC fetch (THESAURUS CONST th, TASK CONST manager) #off("b")# ’’’^ Kopiert alle Dateien, deren Namen im Thesaurus th enthalten sind, aus der Task’’’’’’’’’’’’’ 'manager'. N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’’. fetch(ALL(12/"PUBLIC"), 12/"PUBLIC") ’’’’’’N____________________________________________________________________________ ’N Mit diesem Kommando werden (in einem EUMEL Netz) alle Dateien der Task’’’’’N 'PUBLIC' des Rechners mit der Stationsnummer 12 in diesem Netz kopiert. ’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’’. fetch(SOME archive , archive) ’’’’’’’’’’’’’N____________________________________________________________________________ ’^ Bietet den Thesaurus von 'ARCHIVE' an, nach Auswahl werden alle Dateien deren’’’’’’’’’’’’’’> Namen nicht gelŚscht wurden, von der Diskette kopiert. ’’’’> #on("b")#PROC fetch (TEXT CONST dateiname) #off("b")# ’’’’’> Kopiert die Datei 'dateiname' aus der Task 'father' ’’’’’’’> #on("b")#PROC fetch (THESAURUS CONST th) #off("b")# ’’’’’’’N Kopiert alle Dateien, deren Namen in 'th' sind aus der Task 'father'. ’’’’’. #on("b")#PROC fetchall #off("b")# ’’’’’’’’’. entspricht: fetch (ALL father, father) ’’’’> #on("b")#PROC fetchall (TASK CONST manager)#off("b")# ’’’’’. entspricht: fetch(ALL manager, manager) ’’’N #on("b")#PROC save (TEXT CONST dateiname, TASK CONST manager) #off("b")# ’’> Kopiert die Datei 'dateiname' in die Task 'manager' ’’’’’’’N #on("b")#PROC save (THESAURUS CONST th, TASK CONST manager) #off("b")# ’’’’^ Kopiert alle Dateien, deren Namen im Thesaurus th enthalten sind, in die Task’’’’’’’’’’’’’’ 'manager'. N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ save(all, (12/"PUBLIC")) ’N____________________________________________________________________________ ’N Mit diesem Kommando werden (in einem EUMEL Netz) alle Dateien der eigenen’’N Task in die Task 'PUBLIC' des Rechners mit der Stationsnummer 12 in diesem’ Netz kopiert. ’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’. save(SOME myself, manager) ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’N Bietet den eigenen Thesaurus an, nach Auswahl werden alle Dateien deren’’’’> Namen nicht gelŚscht wurden, zur Task 'manager' kopiert. ’’> #on("b")#PROC save (TEXT CONST dateiname) #off("b")# ’’’’’’> Kopiert die Datei 'dateiname' in die Task 'father' ’’’’’’’’> #on("b")#PROC save (THESAURUS CONST th) #off("b")# ’’’’’’’’^ Kopiert alle Dateien, deren Namen in 'th' enthalten sind, in die Task 'father'. ’’’’’’’’’’’. #on("b")#PROC save #off("b")# ’’’’’’’’’’’’’> Kopiert die zuletzt bearbeitete Datei in die Task 'father' . #on("b")#PROC saveall #off("b")# ’’’’’’’’’’. entspricht: save (all, father) ’’’’’’’’’’’’> #on("b")#PROC saveall (TASK CONST manager) #off("b")# ’’’’’. entspricht: save (ALL myself, manager) ’’’’N #on("b")#PROC erase (TEXT CONST dateiname, TASK CONST manager) #off("b")# ’> LŚscht die Datei 'dateiname' aus der Task 'manager' ’’’’’’’N #on("b")#PROC erase (THESAURUS CONST th, TASK CONST manager) #off("b")# ’’’^ LŚscht alle Dateien, deren Namen im Thesaurus th enthalten sind, aus der Task’’’’’’’’’’’’’’ 'manager'. > #on("b")#PROC erase (TEXT CONST dateiname) #off("b")# ’’’’’> LŚscht die Datei 'dateiname' aus der Task 'father' ’’’’’’’’> #on("b")#PROC erase (THESAURUS CONST th) #off("b")# ’’’’’’’N LŚscht alle Dateien, deren Namen in 'th' sind, aus der Task 'father' ’’’’’’. #on("b")#PROC erase #off("b")# ’’’’’’’’’’’’> LŚscht die zuletzt bearbeitete Datei aus der Task 'father' ^ Das Kommando 'print' beinhaltet den Auftrag an die Task 'PRINTER' die enthalŻ’’’’’’’’’’’’’’. tene(n) Datei(en) auszudrucken. ’’’’’’’’’’’N Voraussetzung ist natŪrlich, daū die Druckersoftware ordnungsgemŁū benutzt’N wurde, um 'PRINTER' einzurichten. Siehe dazu Systemhandbuch Teil 6. ’’’’’’’> #on("b")#PROC print (TEXT CONST dateiname) #off("b")# ’’’’’> Kopiert die Datei 'dateiname' in die Task 'PRINTER'. ’’’’’’> #on("b")#PROC print (THESAURUS CONST th) #off("b")# ’’’’’’’^ Kopiert alle Dateien, deren Namen im Thesaurus 'th' enthalten sind, in die Task’’’’’’’’’’’’ 'PRINTER'. . #on("b")#PROC print #off("b")# ’’’’’’’’’’’’N Kopiert die zuletzt bearbeitete Datei in die Task 'PRINTER'. ’’’’’’’’’’’’’’4.2.7 Passwortschutz ’’’’’’’’NDer Passwortschutz im EUMEL-System ist in verschiedener AusprŁgung mŚglich.’’’^Einfachste MŚglichkeit ist der Schutz einer Task durch ein Passwort. Falls diese Task’’’’’’’’’Nnicht Manager ist, kŚnnen alle Daten und Programme, die nur in dieser Task zurNVerfŪgung stehen, auch nur vom Besitzer der Task benutzt werden. ’’’’’’’’’’’’’N Achtung: Mehrfacheintragungen sind mŚglich. Wenn man diese verhinŻN dern will, muū man entsprechend vermittels ’’’’’’’’’’’’’’> IF NOT t CONTAINS name ’’’’’’’’’’’’’’> THEN insert (t, name, index) ’’’’’’ FI ’’. eintragen. ’’’’’’’’’’’’’’ Fehlerfall: ’’’’’’’’’’’’’ * Name unzulaessig > PROC insert (THESAURUS VAR t, TEXT CONST name) ’’’’’’’’’’^ Zweck: s.o. Allerdings wird der Index des Namens nicht geliefert. Ein ThesauŻ’’’’’’’’’’’’N rusŪberlauf wird entsprechend als 'errorstop' gemeldet. ’’’’’’’’’’ FehlerfŁlle: ’’’’’’’’’’’’ * Name unzulaessig ’. * THESAURUS-Ueberlauf ’’’’’’’’’’’’’’> INT PROC link (THESAURUS CONST t, TEXT CONST name) ’’’’’’^ Zweck: Liefert den Index des Namens 'name' im Thesaurus 't'. Falls der Name’’’’’’’’’’’’’’^ nicht enthalten ist, wird 0 geliefert. Ist der Name mehrfach im ThesauŻ’’’’’’’’’’’^ rus enthalten, ist nicht definiert, welcher der mŚglichen Indizes geliefert’’’’’’’ wird. ’’’’’’’’’’’’> TEXT PROC name (THESAURUS CONST t, INT CONST index) ’’’’’N Zweck: Liefert den Namen des Eintrags mit dem Index 'index' aus dem TheŻ’^ saurus 't'. Falls kein solcher Eintrag im Thesaurus enthalten ist, wird’’’’’’’’’’’. Niltext geliefert. ’’’’’’’’’’’’’’’#ib#rename#ie# ’’’’’’’’’’’’’’’> PROC rename (THESAURUS VAR t, TEXT CONST old, new) ’’’’’’^ Zweck: Öndert im Thesaurus 't' einen Eintrag mit dem alten Namen 'old' in 'new'’’’’’’’’’’^ um. Falls 'old' nicht im Thesaurus enthalten ist, wird keine Leistung’’’’’’’’’’’’’^ erbracht. Falls 'old' mehrfach in 't' enthalten ist, ist nicht definiert, welŻ’’’’> cher der mŚglichen EintrŁge geŁndert wird. ’’’’’’’ Fehlerfall: ’’’’’’’’’’’’’. * Name unzulaessig ’’’’’’’’’’’’’’’N PROC rename (THESAURUS VAR t, INT CONST index, TEXT CONST new) ’’’’’’’’’’^ Zweck: Öndert im Thesaurus 't' den Namen des durch 'index' identifizierten’’’’’’’’’’’’’’’. Eintrags in 'new'. ’’’’’’’’’’’’’’’ Fehlerfall: ’’’’’’’’’’’’’. * Name unzulaessig ’’’’’’’’’’’’’’’#ib#THESAURUS#ie# ’’’’’’’’’’’’ TYPE THESAURUS ’’’’’’’’’’. Zweck: Bezeichnet Thesaurus-Datenobjekte > OP := (THESAURUS VAR dest, THESAURUS CONST source) ’’’’’’ Zweck: Zuweisung ’’’’’’’’.#ib(9)#VerknŪpfungsoperationen#ie(9)# ’’’’’’’’^Das Paket '#ib#nameset#ie#' bietet die MŚglichkeit, Operationen nicht nur auf einzelnen DateiŻ>en, sondern auf (geordneten) Mengen ablaufen zu lassen: ’’’’’’. THESAURUS OP ALL (TASK CONST task) ’’’’’’N Zweck: Liefert einen Thesaurus, der alle Dateinamen der angegebenen Task’ enthŁlt. ’’’’’’’’’. THESAURUS OP ALL (TEXT CONST file name) ’^ Zweck: Liefert einen Thesaurus, der die in der angegebenen Datei vorhandeŻ’’’’’’’’’’’’’’’> nen Namen (jede Zeile ein Name) enthŁlt. ’’’’’’’’’ THESAURUS PROC all ’’’’’’^ Zweck: Liefert einen Thesaurus, der alle Dateinamen der eigenen Task enthŁlt.’’’’’’’’’’’’. Entspricht 'ALL myself'. ’’’’’’’’’N THESAURUS OP LIKE (THESAURUS CONST thesaurus, TEXT CONST muster) ’’’’’’’’^ Zweck: Alle im Thesaurus enthaltenen Dateien, die dem 'muster' entsprechen’’’’’’’’’’’’’’’> sind im Ergebnisthesaurus enthalten. ’’’’’’’’’’’’’^ (Die Syntax von 'muster' findet man bei der Beschreibung des Pattern-’’’’’’’’’’’’’ Matching) ’’’’’’’’> THESAURUS OP SOME (THESAURUS CONST thesaurus) ’’’’’’’’’’’N Zweck: Bietet den angegebenen Thesaurus im EUMEL-Editor zum Öndern an.’’’N Es kŚnnen nicht erwŪnschte Namen gestrichen werden. ’’’’’’’’’’’’’’. THESAURUS OP SOME (TASK CONST task) ’’’’’. Zweck: Aufruf von: SOME ALL task. ’’’’’’’. THESAURUS OP SOME (TEXT CONST file name) . Zweck: Aufruf von: SOME ALL filename. ’’’#ib#FILLBY#ie# ’’’’’’’’’’’’’’’> OP FILLBY (THESAURUS VAR thesaurus, FILE VAR file) ’’’’’’^ Zweck: Schreibt 'file' in den Thesaurus. Dabei werden Zeilen, die schon im’’’’’’’’’’’’’’’^ Thesaurus sind, nicht mehr in den Thesaurus geschrieben. Jede Zeile’’’’’’’’’’’’’’’> kommt im Thesaurus also nur einmal vor. ’’’’’’’’’’> OP FILLBY (FILE VAR file, THESAURUS CONST thesaurus) ’’’’> Zweck: Schreibt den Thesaurus in die Datei 'file'. ’’’’’’. OP FILLBY (TEXT CONST filename, ’’’’’’’’’> THESAURUS CONST thesaurus) ’’’’’’’’’^ Zweck: Richtet eine Datei mit dem Namen 'filename' ein und schreibt den TheŻ’’’’’’’’’’’’’. saurus in die Datei. ’’’’’’’’’’’’’> THESAURUS OP + (THESAURUS CONST left, right) ’’’’’’’’’’’’N Zweck: Liefert die Vereinigungsmenge von 'left' und 'right'. ’’’’’’’’’’’’N Achtung: Die Vereinigungsmenge enthŁlt keine Namen mehrfach. ’’’’’> THESAURUS OP + (THESAURUS CONST left, TEXT CONST right) ’^ Zweck: FŪgt dem Thesaurus 'right' zu, wenn 'right' noch nicht im Thesaurus’’’’’’’’’’’’’’’ enthalten ist. ’’’> THESAURUS OP - (THESAURUS CONST left, right) ’’’’’’’’’’’’^ Zweck: Liefert die Differenzmenge. Achtung: Die Differenzmenge enthŁlt keine’’’’’’’’’’’’’ Namen mehrfach. ’’> THESAURUS OP - (THESAURUS CONST left, TEXT CONST right) ’> Zweck: Nimmt den Namen 'right' aus dem Thesaurus. ’’’’’’’> THESAURUS OP / (THESAURUS CONST left, right) ’’’’’’’’’’’’. Zweck: Liefert die Schnittmenge ’’’’’’’’’N Achtung: Die Schnittmenge enthŁlt keine Namen mehrfach. ’’’’’’’’’’N PROC do (PROC (TEXT CONST) operate, THESAURUS CONST thesaurus) ’’’’’’’’’’^ Zweck: Ruft 'operate' nacheinander mit allen im Thesaurus enthaltenen Namen’’’’’’’’’’’’’’ auf. ’’’’’’’’’’’’’> PROC do (PROC (TEXT CONST, TASK CONST) operate, ’’’’’’’’’> THESAURUS CONST thesaurus, TASK CONST task) ’’’’ Zweck: s.o. ’’’’’’’’’’’’’#ib#erase#ie# . PROC erase (THESAURUS CONST thesaurus) ’’N Zweck: LŚscht alle aufgefŪhrten Dateien in der Vater-Task. ’’’’’’’’’’’’’’N PROC erase (THESAURUS CONST thesaurus, TASK CONST manager) ’’’’’’’’’’’’’’N Zweck: LŚscht alle aufgefŪhrten Dateien in der Task 'manager'. ’’’’’’’’’’#ib#fetch#ie# . PROC fetch (THESAURUS CONST thesaurus) ’’> Zweck: Holt alle aufgefŪhrten Dateien vom Vater. ’’’’’’’’N PROC fetch (THESAURUS CONST thesaurus, TASK CONST manager) ’’’’’’’’’’’’’’> Zweck: Holt alle aufgefŪhrten Dateien vom 'manager'. ’’’’#ib#fetch all#ie# ’’’’’’’’’’’’. PROC fetch all (TASK CONST manager) ’’’’’^ Zweck: Holt alle Dateien vom 'manager'. Diese Prozedur entspricht dem Aufruf’’’’’’’’’’’’’> der Prozedur 'fetch (ALL manager, manager)'. ’’’’’ PROC fetch all ’’’’’’’’’’> Zweck: Aufruf der Prozedur 'fetch all (father)'. ’’’’’’’’#ib#forget#ie# ’’’’’’’’’’’’’’’. PROC forget (THESAURUS CONST thesaurus) ’N Zweck: LŚscht alle aufgefŪhrten Dateien in der Benutzer-Task. ’’’’’’’’’’’#ib#insert#ie# ’’’’’’’’’’’’’’’. PROC insert (THESAURUS CONST thesaurus) ’N Zweck: Insertiert alle aufgefŪhrten Dateien in der Benutzer-Task. ’’’’’’’#ib#remainder#ie# ’’’’’’’’’’’’ PROC remainder ’’’’’’’’’’^ Zweck: Liefert nach einem 'errorstop' die noch nicht bearbeiteten Dateien. ’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’. 'save all (archive)' ’’’’’’’’’’’^ kann dazu fŪhren, daū nicht alle Dateien auf das Archiv geschrieŻ’’’’’’’’’’’’> ben werden kŚnnen. Fehlermeld^Öhnlich kann auch von einer Manager-Task aus der gesamte Zweig unterhalb dieser’’’’’’’’’’’’’’’^Task mit einem Passwort geschŪtzt werden: beispielsweise kann es empfehlenswert’’’’’’’’’’’’’’’Nsein, den Systemzweig komplett zu schŪtzen, indem in SYSUR ein entsprechendes’Passwort vereinbart wird. ’’’’NEin Umgehen des Passwortschutzes bei Manager-Tasks (durch Einrichten einer’’’’NSohn-Task und 'fetchall') wird durch ein 'begin password' verhindert. ’’’’’’’’^Auch einzelne Dateien lassen sich schŪtzen, indem Lese/SchreibpasswŚrter fŪr den’’’’’’’’’’’’’’.Dateitransfer vereinbart werden. ’’’’’’’’’’’’’>Generell gilt fŪr die Verwendung von Passworten: ’’’’’’’’’’’’’^- Passworte, die zu naheliegend gewŁhlt sind (Vorname des Lebenspartners o.Ł.)’’’’’’’’’’’’’’’N sind meistens sinnlos, falls wirklich Datenschutz bezweckt ist. ’’’’’’’’’’’^- Passworte, die so raffiniert sind, daū sogar ihr SchŚpfer sie vergiūt, fŪhren zu’’’’’’’’’’’N 100%igem Datenverlust, da die betroffene Task oder Datei nur noch gelŚscht’ werden kann. ’’’’’’’’’’’’’’N- Die Vereinbarung von "-" als Passwort bewirkt, daū die entsprechende AktionN nicht mehr durchgefŪhrt werden kann. Wird z.B. '-' als 'task password'’’’’’N eingegeben, so kann die Task nie wieder an ein Terminal gekoppelt werden. ’N- PasswŚrter kŚnnen geŁndert werden, indem das entsprechende Kommando noch’’’> einmal mit dem neuen Passwort gegeben wird. ’’’’’’’’’’’’’’’'begin password' ’’’’’’’’’’’’’N #on("b")#PROC begin password (TEXT CONST passwort) #off("b")# ’’’’’’’’’’’’’^ Auf Supervisor-Ebene wird vor Einrichten einer neuen Task als Sohn der Task in’’’’’’’’’’’’’> der das 'begin password' gegeben wurde, dieses erfragt. ’’’N Das Password vererbt sich auf die hinzukommenden Sohn-Tasks. ’’’’’’’’’’’’’’N____________________________________________________________________________ ’ #on("b")#SYSUR#off("b")# ’ maintenance : ’’’’’’’’’’’’. begin password ("alles dicht") ’’’’’’’’’’’N____________________________________________________________________________ ’N____________________________________________________________________________ ’> Terminal 2 ’’’’’’’. EUMEL Version 1.8.1/M ’’’’. gib supervisor kommando: ’’’’’’’’’’’’’. begin ("sabotage","SYSUR") ’’’’’’’’’’’ Passwort: ’’’’’ ESC ? --> help ’’’’’’’’’’’’> ESC b --> begin("") ESC h --> halt ’’’’’’’’’’’’’> ESC c --> continue("") ESC s --> storage info ’’’’’> ESC q --> break ESC t --> task info ’’’’’’’’N____________________________________________________________________________ ’'enter password' ’’’’’’’’’’’’’N #on("b")#PROC enter password (TEXT CONST datei, schreibpass, lesepass) ’’’’ #off("b")# N Hiermit kŚnnen ausgewŁhlte Dateien einer Manager-Task geschŪtzt werden. DieN angegebene Datei wird mit Schreib- und Lesepassword versehen. Die PassŻ’’’’> wŚrter werden in der eigenen Task nicht berŪcksichtigt. ’’’^ Bei einem lesenden Zugriff (fetch) von irgendeiner Task aus auf die entsprechende’’’’’’’’’’N Datei in der Manager-Task muū das Lesepasswort, bei schreibendem Zugriff’’’> (save/erase) das Schreibpasswort vereinbart sein. ’’’’’’’’’N____________________________________________________________________________ ’ maintenance : ’’’’’’’’’’’’> enter password ("wichtige datei","sicher","heit") ’’’’’’’’N____________________________________________________________________________ ’N #on("b")#PROC enter password (TEXT CONST password) #off("b")# ’’’’’’’’’’’’’^ Passwort fŪr den Dateitransfer einstellen. Falls zwei verschiedene PasswŚrter fŪr’’’’’’’’’’^ Lesen und Schreiben vereinbart werden sollen, so sind sie als ein Text durch "/"’’’’’’’’’’’ getrennt einzugeben. ’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’. enter password ("sicher/heit") ’’’’’’’’’’’ gib kommando : ’’’’’’’’’’’ save(SOME all) ’’’’’’’’’’’N____________________________________________________________________________ ’'family password' ’’’’’’’’’’’’N #on("b")#PROC family password (TEXT CONST geheim) #off("b")# ’’’’’’’’’’’’’’^ Einstellen eines Passworts fŪr den Zweig des Systems , der unterhalb der (ManaŻ’’’’’’’’’’’’^ ger) Task liegt, in der das 'family password' eingegeben wurde. Dabei erhalten’’’’’’’’’’’’’^ alle Tasks, die kein Password oder dasselbe wie diese Manager-Task haben, das’’’’’’’’’’’’’’^ 'family password'. Tasks in dem Zweig, die ein eigenes anderes besitzen, behalŻ’’’’’’’’’’’’ ten dieses. ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’ Task1 "" . Task2 family password("fingerweg") ’’’’’’ Task21 geheim ’’’’’’’’ Task22 "" ’’’’’’’’’’’’ Task3 ""  Task31 "" ’’’’’’’’’’’’N____________________________________________________________________________ ’N____________________________________________________________________________ ’ Task1 ""  Task2 fingerweg ’’’’’’’’’ Task21 geheim ’’’’’’’’ Task22 fingerweg ’’’’’ Task3 ""  Task31 "" ’’’’’’’’’’’’N____________________________________________________________________________ ’'task password' ’’’’’’’’’’’’’’> #on("b")#PROC task password (TEXT CONST geheim) #off("b")# ^ Einstellen eines Passworts fŪr die Task in der es gegeben wird. Ist eine Task mit’’’’’’’’’’N einem Passwort geschŪtzt, so wird durch den Supervisor nach dem 'continue'-N Kommando das Passwort angefragt (Entsprechend dem 'begin password'). Nur’’’^ nach Eingabe des richtigen Passworts gelangt man in die gewŪnschte Task. Das’’’’’’’’’’’’’’’N Passwort kann durch nochmaligen Aufruf von 'task password' geŁndert werden,N z.B. wenn es in regelmŁūigen AbstŁnden geŁndert werden muū, um personenbeŻ’ zogene Daten zu schŪtzen. ’4.2.8 Das Archiv ’’’’’’’’’’’’^Mit dem Terminus 'Archiv' wird beim EUMEL-System ein Diskettenlaufwerk bezeichŻ’’’’’’’’’’’’’’’^net, das nur Datensicherungsaufgaben dient. Falls ein Rechner eins von zwei vorhanŻ’’’’’’’’’’’^denen Diskettenlaufwerk als Arbeitsspeicher benutzt, so wird dieses als Hintergrund’’’’’’’’’’’^bezeichnet. Falls Sie einen derartigen Rechner benutzen, kŚnnen Sie der InstallaŻ’’’’’’’’’’’’’Ntionsanleitung entnehmen, welches Laufwerk welcher Aufgabe zugeordnet ist. ’’’^Das #ib#Archiv#ie# Ūbernimmt im EUMEL-System die Verwaltung der langfristigen DatenŻ’’’’’’’’’’.haltung. Das Archiv sollen Sie benutzen, um: ’N- Sicherungskopien wichtiger Dateien auūerhalb des Rechners zu besitzen; ’’’’^- nicht benŚtigte Dateien auūerhalb einer Task zu halten (Speicherplatzersparnis!); ’’’’’’’’’.- Dateien auf andere Rechner zu Ūbertragen. ’NDas Archiv wird im EUMEL-System durch die Task 'ARCHIVE', die das DiskettenŻ’’.laufwerk des Rechners verwaltet, realisiert. ’.- reservieren : archive ’’’’’’’’.- freigeben : release ’’’’’’’’.- lŚschen : clear , format ’.- prŪfen : check ’’’’’’’’’’> #on("b")#PROC archive (TEXT CONST archivname) #off("b")# ’’N Reservierung der Task ARCHIVE fŪr den exklusiven Dialog mit der aufrufenden^ Task. 'archivname' wird bei allen folgenden Archivoperationen mit dem der DisketŻ’’’’’’’’’’^ te zugewiesenen (und hoffentlich auf dem Aufkleber vermerkten) Namen abgegliŻ’’’’’’’’’’’’’’> #on("b")#PROC release (TASK CONST archive) #off("b")# ’’’’’N Nach diesem Kommando kann die Task 'ARCHIVE' mit ihren Leistungen von einerN anderen Task in Anspruch genommen werden. Fung: ’’’’’’’’’’’N '"....." kann nicht geschrieben werden (Archiv voll)' ’’’’’’’’’’N Nachdem man eine neue Floppy ins Archivlaufwerk gelegt hat,’’ kann man mit . 'save (remainder, archive)' ’’’’> den Rest der Dateien auf der Floppy sichern. . PROC save (THESAURUS CONST thesaurus) ’’’> Zweck: Schickt alle aufgefŪhrten Dateien zur Vater-Task. N PROC save (THESAURUS CONST thesaurus, TASK CONST manager) ’’’’’’’’’’’’’’’ Zweck: s.o. ’’’’’’’’’’’’’#ib#save all#ie# ’’’’’’’’’’’’’. PROC save all (TASK CONST manager) ’’’’’’^ Zweck: Schickt alle eigenen Dateien zum 'manager'. Diese Prozedur entspricht’’’’’’’’’’’’’N dem Aufruf der Prozedur 'save (ALL myself, manager)'. ’’’’’’’’’’’’ PROC save all ’’’’’’’’’’’> Zweck: Aufruf der Prozedur 'save all (father)'. ’’’’’’’’’. save (ALL myself) ’’’’’’’’. forget (ALL myself) ’’’’’’. forget (all) ’’’’’’’’’’’’’. fetch (SOME father) ’’’’’’> fetch (ALL father - ALL myself) ’’’’’’’’’’. insert (ALL "gen datei") ’> save (ALL myself - ALL archive, archive) ’>#ib(9)#4.3. #ib#Kommandos und Dialog#ie(9)##ie# ’’’’’’’’’’’’’’.#ib##ib(9)#Kommandodialog#ie##ie(9)# ’’’’’’’’’^Das Paket "#ib#command dialogue#ie#" dient zur zentralen Steuerung und einfachen DurchŻ’’’’’’’.fŪhrung von #ib#Kommando-Dialog#ie#en wie ’’’’ "datei" loeschen (j/n)? ’^Er wird von allen Systemteilen verwandt, die einen Kommandodialog mit dem BenutŻ’’’’’’’’’’’’’’^zer aufnehmen. Anwenderprozeduren mit Łhnlichen Problemen sollten genauso damit’’’’’’’’’’’’’’’NDer Kommandodialog kann zentral aus- und eingeschaltet werden. ’’’’’’’’’’’’’’’#ib#command dialogue#ie# ’’’’’. BOOL PROC command dialogue ’’’’’’’’’’’’’’N Zweck: Liefert den aktuellen Zustand des Kommandodialogs: ’’’’’’’’’’’’’’’> TRUE - Dialog soll gefŪhrt werden! ’’’’’’’’’’’’> FALSE - Dialog soll nicht gefŪhrt werden! ’’’’’’> PROC command dialogue (BOOL CONST status) ’’’’’’’’’’’’’’’^ Zweck: Schaltet den Kommandodialog ein ('status' = TRUE) oder aus ('status'’’’’’’’’’’’’’’^ = FALSE). Der alte Zustand wird Ūberschrieben. Soll spŁter wieder in’’’’’’’’’’’’’’^ den alten Zustand zurŪckgeschaltet werden, muū er vorher erfragt und’’’’’’’’’’’’’’ gesichert werden. . BOOL PROC yes (TEXT CONST question) ’’’’’N Zweck: a) Kommandodialog soll gefŪhrt werden (command dialogue = TRUE) ’’^ Der Ūbergebene Fragetext wird durch " (j/n)?" ergŁnzt auf dem TerŻ’’’’’’’’’’’’’N minal ausgegeben. Als Antwort wird eine der Tasten , ,’’’N , , , akzeptiert; jede andere Eingabe fŪhrt zu’’’’^ einem akustischen Signal und der Fragewiederholung. Das Resultat’’’’’’’’’’’’’’’. der Prozedur ist ’’’’’’’’’’’’’’> TRUE bei bejahender Antwort (j,J,y,Y) > FALSE bei verneinender Antwort (n,N) ’’N b) Kommandodialog soll nicht gefŪhrt werden (command dialogue =’’’ FALSE) ’’’’’’’’> Keine Aktion, das Resultat ist TRUE. ’’’’’’’’’’. BOOL PROC no (TEXT CONST question) ’’’’’’N Zweck: a) Kommandodialog soll gefŪhrt werden (command dialogue = TRUE) ’’N Frage und Antwort wie bei 'yes'. Das Resultat ist ’’’’’’’’’’’’’> TRUE bei verneinender Antwort (n,N) ’’> FALSE bei bejahender Antwort (j,J,y,Y) N b) Kommandodialog soll nicht gefŪhrt werden (command dialogue =’’’ FALSE) ’’’’’’’’> Keine Aktion, das Resultat ist FALSE. ’’’’’’’’’. PROC say (TEXT CONST message) ’’’’’’’’’’’> Zweck: IF command dialogue THEN out (text) FI ’’’’’’’’’’’#ib#last param#ie# ’’’’’’’’’’’ TEXT PROC last param ’’’’^ Zweck: Liefert den zuletzt gesetzten Parameter-Text (siehe folgende ProzeŻ’’’’’’’’’’’’’’’N dur). Falls 'command dialogue' = TRUE und die 'param position' > 0^ ist, wird der Parametertext als Standardparameter an der angegebenen’’’’’’’’’’’’’’^ x-Position eine Zeile hŚher in der Form ("...") ausgegeben. Diese ProzeŻ’’’’’’’’’’N dur wird von den parameterlosen Kommandos bzw. Prozeduren wie’’’’’^ 'edit', 'run' usw. verwandt, um mit dem Standardparameter weiterzuarŻ’’’’’’’’’’’’’ beiten. ’’’’’’’’’’. PROC last param (TEXT CONST new) ’’’’’’’’^ Zweck: Setzt 'last param' auf 'new'. (Das Setzen muū explizit durchgefŪhrt’’’’’’’’’’’’’’’^ werden und geschieht nicht implizit durch den 'command handler'. 'Last’’’’’’’’’’’’^ param' wird beispielsweise von den einparametrigen Prozeduren 'edit'’’’’’’’’’’’’’’. und 'run' gesetzt. ’’’’’’’’’’’’’’’#ib#param position#ie# ’’’’’’’. PROC param position (INT CONST x) ’’’’’’’^ Zweck: Setzt die Echoposition fŪr 'last param'. Bei x=0 wird ein Echo unterŻ’’’’’’’’’’’’’ drŪckt. ’’’’’’’’’’ TEXT PROC std ’’’’’’’’’’’^ Zweck: Liefert wie 'last param' den zuletzt gesetzten Parameter. Im Gegensatz’’’’’’’’’’’’> dazu wird der Parameter aber nicht ausgegeben. ’’’.#ib##ib(9)#Kommandoverarbeitung#ie##ie(9)# ’’’^Das Paket '#ib#command handler#ie#' stellt Prozeduren zur #ib#Kommandoanalyse#ie# und zum’’’’’>FŪhren des kompletten Kommandodialogs zur VerfŪgung. ’’’’’’’’’#ib#get command#ie# ’’’’’’’’’’N PROC get command (TEXT CONST dialogue text, TEXT VAR command line) ’’’’’’^ Zweck: Falls eine Fehlermeldung aussteht, ('is error' liefert TRUE), wird sie Ūber’’’’’’’^ 'put error' ausgegeben und der Fehlerzustand zurŪckgesetzt. Der 'dialoŻ’’’’’’’’’’’N gue text' wird als Dialogaufforderung ausgegeben und der Benutzer’N kann eine Kommandozeile eingeben. Die letzte Kommandozeile wird’’’N ihm dabei automatisch (zum Öndern) angeboten, wenn vorher eine’’’’N Fehlermeldung anstand. Der Benutzer kann dies ebenfalls erreichen,N wenn er zu Beginn gibt. Die Kommandozeile wird dem AufŻ’’’> rufer in der Variablen 'command line' geliefert. ’> PROC get command (TEXT CONST dialogue text) ’’’’’’’’’’’’’^ Zweck: s.o. Allerdings wird eine interne Kommandozeile des Pakets 'command’’’’’’’’’’’’’’’^ handler' als 'command line' verwandt. Dadurch wird es mŚglich, alle’’’’’’’’’’’’’’’N Spuren einer Kommandoeingabe durch 'cover tracks' zu beseitigen. ’#ib#analyze command#ie# ’’’’’’N PROC analyze command (TEXT CONST command list, command line, ’’’’’’’’’’’’> INT CONST permitted type, ’’’’’’’’’N INT VAR command index, number of params, ’’’’’’’’’’> TEXT VAR param 1, param 2) ’’’’’’’’N Zweck: Die Ūbergebene Kommandozeile ('command line') wird anhand der’’’’’^ Ūbergebenen 'command list' analysiert. Sie ist ein TEXT, der aus einer’’’’’’’’’’’’N Folge von Kommandospezifikationen besteht. Jede hat die Form ’’’’’. K:I.P ’’’’’’’’’’’’’’N K Kommandotext, Prozedurname nach ELAN-Syntax ’’’’’’’’’’’> I Hauptindex, Form eines INT-Denoters ’’’^ P Parameterspezifikation, eine Folge der Ziffern 0, 1 und 2. ’’’’’’’’’’’’ Beispiele: ’’’’’’. - 'edit:15.012' ’’’’’’’’’’’’’’^ Das Kommando 'edit' wird in alls dieses Kommando nicht’’’’’’^ gegeben wird, aber seit 5 Minuten kein Dialog mit 'archive' stattfand, kann eine’’’’’’’’’’’^ andere Task durch die Anforderung 'archive("diskettenname")' das Archiv reserŻ’’’’’’’’’’’’’^ vieren. Durch diese Maūnahme wird verhindert, daū ein vergeūlicher Benutzer bei’’’’’’’’’’’’> einem System mit mehreren Benutzern das Archiv blockiert. ’> #on("b")#PROC clear (TASK CONST archive) #off("b")# ’’’’’’’^ LŚschen des Disketten-Inhaltsverzeichnisses und Zuweisung des in der ReservieŻ’’’’’’’’’’’’’ rung eingegebenen Namens. ’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’. archive("name"); #ib#clear#ie# (archive) ’N____________________________________________________________________________ ’^ Durch die AusfŪhrung des Kommandos erhŁlt die eingelegte Diskette den in der’’’’’’’’’’’’’’’^ Reservierung angegebenen Namen. #on("b")#Das Inhaltsverzeichnis, das sich auf der’’’’’’’’’’^ Diskette befindet, wird gelŚscht. Damit sind die Daten, die sich eventuell auf’’’’’’’’’’’’’n dieser Diskette befanden, nicht mehr auffindbar#off("b")#. Die Diskette entspricht einer neu’’’’’’’’’’’’’’’. formatierten Diskette#u#1)#e#. ’’’’’’’’’’’’N Man kann also eine beschriebene Diskette nicht umbenennen, ohne die darauf’. befindlichen Daten zu lŚschen. ’’’’’’’’’’’’> #u#1)#e# Das Kommando 'format' enthŁlt implizit 'clear'. ’’N Eine Neuformatierung ist demnach bei Wiederverwendung der Diskette nicht’’’ notwendig. > #on("b")#PROC format (TASK CONST archive) #off("b")# ’’’’’’^ Formatieren einer Diskette. Vor der erstmaligen Benutzung einer Archivdiskette’’’’’’’’’’’’’^ muū diese formatiert, d.h. in Spuren und Sektoren fŪr die Positionierung des’’’’’’’’’’’’’’’^ Schreib-/Lesekopfes des Diskettenlaufwerks eingeteilt werden, um Ūberhaupt ein’’’’’’’’’’’’’^ Beschreiben der Diskette zu ermŚglichen. Die Einteilung ist gerŁteabhŁngig, hŁufiŻ’’’’’’’’’ ge Formate sind: ’’’’’’’’’’> 40 Spuren zu je 9 Sektoren (360 K) ’’’’’’’’’’’’’> 80 Spuren zu je 9 Sektoren (720 K). ’’’’’’’’’’’’n Die #on("b")#Erst#off("b")#benutzung einer #ib#Archivdiskette#ie# erfordert nach der Reservierung des ArŻ’’ chivs das Kommando: ’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ archive("diskname"); ’’’’’ gib kommando : ’’’’’’’’’’’ format (archive); ’’’’’’’’N____________________________________________________________________________ ’.Erst nach einer Kontrollabfrage: ’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando: ’’’’’’’’’’’’ format (archive) ’’’’’’’’’. Archiv "diskname" formatieren ? (j/n) ’’’’’’N____________________________________________________________________________ ’^ wird tatsŁchlich formatiert und die Diskette steht mit dem Namen "diskname" fŪr’’’’’’’’’’’’. Archivoperationen zur VerfŪgung. ’’’’’’’’’’N #on("b")#PROC format (INT CONST code, TASK CONST archive) #off("b")# ’’’’’’^ Bei einigen Rechnern ist es mŚglich, die Formatierung zu variieren. Falls beim’’’’’’’’’’’’’N Formatieren auf einem solchen Rechner ein anderes als das Standardformat’’’^ erzeugt werden soll, so ist die Codierung des gewŪnschten Formats mitanzugeŻ’’’’’’’’’’’’’’’N Beispiel: FŪr ein GerŁt mit 5,25 Zoll Disketten wŁre z.B. einstellbar: ’. code 0 : Standardformat ’’’’’’> code 1 : 2D , 40 Spuren , 9 Sektoren ’’’’’’’’’> code 2 : 2D , 80 Spuren , 9 Sektoren ’’’’’’’’’> code 3 : HD , 80 Spuren ,15 Sektoren ’’’’’’’’’^ 'format (archive)' erzeugt ebenso wie 'format (0,archive)' eine’’’’’’’’’’’’’’’^ standardformatierte Diskette, 'format (3,archive)' erzeugt eine High’’’’’’’’’’> Density Formatierung (HD Floppy benutzen!). ’’^ ACHTUNG: Wird eine bereits beschriebene Diskette noch einmal formatiert, so’’’’’’’’’’’’’’N sind alle Daten, die auf der Diskette waren, verloren. ’’’’’’’’’N Die Umformatierung einer Diskette (z.B. von 720K auf 360K) auf’’N unterschiedlichen Laufwerken kann zu Problemen fŪhren. ’’’’’’’’’N #on("b")#PROC check (TEXT CONST dateiname, TASK CONST task) #off("b")# ’’’’N ŲberprŪft, ob die Datei 'dateiname' auf dem Archiv lesbar ist. ’’’’’’’’’’’’N #on("b")#PROC check (THESAURUS CONST t, TASK CONST task) #off("b")# ’’’’’’’^ ŲberprŪft, ob die in dem Thesaurus 't' enthaltenen Dateien auf dem Archiv lesbar’’’’’’’’’’’N Mit diesem Kommando kann nach dem Beschreiben einer Diskette ŪberprŪft werŻN den, ob die Datei(en) lesbar sind. Hierdurch kŚnnen also verschmutzte oder’. beschŁdigte Disketten erkannt werden. ’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ save (all , archive) ’’’’’ gib kommando : ’’’’’’’’’’’. check (ALL archive, archive) ’’’’’’’’’’’’’N____________________________________________________________________________ ’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ archive ("neu") ’’’’’’’’’’ gib kommando : ’’’’’’’’’’’ format (archive) ’’’’’’’’’N____________________________________________________________________________ ’.liefert zunŁchst die Kontollfrage: ’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ format (archive) ’’’’’’’’’. Archiv "neu" formatieren ? (j/n) ’’’’’’’’’N____________________________________________________________________________ ’Nach Eingabe 'j' ’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ saveall (archive) ’’’’’’’’ gib kommando : ’’’’’’’’’’’. archive("alt") (* nŁchste Diskette *) ’’’’ gib kommando : ’’’’’’’’’’’. fetch(SOME archive ,archive) ’’’’’’’’’’’’’N____________________________________________________________________________ ’.Der Thesaurus des Archivs wird angezeigt: ’’’’N____________________________________________________________________________ ’N .................alt (100 K belegt von 720 K)............... ’’’’’’’’’’’’’’. 01.02.87 25 K "handbuch teil 1" ’’’’’’’’’’. 01.03.87 23 K "handbuch teil 2" ’’’’’’’’’’. 01.04.87 20 K "handbuch teil 3" ’’’’’’’’’’. 01.05.87 32 K "handbuch teil 4" ’’’’’’’’’’N____________________________________________________________________________ ’.Zum Abschluū Archiv freigeben! ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ release(archive) ’’’’’’’’’N____________________________________________________________________________ ’Fehlermeldungen des Archivs’’’NVersucht man, eine Datei vom Archiv zu holen, kann es vorkommen, daū das ArŻ’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ fetch ("datei", archive) ’. #ib#Lese-Fehler (Archiv)#ie# ’’’’’’’’’’’’’N____________________________________________________________________________ ’Nmeldet und den Lese-Vorgang abbricht. Dies kann auftreten, wenn die Floppy’’’’^beschŁdigt oder aus anderen GrŪnden nicht lesbar ist (z.B. nicht justierte DisketŻ’’’’’’’’’’’’^ten-GerŁte). In einem solchen Fall vermerkt das Archiv-System intern, daū die Datei’’’’’’’’’’’^nicht korrekt gelesen werden kann. Das sieht man z.B. bei 'list (archive)'. Dodrei verschieden parametrisierten’’’’’’’’’’’’’’’. Formen spezifiziert: ’’’’’’’> edit mit 0 Parameter erhŁlt Index 15 ’’> edit mit 1 Parameter erhŁlt Index 16 ’’> edit mit 2 Parametern erhŁlt Index 17 ’’. - 'fetch:18.1' ’’’’’’’’’’’’’’’N Das Kommando 'fetch' wird in einer Form spezifiert: ’’’’’’’’> fetch mit 1 Parameter erhŁlt Index 18 ’’N Die Analyse erfolgt gemŁū ELAN-Syntaxregeln. Dabei sind als ParaŻ’N meter Denoter vom Typ TEXT und vom Ūbergebenen ' permitted type'’’N zugelassen. Diese Typen werden wie beim Scanner (s. BenutzerhandŻ’> buch Programmierung Kap. 5.6) angegeben: ’’’’’’’’’ 1 tag ’’’’’ 2 bold ’’’’ 3 number ’’ 4 text ’’’’ 5 operator . 6 delimiter ’’’’’’’’’’’’’’’N Falls das Kommando in der Kommandoliste gefunden wird (und die’’’’N Syntax in Ordnung ist), wird der entsprechende 'command index' zuŻ^ rŪckgemeldet. Die Parameter werden (falls vorhanden) in 'param 1' und’’’’’’’’’’’’’N 'param 2' abgelegt. Undefinierte oder nicht vorhandene Parameter’’^ werden als Niltext geliefert. Wenn ein Kommando vorhanden ist, die’’’’’’’’’’’’’’’^ Anzahl der Parameter aber nicht stimmt, wird der negative Hauptindex’’’’’’’’’’’’’’^ geliefert. Ist es vollkommen unbekannt oder ist die Eingabe zu komplex’’’’’’’’’’’’N (mehrere Kommandos, AusdrŪcke oder komplexere ELAN-Statements),’’’^ wird 0 geliefert. Der Anwender kann in solchen FŁllen die Analyse mit’’’’’’’’’’’’’N einer anderen Kommandoliste fortsetzen, das Kommando dem ELAN-’’’’N Compiler Ūbergeben oder eine Fehlermeldung auslŚsen (s. 'command’’ error'). ’’’’’’’’’> PROC analyze command (TEXT CONST command list, ’’’’’’’’’’> INT CONST permitted type, ’’’’’’’’’N INT VAR command index, number of params, ’’’’’’’’’’> TEXT VAR param 1, param 2) ’’’’’’’’N Zweck: s.o. Allerdings wird die interne Kommandozeile des Pakets 'command> handler' als 'command line' verwandt. ’’’’’’’’’’’’#ib#command error#ie# ’’’’’’’’ PROC command error ’’’’’’N Zweck: Falls bei der Kommandoanalyse ein Fehler gefunden wurde, fŪhrt er’^ nicht zum 'errorstop', sondern wird nur hinterlegt. (Soll das Kommando’’’’’’’’’’’’N dem Compiler Ūbergeben werden, liegt ja evt. Ūberhaupt kein Fehler^ vor.) Diese hinterlegte Meldung kann mit 'command error' als 'errorstop'’’’’’’’’’’> gegeben werden. MŚgliche Meldungen: ’’’’’’’’’’’’’’. "ungueltiger name" ’’’’’’’ ") fehlt"  "( fehlt" > "Parameter ist kein TEXT ("fehlt)" ’’’’’’’. "Kommando zu schwierig" ’’#ib#cover tracks#ie# ’’’’’’’’’ PROC cover tracks ’’’’’’’N Zweck: Die Spuren der letzten Kommandoanalyse werden gelŚscht. Das dient’^ u.a. dazu, daū spŁter eingerichtete Sohntasks keine Relikte des KomŻ’’’’’’’’’’’’’’^ mandos mehr auf dem Textheap vorfinden und evtl. mittels nicht initialiŻ’’’’’’’’’’^ sierter TEXT VARs herausfinden kŚnnen. VollstŁndig kŚnnen die Spuren’’’’’’’’’’’’’’N aber nur dann gelŚscht werden, wenn fŪr die Kommandoanalyse die’’’N 'get command'- und 'analyze command'-Prozeduren benutzt wurden,’’’N die auf der internen Kommandozeile des Pakets 'command handler'’’’ arbeiten. ’’’’’’’’#ib#do command#ie# ’’’’’’’’’’’ PROC do command ’’’’’’’’’N Zweck: Die interne Kommandozeile des Pakets 'command handler' wird dem’’’> ELAN-Compiler zur AusfŪhrung Ūbergeben. ’’’’’’’’’’>#ib(9)#Beispiele zur Kommandoverarbeitung#ie(9)# ’’’’’’’’’’’’’.#ib##ub#Kleiner Monitor#ue##ie# ’’’’’’’’’’’’’’>LET command list = "otto:1.12emil:3.012hugo:6.0" ; ’’’’’’’’’’’LET number = 3 , ’’’’’’’’’’’ text = 4 ; ’’’’’’’’’’’.INT VAR command index, params ; ’’’’’’’’’’’’’’TEXT VAR param 1, param 2 ; ’’PROC monitor : ’’’’’’’’’’’’’’’ disable stop ; ’’’’’’’’’’. command dialogue (TRUE) ; ’’’’’’’’’’’’’’’> REP get command ("gib kleines kommando:") ; ’’’’’’’’’’’’> analyze command (command list, text, ’’’’’’’’’’’’’’’> command index, params, ’’’’’’’’’’’’> param 1, param 2) ; ’’’’’’’’’’’’’’’ execute command ’’’’ENDPROC monitor ; ’’’’’’’’’’’’PROC execute command : ’’’’’’’ enable stop ; ’’’’’’’’’’’ SELECT command index OF ’. CASE 1 : otto (param 1) ’’’’’’’’’’’’. CASE 2 : otto (param 1, param 2) ’’’ CASE 3 : emil ’’’’’’. CASE 4 : emil (param 1) ’’’’’’’’’’’’. CASE 5 : emil (param 1, param 2) ’’’ CASE 6 : hugo ’’’’’’. OTHERWISE do command line ’’’’’’’’’’’’’ END SELECT ’’’’’’’’’’’’’’ENDPROC execute command ; ’’’’.#ib(9)##ub#Steuerkommando-Analyse#ue##ie(9)# ’.PROC command (TEXT CONST command text) : ’’’’’ disable stop ; ’’’’’’’’’’. command dialoge (FALSE) ; ’’’’’’’’’’’’’’’> analyze command (command list, command text, number, ’’’’N command index, params, param 1, param 2) ; ’’’’’’’’’’’’’ execute command ; ’’’’’’’ IF is error ’’’’’’’’’’’’’ THEN put error ; ’’’’’’ clear error ’’’’’’ENDPROC command ; ’’’’’’’’’’’’PROC execute command : ’’’’’’’ enable stop ; ’’’’’’’’’’’ SELECT command index OF ’ CASE .... ’’’’’’’’’’. OTHERWISE IF command index = 0 ’’’’^ THEN errorstop ("unbekanntes Kommando") ELSE command error ’’’’’’’’’’’ FI ’’’’’’ END SELECT ’’’’’’’’’’’’’’ENDPROC execute command ; ’’’’.#ib(9)#4.4. Verschiedenes#ie(9)# ’’’’’’’’’’’’’#ib(9)##ib#SESSION#ie(9)##ie# ^Mit Hilfe von 'session' kann man feststellen, ob das System neu gestartet wurde. Dabei’’’’’’’’^spielt es keine Rolle, ob es korrekt ('shutup') abgeschaltet wurde, oder ob es sich um’’’’’’’’einen "RERUN" handelt. ’’’’’’’#ib#session#ie# ’’’’’’’’’’’’’’ INT PROC session ’’’’’’’’N Zweck: Liefert eine "Sitzungsnummer". Diese wird automatisch bei jedem’’’. Systemstart erhŚht. ’’’’’’’’’’’’’’. INT VAR old session := session ; ’’’’’’> WHILE session = old session REP pause (100) PER ; ’’’’’. putline ("Neuer Systemstart") ’’’’’’’’’.#ib(9)##ib#INITFLAG#ie##ie(9)# ’’’’’’’’’’’’’’’^Im Multi-User-System ist es oft notwendig, Pakete beim Einrichten einer neuen Task in’’’’’’’’’^dieser neu zu initialisieren. Das muū z.B. bei der Dateiverwaltung gemacht werden, da’’’’’’’’’^die neue Task ja nicht die Dateien des Vaters erbt. Mit Hilfe von INITFLAG-Objekten’’’’’’’’’’’~kann man zu diesem Zweck feststellen, ob ein Paket #on("b")##on("i")#in dieser Task#off("b")##off("i")# schon initialisiert’’’#ib#INITFLAG#ie# ’’’’’’’’’’’’’ TYPE INITFLAG ’’’’’’’’’’’> Zweck: Erlaubt die Deklaration entsprechender Flaggen. ’’> OP := (INITFLAG VAR flag, BOOL CONST flagtrue) ’’’’’’’’’’> Zweck: Erlaubt die Initialisierung von INITFLAGs ’’’’’’’’#ib#initialized#ie# ’’’’’’’’’’> BOOL PROC initialized (INITFLAG VAR flag) ’’’’’’’’’’’’’’’N Zweck: Wenn die Flagge in der Task A auf TRUE oder FALSE gesetzt wurde,’’^ dann liefert sie beim ersten Aufrurt ist der’’’’’’Nbetreffende Datei-Name mit dem Zusatz 'mit Lese-Fehler' gekennzeichnet. Um’’’’^diese Datei trotzdem zu lesen, muū man sie unter ihrem Dateinamen mit dem Zusatz’’’’’’’’’’’’’’'mit Lese-Fehler' lesen. ’’’’’N____________________________________________________________________________ ’ gib kommando: ’’’’’’’’’’’’. fetch ("datei mit Lese-Fehler", archive) ’N____________________________________________________________________________ ’^Die Datei wird in diesem Fall trotz Lese-Fehler (Informationsverlust!) vom Archiv’’’’’’’’’’’’’.Weitere Fehlermeldungen des Archivs: ’’’’’’’’’.FEHLER : Lesen unmŚglich (Archiv) ’’’’’’’’’’’’^ Die Archiv-Diskette ist nicht eingelegt oder die TŪr des Laufwerks ist nicht’’’’’’’’’ geschlossen. ’’’’’’’’> => Diskette einlegen bzw. TŪr schlieūen. ’’’’’’’’’’’’.FEHLER : Schreiben unmŚglich (Archiv) ’’’’’’’’. Die Diskette ist schreibgeschŪtzt. ’’N => falls wirklich gewŪnscht, Schreibschutz entfernen. ’’’’’’’’’’’’’’’.FEHLER : Archiv nicht angemeldet ’’’’’’’’’’’’’. Das Archiv wurde nicht angemeldet ’’’. => 'archive ("name")' geben. ’’’’’’’’FEHLER : Lese-Fehler (Archiv) . Siehe Lesen unmŚglich ’’’’’’’’’’’’’’’.FEHLER : Schreibfehler (Archiv) ’’’’’’’’’’’’’’> Die Diskette kann nicht (mehr) beschrieben werden. ’’. => Andere Diskette verwenden. ’’’’’’’FEHLER : Speicherengpass ’’’’’N Im System ist nicht mehr genŪgend Platz, um eine Datei vom Archiv zu’ laden. ’’’’’’’’’’’’’’. => ggf. Dateien lŚschen. ’’’’’’’’’’’’NFEHLER : RERUN bei Archiv-Zugriff Das System wurde bei einer Archiv-Operation’> durch Ausschalten bzw. Reset unterbrochen. ’’’’’’’’’’.FEHLER : "dateiname" gibt es nicht ’’’’’’’’’’’> Die Datei "dateiname" gibt es nicht auf dem Archiv. ’> => mit 'list(archive)' Archiv prŪfen. ’’’’’’’’’’’’’’’FEHLER : Archiv heiūt ... ’’’’^ Die eingelegte Diskette hat einen anderen als den eingegebenen ArchivnaŻ’’’’’’’’’’’’’ men. > => Kommando 'archive' mit korrektem Namen geben. ’’’’.FEHLER : Archiv wird von Task ... benutzt ’’’’N Das Archiv wurde von einem anderen Benutzer reserviert. ’’’’’’’’’’’’’ => Abwarten. ’’’’’’’’NFEHLER : "dateiname" kann nicht geschrieben werden (Archiv voll) ’’’’’’’’’’’’’> Die Datei ist zu groū fŪr die eingelegte Diskette. ’’> => Andere Diskette fŪr diese Datei nehmen. ’’’’’’’’’’FEHLER : Archiv inkonsistent ’^ Die eingelegte Diskette hat nicht die Struktur einer Archiv-Diskette. ’’’’’’’’’’’’’’’. => 'format (archive)' vergessen. ’’’’>FEHLER : save/erase wegen Lese-Fehler verboten ’’’’’’’’’’’’’’’^ Bei Archiven mit Lese-Fehler sind Schreiboperationen verboten, weil ein’’’’’’’’’’’’’’. Erfolg nicht garantiert werden kann. programmierhandbuch.4’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.3’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’\š’’’’’’’’’’’’’’’’’’’ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’”ńa€ė’’Ś×$’’’’$$ŪM’’’’ń’ kap3’’’’’’’’a€’P’’’’’’’’’’’Ś’’’’’’’’’’’’’’’’’’Į€’D’’’’’’’’’’’’’’’’’’’’,’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’A’’’’’’’’’’’’’’’’’’’’q’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’Į’’’’’’’’’’’’’’’’’’’’ၒE’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’1‚’E’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomodd# ’’’’’’’’’”‚’E’’’’’’’’’’’’’’’’’’’ń‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ƒ’W’’’’’’’’’’’’’’’’’’’‘ƒ’R’’’’’’’’’’’’’’’’’’’ńƒ’M’’’’’’’’’’’’’’’’’’’A„’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘„’Q’’’’’’’’’’’’’’’’’’’ń„’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!…’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q…’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘…’M’’’’’’’’’’’’’’’’’’’į…’’’’’’’’’’’’’’’’’’’’†’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1†’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’†’T’’’’’’’’’’’’’’’’’’’ᆒT’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A‡’N’’’’’’’’’’’’’’’’’’’‘‡’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń‡’M’’’’’’’’’’’’’’’’’’’Aˆ’’’’’’’’’’’’’’’’’’’’aˆ’’’’’’’’’’’’’’’’’’’’ˆ’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ˆ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‰’R’’’’’’’’’’’’’’’’’’’a‰’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±‰’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Š’S’’’’’’’’’’’’’’’’’’’Š’]’’’’’’’’’’’’’’’’’’’ኒR’’’’’’’’’’’’’’’’’’’A‹’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‹’M’’’’’’’’’’’’’’’’’’’į‹’c’’’’’’’’’’’’’’’’’’’’’ _ ’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŒ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Œ’c’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’W’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’”’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’U’’’’’’’’’’’’’’’’’’’!Ž’O’’’’’’’’’’’’’’’’’’’Ž’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ю’’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’ńŽ’,’’’’’’’’’’’’’’’’’’’’’ #tableend# ’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’!’1’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’a’(’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’‘’ ’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’Į’"’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’ń’!’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’!’’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’Q’’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’q’’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’”’"’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’ѐ’’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’ń’’’’f den entsprechenden Wert, danach’’’’’’’’’’’’’’’. immer TRUE (in der Task A!). ’’’’’^ Beim Einrichten von SŚhnen wird die Flagge in den Sohntasks automaŻ’’’’’’’’’’’’’’’^ tisch auf FALSE gesetzt. So wird erreicht, daū diese Prozedur in den neu’’’’’’’’’’^ eingerichteten SŚhnen und Enkeltasks genau beim ersten Aufruf FALSE’’’’’’’’’’’’’’’ liefert. ’’’’’’’’’. PACKET stack DEFINES push, pop: ’’’’> INITFLAG VAR in this task := FALSE ; ’’’’’’’’’’’’’’’. INT VAR stack pointer ; ’’’’’’’’’’’’. ROW 1000 INT VAR stack ; ’’’’’’’’’’’. PROC push (INT CONST value) : ’’’’’’. initialize stack if necessary ; ’’ .... ’’’’’’’’’’’’’ ENDPROC push ; ’’’’’. PROC pop (INT VAR value) : ’’’’’’’’’. initialize stack if necessary ; ’’ .... ’’’’’’’’’’’’’ ENDPROC pop ;. ’’’’’. initialize stack if necessary : ’’’’. IF NOT initialized (in this task) . THEN stack pointer := 1 ’’’’’’’’ FI . ’’’’’’’’’’’’’ ENDPACKET stack ’’’’.#ib(9)##ib#Bit-Handling#ie##ie(9)# ’’’’’’’’’’’^Die #ib#Bit-Operationen#ie# arbeiten auf INT-Objekten. Sie kŚnnen z.B. fŪr die SystemproŻ’’’’’>grammierung benutzt werden, wenn es um Bitmasken u.Ł. geht. ’’^Ein INT besteht aus 16 Bits. Dabei hat das niederwertigste die Nummer 0, das hŚchŻ’’’’’’’’’’’’stwertige die Nummer 15. ’’’’’. INT OP AND (INT CONST left, right) ’’’’’’> Zweck: Bitweise UND-VerknŪpfung von 'left' mit 'right'. ’. INT OP OR (INT CONST left, right) ’’’’’’’> Zweck: Bitweise ODER-VerknŪpfung von 'left' mit 'right'. . INT OP XOR (INT CONST left, right) ’’’’’’N Zweck: Bitweise EXCLUSIV-ODER-VerknŪpfung von 'left' mit 'right'. ’’’’’’’. BOOL PROC bit (INT CONST bits, bit no) ’’^ Zweck: Liefert TRUE genau dann, wenn das Bit mit der Nummer 'bit no' in dem’’’’’’’’’’’’’’. INT 'bits' gesetzt ist. ’’’’’’’’’’#ib#set bit#ie# ’’’’’’’’’’’’’’> PROC set bit (INT VAR bits, INT CONST bit no) ’’’’’’’’’’’N Zweck: Das Bit mit der Nummer 'bit no' wird in 'bits' auf 1 gesetzt. ’’’’#ib#reset bit#ie# ’’’’’’’’’’’’> PROC reset bit (INT VAR bits, INT CONST bit no) ’’’’’’’’’N Zweck: Das Bit mit der Nummer 'bit no' wird in 'bits' auf 0 gesetzt. ’’’’#ib#rotate#ie# ’’’’’’’’’’’’’’’> PROC rotate (INT VAR bits, INT CONST number of bits) ’’’’N Zweck: Bits kŚnnen mit dieser Prozedur zyklisch geschiftet werden. ’’’’’’. Bsp.: rotate (1,1) ---> 2 ’’’. rotate (1,2) ---> 4 ’’’> rotate (1,-3) ---> 16384 ’’’’’’’’’’’’’’’. rotate (16384,3) ---> 1 ’’’#ib#lowest set#ie# ’’’’’’’’’’’. INT PROC lowest set (INT CONST bits) ’’’’^ Zweck: Liefert die Nummer des niederwertigsten 1-Bits in 'bits'. Ist kein Bit auf 1’’’’’’. gesetzt, wird -1 geliefert. ’’’’’’#ib#lowest reset#ie# ’’’’’’’’’. INT PROC lowest reset (INT CONST bits) ’’^ Zweck: Liefert die Nummer des niederwertigsten 0-Bits in 'bits'. Ist kein Bit auf 0’’’’’’. gesetzt, wird -1 geliefert. ’’’’’’>#ib(9)#4.5. #ib#Blockorientierte Ein-/Ausgabe#ie##ie(9)# ’’’’’^Die blockorientierte Ein-/Ausgabe dient dazu, Datenraumseiten (#ib#BlŚcke#ie#) oder Teile’’’’’^davon Ūber die #ib#KanŁle#ie# zu transferieren. Sie wird vom System u.a. beim Archivzugriff’’’>und bei der Konfigurierung der KanŁle eingesetzt. ’’’’’’’’’’’’^Die Wirkung der blockorientierten Ein-/Ausgabeoperationen kann dabei kanal- und’’’’’’’’’’’’’’’.rechnerspezifisch unterschiedlich sein. ’’’’’’NAuf dem Archivkanal (31) und allen anderen Block-IO-KanŁlen werden bei ’’’’’’’^'code 1 = 0' die normalen Blocklese- bzw. -schreiboperationen durchgefŪhrt. 'code 2'’’’’’’’’’’^gibt dabei die Blocknummer an. Andere (positive) Werte von 'code 1' sind zur Zeit’’’’’’’’’’’’’^nicht offiziell definiert. Negative Werte kŚnnen vom SHard fŪr Spezialaufgaben vergeŻ’’’’’’’’’#ib#blockin#ie# ’’’’’’’’’’’’’’N PROC blockin (DATASPACE VAR ds, INT CONST page nr, code1, code2, ’’’’’’’’. INT VAR return code) ’’’’’’^ Zweck: Die Seite 'page nr' des Datenraums 'ds' wird "eingelesen". Die OperaŻ’’’’’’’’’’’’’N tion kann durch 'code1' und 'code2' nŁher gesteuert werden. ’’’’’’N PROC blockin (ROW 256 INT VAR block, INT CONST code1, code2, ’’’’’’’’’’’’. INT VAR return code) ’’’’’’N Zweck: Wie oben, nur wird der Block direkt als Datenstruktur Ūbergeben. ’#ib#blockout#ie# ’’’’’’’’’’’’’> PROC blockout (DATASPACE CONST ds, INT CONST page nr, ’’’> code1, code2, INT VAR return code) ’’’’’’’^ Zweck: Die Seite 'page nr' des Datenraums 'ds' wird "ausgegeben". Die OperaŻ’’’’’’’’’’’’’N tion kann durch 'code1' und 'code2' nŁher gesteuert werden. ’’’’’’N PROC blockout (ROW 256 INT CONST block, INT CONST code1, code2, ’’’’’’’’’. INT VAR return code) ’’’’’N Zweck: Wie oben, nur wird der Block als Datenstruktur Ūbergeben. ’’’’’’’’#ib#control#ie# ’’’’’’’’’’’’’’N PROC control (INT CONST code1, code2, code3, INT VAR return code) ’’’’’’’> Zweck: Diese Prozedur dient zur Kanalsteuerung. ’’’’’’’’’#ib#ds pages#ie# ’’’’’’’’’’’’’. INT PROC ds pages (DATASPACE CONST ds) ’’^ Zweck: Liefert die Anzahl der belegten Seiten eines Datenraums. (Jede Seite ist’’’’’’’’’’ 512 Byte groū.) ’’#ib#next ds page#ie# ’’’’’’’’’N INT PROC next ds page (DATASPACE CONST ds, INT CONST page nr) ’’’’’’’’’’’^ Zweck: Liefert die Nummer der nŁchsten (von 'page nr' an gerechneten) Seite’’’’’’’’’’’’’’N des Datenraums. Die erste belegte Seite erhŁlt man durch ’’’’’’’’’. next ds page (ds, -1) ’’’^ #on ("b")#Achtung: Die Seitennummern mŪssen nicht lŪckenlos sein.#off ("b")# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’systemhandbuch.3’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Äü’’’’’’’’’’’’’’’ų’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‘’’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’1‘’T’’’’’’’’’’’’’’’’’’’‘‘’Q’’’’’’’’’’’’’’’’’’’ń‘’N’’’’’’’’’’’’’’’’’’’A’’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‘’’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’’R’’’’’’’’’’’’’’’’’’’A“’R’’’’’’’’’’’’’’’’’’’”“’-’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’’’<>> <<> ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ <^> ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ѓ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń“’^’’’’’’’’’’’’’’’’’’’’’ #free(0.5)# ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q”’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’””’Q’’’’’’’’’’’’’’’’’’’•’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A•’Q’’’’’’’’’’’’’’’’’’’”•’R’’’’’’’’’’’’’’’’’’’–’Q’’’’’’’’’’’’’’’’’’’a–’Q’’’’’’’’’’’’’’’’’’’Į–’P’’’’’’’’’’’’’’’’’’’!—’T’’’’’’’’’’’’’’’’’’’’’ erkennen. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’—’F’’’’’’’’’’’’’’’’’’’ї’O’’’’’’’’’’’’’’’’’’’1˜’K’’’’’’’’’’’’’’’’’’’˜’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±˜’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń˜’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A™’U’’’’’’’’’’’’’’’’’’’”™’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń™’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’Qš’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aš’S’’’’’’’’’’’’’’’’’’’Įš’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’›’T’’’’’’’’’’’’’’’’’’’a›’W’’’’’’’’’’’’’’’’’’’Į›’W’’’’’’’’’’’’’’’’’’’!œ’P’’’’’’’’’’’’’’’’’’’œ’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±œ’M’’’’’’’’’’’’’’’’’’’’@’’’’’’’’’’’’’’’’’’’Q’,’’’’’’’’’’’’’’’’’’’’*’’’’’’’’’’’’’’’’’’’±’*’’’’’’’’’’’’’’’’’’’į’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ž’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qž’–’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ÿ’M’’’’’’’’’’’’’’’’’’’aŸ’?’’’’’’’’’’’’’’’’’’’±Ÿ’,’’’’’’’’’’’’’’’’’’’្’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q ’O’’’’’’’’’’’’’’’’’’’± ’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’ń ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q”’M’’’’’’’’’’’’’’’’’’’””’@’’’’’’’’’’’’’’’’’’’ń”’+’’’’’’’’’’’’’’’’’’’!¢’/’’’’’’’’’’’’’’’’’’’a¢’8’’’’’’’’’’’’’’’’’’’”¢’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ᢒM’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1£’™’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń£’M’’’’’’’’’’’’’’’’’’’!¤’>’’’’’’’’’’’’’’’’’’’a¤’+’’’’’’’’’’’’’’’’’’’‘¤’/’’’’’’’’’’’’’’’’’’’Ѥ’'’’’’’’’’’’’’’’’’’’’„’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A„’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘„’J’’’’’’’’’’’’’’’’’’’į„’O’’’’’’’’’’’’’’’’’’’A¦’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a¦’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¦’Q’’’’’’’’’’’’’’’’’’’ᦒP’’’’’’’’’’’’’’’’’’’’’ springen. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A§’h’’’’’’’’’’’’’’’’’’’±§’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ѧ’Q’’’’’’’’’’’’’’’’’’’1Ø’»’’’’’’’’’’’’’’’’’’’ńØ’i’’’’’’’’’’’’’’’’’’’a©’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’©’•’’’’’’’’’’’’’’’’’’’!Ŗ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŖ’T’’’’’’’’’’’’’’’’’’’”Ŗ’'’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŖ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’«’^’’’’’’’’’’’’’’’’’’’a«’L’’’’’’’’’’’’’’’’’’’±«’d’’’’’’’’’’’’’’’’’’’!¬’V’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¬’L’’’’’’’’’’’’’’’’’’’Ѭ’S’’’’’’’’’’’’’’’’’’’1­’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q­’H’’’’’’’’’’’’’’’’’’’’’ wieder aus. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į­’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’®’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a®’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”®’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į®’Ą’’’’’’’’’’’’’’’’’’’±Æ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ᯒᒒ’’’’’’’’’’’’’’’’’Ѱ’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±’B’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a±’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”±’P’’’’’’’’’’’’’’’’’’’²’S’’’’’’’’’’’’’’’’’’’a²’R’’’’’’’’’’’’’’’’’’’Į²’’’’’’’’’’’’’’’’’’’’’’ #free(1.0)# ’’’’’’’’’’’ ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’³’N’’’’’’’’’’’’’’’’’’’Q³’T’’’’’’’’’’’’’’’’’’’±³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ѳ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’“’S’’’’’’’’’’’’’’’’’’’q“’U’’’’’’’’’’’’’’’’’’’Ń“’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń“’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!µ’M’’’’’’’’’’’’’’’’’’’qµ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±µ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńµ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A¶’K’’’’’’’’’’’’’’’’’’’‘¶’Q’’’’’’’’’’’’’’’’’’’ń¶’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1·’K’’’’’’’’’’’’’’’’’’’·’t’’’’’’’’’’’’’’’’’’’ø’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ø’W’’’’’’’’’’’’’’’’’’’‘ø’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įø’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ßß ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¹’Q’’’’’’’’’’’’’’’’’’’q¹’P’’’’’’’’’’’’’’’’’’’ѹ’Q’’’’’’’’’’’’’’’’’’’1ŗ’v’’’’’’’’’’’’’’’’’’’±ŗ’R’’’’’’’’’’’’’’’’’’’»’T’’’’’’’’’’’’’’’’’’’q»’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į»’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ßß ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į»’P’’’’’’’’’’’’’’’’’’’A¼’O’’’’’’’’’’’’’’’’’’’”¼’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ßß ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į¼’R’’’’’’’’’’’’’’’’’’’!½’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Durch ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a½’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’½’N’’’’’’’’’’’’’’’’’’’ѽ’N’’’’’’’’’’’’’’’’’’’!¾’P’’’’’’’’’’’’’’’’’’’¾’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ßß ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¾’R’’’’’’’’’’’’’’’’’’’æ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aæ’_’’’’’’’’’’’’’’’’’’’±æ’R’’’’’’’’’’’’’’’’’’’Ą’M’’’’’’’’’’’’’’’’’’’aĄ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ą’N’’’’’’’’’’’’’’’’’’’ŃĄ’M’’’’’’’’’’’’’’’’’’’’’auf. ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Į’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’qĮ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Į’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĮ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ā’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aĀ’E’’’’’’’’’’’’’’’’’’’±Ā’P’’’’’’’’’’’’’’’’’’’Ć’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ć’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qĆ’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĆ’X’’’’’’’’’’’’’’’’’’’!Ä’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QÄ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ä’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ä’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įÄ’+’’’ņ…a€ė’’XU0’’’’00YM’’’’a€’’’’’’’’’’’’’’’’’’’’’’’’’’’’X’’’’’’’’’’’’’’’’’’€’’’’’’’’’’’’’’’’’’’’’’ #pageblock# ’’’’’’’’’’’#block# ’’’’’’’’’’’’’’’ #page (63)# ’’’’’’’’’’’ #headeven# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”€’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į€’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’0’’’’’’’’’’’’’’’’’’’A’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’с’S’’’’’’’’’’’’’’’’’’’1‚’W’’’’’’’’’’’’’’’’’’’‘‚’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’т’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ƒ’V’’’’’’’’’’’’’’’’’’’qƒ’Z’’’’’’’’’’’’’’’’’’’у’R’’’’’’’’’’’’’’’’’’’1„’R’’’’’’’’’’’’’’’’’’’‘„’R’’’’’’’’’’’’’’’’’’’ń„’T’’’’’’’’’’’’’’’’’’’Q…’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’…’V’’’’’’’’’’’’’’’’’’’į…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’†’U’’’’’’’’’’’’’’’’’’’a†’R’’’’’’’’’’’’’’’’’’’Į†’O’’’’’’’’’’’’’’’’’’’!‡’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#TASK#ie# ’’’’’’’’Q‡’’’’’’’’’’’’’’’’’’’’q‡’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’:= ’’’’’’’’’’’’’’’’’’”‡’.’’’’’’’’’’’’’’’’’’’ч’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’= ’’’’’’’’’’’’’’’’’’’ˆ’(’’’’’’’’’’’’’’’’’’’Aˆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’< ’’’’’’’’’’’’’’’’’’’qˆ’(’’’’’’’’’’’’’’’’’’’”ˆ’X’’’’’’’’’’’’’’’’’’’‰’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’/ ’’’’’’’’’’’’’’’’’’’!‰’&’’’’’’’’’’’’’’’’’’’Q‰’T’’’’’’’’’’’’’’’’’’’±‰’D’’’’’’’’’’’’’’’’’’’Š’.’’’’’’’’’’’’’’’’’’’1Š’’’’’’’’’’’’’’’’’’’’QŠ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŠ’;’’’’’’’’’’’’’’’’’’’±Š’P’’’’’’’’’’’’’’’’’’’‹’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1‹’’’’’’’’’’’’’’’’’’’’Q‹’#’’’’’’’’’’’’’’’’’’’‹’Z’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į‹’’’’’’’’’’’’’’’’’’’’Œ’’’’’’’’’’’’’’’’’’’’!Œ’O’’’’’’’’’’’’’’’’’’’Œ’V’’’’’’’’’’’’’’’’’’’ጒ+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’’Q’L’’’’’’’’’’’’’’’’’’’”’J’’’’’’’’’’’’’’’’’’’ń’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ž’’’’’’’’’’’’’’’’’’’’AŽ’)’’’’’’’’’’’’’’’’’’’qŽ’U’’’’’’’’’’’’’’’’’’’ю’U’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’’A’0’’’’’’’’’’’’’’’’’’’’J’’’’’’’’’’’’’’’’’’’я’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’!’(’’’’’’’’’’’’’’’’’’’Q’U’’’’’’’’’’’’’’’’’’’±’S’’’’’’’’’’’’’’’’’’’‘’’’’’’’’’’’’’’’’’’’’1‘’R’’’’’’’’’’’’’’’’’’’‘‘’D’’’’’’’’’’’’’’’’’’’į‘’O’’’’’’’’’’’’’’’’’’’A’’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’’R’’’’’’’’’’’’’’’’’’’!“’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’“’’’’’’’’’’’’’’’’’’’’”“’-’’’’’’’’’’’’’’’’’’’ѓ’L’’’’’’’’’’’’’’’’’’’!”’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a”’’’’’’’’’’’’’’’’’’’’”’’’’’’’’’’’’’’’’’’’’””’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’є’(’’’’’’’’’’’’’’’’’’’•’Z’’’’’’’’’’’’’’’’’’’a•’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±•’’’’’’’’’’’’’’’’’’’’Į•’&’’’’’’’’’’’’’’’’’’’ń•’Y’’’’’’’’’’’’’’’’’’’Q–’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘–’’’’’’’’’’’’’’’’’’’’±–’,’’’’’’’’’’’’’’’’’’’į–’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’—’’’’’’’’’’’’’’’’’’’’!—’’’’’’’’’’’’’’’’’’’’A—’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#name#ie# ’’’’’’’’q—’&’’’’’’’’’’’’’’’’’’’”—’Q’’’’’’’’’’’’’’’’’’’˜’Q’’’’’’’’’’’’’’’’’’’a˜’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±˜’’’’’’’’’’’’’’’’’’’’ј’’’’’’’’’’’’’’’’’’’’ń˜’S’’’’’’’’’’’’’’’’’’’Q™’V’’’’’’’’’’’’’’’’’’’±™’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’љ’’’’’’’’’’’’’’’’’’’’ń™’’’’’’’’’’’’’’’’’’’’š’L’’’’’’’’’’’’’’’’’’’aš’T’’’’’’’’’’’’’’’’’’’Įš’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńš’’’’’’’’’’’’’’’’’’’’›’’’’’’’’’’’’’’’’’’’’1›’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’›’’’’’’’’’’’’’’’’’’’’”›’$’’’’’’’’’’’’’’’’’’’ћ’S’’’’’’’’’’’’’’’’’’’1œ’,’’’’’’’’’’’’’’’’’’’aœ’8’’’’’’’’’’’’’’’’’’’”œ’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#son#ie# ’’’’’’’’’ńœ’%’’’’’’’’’’’’’’’’’’’!’U’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’į’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ž’’’’’’’’’’’’’’’’’’’’!ž’’’’’’’’’’’’’’’’’’’’Až’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#task#ie# ’’’’’’’’‘ž’+’’’’’’’’’’’’’’’’’’’Įž’T’’’’’’’’’’’’’’’’’’’!Ÿ’3’’’’’’’’’’’’’’’’’’’aŸ’’’’’’’’’’’’’’’’’’’’Ÿ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ÿ’/’’’’’’’’’’’’’’’’’’’្L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1 ’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q ’]’’’’’’’’’’’’’’’’’’’Ń ’^’’’’’’’’’’’’’’’’’’’1”’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’[’’’’’’’’’’’’’’’’’’’į”’V’’’’’’’’’’’’’’’’’’’A¢’P’’’’’’’’’’’’’’’’’’’”¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į¢’P’’’’’’’’’’’’’’’’’’’!£’N’’’’’’’’’’’’’’’’’’’q£’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#call#ie# ’’’’’’’’Į£’=’’’’’’’’’’’’’’’’’’’¤’>’’’’’’’’’’’’’’’’’’’A¤’V’’’’’’’’’’’’’’’’’’’”¤’N’’’’’’’’’’’’’’’’’’’ń¤’R’’’’’’’’’’’’’’’’’’’Q„’S’’’’’’’’’’’’’’’’’’’±„’O’’’’’’’’’’’’’’’’’’’¦’V’’’’’’’’’’’’’’’’’’’q¦’Q’’’’’’’’’’’’’’’’’’’Ѧ’T’’’’’’’’’’’’’’’’’’’1§’%’’’’’’’’’’’’’’’’’’’a§’R’’’’’’’’’’’’’’’’’’’Į§’S’’’’’’’’’’’’’’’’’’’!Ø’T’’’’’’’’’’’’’’’’’’’Ø’O’’’’’’’’’’’’’’’’’’’ᨒE’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1©’’’’’’’’’’’’’’’’’’’’Q©’A’’’’’’’’’’’’’’’’’’’”©’B’’’’’’’’’’’’’’’’’’’ń©’S’’’’’’’’’’’’’’’’’’’QŖ’X’’’’’’’’’’’’’’’’’’’±Ŗ’R’’’’’’’’’’’’’’’’’’’«’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#send#ie# ’’’’’’’’Q«’;’’’’’’’’’’’’’’’’’’’‘«’;’’’’’’’’’’’’’’’’’’’Ń«’P’’’’’’’’’’’’’’’’’’’1¬’W’’’’’’’’’’’’’’’’’’’‘¬’Q’’’’’’’’’’’’’’’’’’’ń¬’P’’’’’’’’’’’’’’’’’’’Q­’J’’’’’’’’’’’’’’’’’’’”­’T’’’’’’’’’’’’’’’’’’’®’,’’’’’’’’’’’’’’’’’’’1®’P’’’’’’’’’’’’’’’’’’’‘®’G’’’’’’’’’’’’’’’’’’’į®’\’’’’’’’’’’’’’’’’’’’AÆ’R’’’’’’’’’’’’’’’’’’’”Æ’O’’’’’’’’’’’’’’’’’’’°’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A°’;’’’’’’’’’’’’’’’’’’’°’*’’’’’’’’’’’’’’’’’’’±°’R’’’’’’’’’’’’’’’’’’’±’V’’’’’’’’’’’’’’’’’’’q±’M’’’’’’’’’’’’’’’’’’’Į±’Q’’’’’’’’’’’’’’’’’’’!²’W’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#wait#ie# ’’’’’’’’²’@’’’’’’’’’’’’’’’’’’’Ѳ’&’’’’’’’’’’’’’’’’’’’³’`’’’’’’’’’’’’’’’’’’’q³’O’’’’’’’’’’’’’’’’’’’ѳ’T’’’’’’’’’’’’’’’’’’’1“’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’“’a’’’’’’’’’’’’’’’’’’’ń“’U’’’’’’’’’’’’’’’’’’’Qµ’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’µ’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±µ’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńµ’N’’’’’’’’’’’’’’’’’’’A¶’S’’’’’’’’’’’’’’’’’’’”¶’R’’’’’’’’’’’’’’’’’’’·’P’’’’’’’’’’’’’’’’’’’a·’N’’’’’’’’’’’’’’’’’’’±·’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń·’N’’’’’’’’’’’’’’’’’’’!ø’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aø’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ø’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įø’H’’’’’’’’’’’’’’’’’’’1¹’M’’’’’’’’’’’’’’’’’’’¹’E’’’’’’’’’’’’’’’’’’’ѹ’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŗ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qŗ’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŗ’'’’’’’’’’’’’’’’’’’’’±ŗ’D’’’’’’’’’’’’’’’’’’’»’5’’’’’’’’’’’’’’’’’’’A»’B’’’’’’’’’’’’’’’’’’’‘»’'’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Å’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Å’’’’’’’’’’’’’’’’’’’’QÅ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Å’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įÅ’X’’’’’’’’’’’’’’’’’’’AĘ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ę’$’’’’’’’’’’’’’’’’’’’±Ę’G’’’’’’’’’’’’’’’’’’’Ē’N’’’’’’’’’’’’’’’’’’’QĒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qĒ’X’’’’’’’’’’’’’’’’’’’ŃĒ’S’’’’’’’’’’’’’’’’’’’1Č’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’QČ’’’’’’’’’’’’’’’’’’’’qČ’Q’’’’’’’’’’’’’’’’’’’ŃČ’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’É’'’’’’’’’’’’’’’’’’’’’AÉ’'’’’’’’’’’’’’’’’’’’’qÉ’'’’’’’’’’’’’’’’’’’’’”É’'’’’’’’’’’’’’’’’’’’’ŃÉ’'’’’’’’’’’’’’’’’’’’’Ź’'’’’’’’’’’’’’’’’’’’’1Ź’'’’’’’’’’’’’’’’’’’’’aŹ’(’’’’’’’’’’’’’’’’’’’‘Ź’(’’’’’’’’’’’’’’’’’’’ĮŹ’(’’’’’’’’’’’’’’’’’’’ńŹ’(’’’’’’’’’’’’’’’’’’’!Ė’F’’’’’’’’’’’’’’’’’’’qĖ’Y’’’’’’’’’’’’’’’’’’’ŃĖ’O’’’’’’’’’’’’’’’’’’’1Ģ’W’’’’’’’’’’’’’’’’’’’’’ #free(0.7)# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‘Ģ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’±Ģ’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĢ’*’’’’’’’’’’’’’’’’’’’!Ķ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aĶ’*’’’’’’’’’’’’’’’’’’’‘Ķ’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įĶ’*’’’’’’’’’’’’’’’’’’’Ī’H’’’’’’’’’’’’’’’’’’’aĪ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ī’’’’’’’’’’’’’’’’’’’’‘Ī’M’’’’’’’’’’’’’’’’’’’įĪ’‘’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ļ’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃĻ’O’’’’’’’’’’’’’’’’’’’1Š’Ā’’’’’’’’’’’’’’’’’’’Ń’N’’’’’’’’’’’’’’’’’’’QŃ’&’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŃ’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ņ’]’’’’’’’’’’’’’’’’’’’Ņ’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #on("b")# ’’’’’’’’’’’ŃŅ’’’’’’’’’’’’’’’’’’’’ńŅ’R’’’’’’’’’’’’’’’’’’’QÓ’N’’’’’’’’’’’’’’’’’’’”Ó’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÓ’T’’’’’’’’’’’’’’’’’’’QŌ’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ō’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŌ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŌ’_’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aÕ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Õ’Q’’’’’’’’’’’’’’’’’’’įÕ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ö’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QÖ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ö’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮÖ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÖ’’’’’’’’’’’’’’’’’’’’×’5’’’’’’’’’’’’’’’’’’’Q×’=’’’’’’’’’’’’’’’’’’’‘×’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń×’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ų’T’’’’’’’’’’’’’’’’’’’Ų’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ų’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŲ’)’’’’’’’’’’’’’’’’’’’!Ł’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŁ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ł’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŁ’R’’’’’’’’’’’’’’’’’’’QŚ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ś’Q’’’’’’’’’’’’’’’’’’’įŚ’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ū’]’’’’’’’’’’’’’’’’’’’qŪ’W’’’’’’’’’’’’’’’’’’’’’ Tastatur! ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #on("b")# ’’’’’’’’’’’ŃŪ’Q’’’’’’’’’’’’’’’’’’’1Ü’M’’’’’’’’’’’’’’’’’’’Ü’'’’’’’’’’’’’’’’’’’’’’’ #off("b")# ’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ü’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ż’M’’’’’’’’’’’’’’’’’’’QŻ’K’’’’’’’’’’’’’’’’’’’’’ #free(1.0)# ’’’’’’’’’’’ ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ż’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŻ’I’’’’’’’’’’’’’’’’’’’!Ž’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŽ’a’’’’’’’’’’’’’’’’’’’ĮŽ’K’’’’’’’’’’’’’’’’’’’ß’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Aß’%’’’’’’’’’’’’’’’’’’’qß’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ß’Q’’’’’’’’’’’’’’’’’’’ńß’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ą’M’’’’’’’’’’’’’’’’’’’aą’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ą’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įą’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1į’U’’’’’’’’’’’’’’’’’’’‘į’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įį’T’’’’’’’’’’’’’’’’’’’!ā’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qā’M’’’’’’’’’’’’’’’’’’’”ā’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įā’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ć’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qć’U’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńć’M’’’’’’’’’’’’’’’’’’’!ä’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aä’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ä’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńä’O’’’’’’’’’’’’’’’’’’’Qå’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qå’c’’’’’’’’’’’’’’’’’’’įå’P’’’’’’’’’’’’’’’’’’’Aę’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ę’M’’’’’’’’’’’’’’’’’’’Ńę’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ē’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qē’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ē’G’’’’’’’’’’’’’’’’’’’ńē’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ač’4’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’č’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”č’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į蒃’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qé’„’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ź’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ė’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qė’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ė’’’’’’’’’’’’’’’’’’’’!ģ’T’’’’’’’’’’’’’’’’’’’ģ’V’’’’’’’’’’’’’’’’’’’įģ’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ķ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a풐’’’’’’’’’’’’’’’’’’’ī’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ī’Š’’’’’’’’’’’’’’’’’’’ļ’P’’’’’’’’’’’’’’’’’’’qļ’S’’’’’’’’’’’’’’’’’’’Ńļ’R’’’’’’’’’’’’’’’’’’’1š’S’’’’’’’’’’’’’’’’’’’’’ den: ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘š’Š’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ń’R’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’^^’’’’’’’’’’’’’’N#headandbottom("1","EUMEL-Benutzerhandbuch","TEIL 3 : Editor","3")# ’’’’’’’’’’.#pagenr("%",1)##setcount##block##pageblock# ’’.#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’#center#TEIL 3 : Editor ’’’’’’N#center#______________________’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į»’U’’’’’’’’’’’’’’’’’’’!¼’U’’’’’’’’’’’’’’’’’’’¼’M’’’’’’’’’’’’’’’’’’’Ѽ’P’’’’’’’’’’’’’’’’’’’1½’T’’’’’’’’’’’’’’’’’’’‘½’P’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń½’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!¾’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a¾’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¾’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’æ’N’’’’’’’’’’’’’’’’’’’Qæ’T’’’’’’’’’’’’’’’’’’’±æ’L’’’’’’’’’’’’’’’’’’’Ą’K’’’’’’’’’’’’’’’’’’’QĄ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ą’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃĄ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AĮ’’’’’’’’’’’’’’’’’’’’QĮ’0’’’’’’’’’’’’’’’’’’’‘Į’T’’’’’’’’’’’’’’’’’’’ńĮ’T’’’’’’’’’’’’’’’’’’’QĀ’S’’’’’’’’’’’’’’’’’’’±Ā’M’’’’’’’’’’’’’’’’’’’Ć’-’’’’’’’’’’’’’’’’’’’1Ć’’’’’’’’’’’’’’’’’’’’QĆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qĆ’E’’’’’’’’’’’’’’’’’’’ĮĆ’L’’’’’’’’’’’’’’’’’’’Ä’U’’’’’’’’’’’’’’’’’’’qÄ’=’’’’’’’’’’’’’’’’’’’±Ä’’’’’’’’’’’’’’’’’’’’ŃÄ’’’’’’’’’’’’’’’’’’’’ńÄ’?’’’’’’’’’’’’’’’’’’’AÅ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qÅ’’’’’’’’’’’’’’’’’’’’‘Å’/’’’’’’’’’’’’’’’’’’’ŃÅ’M’’’’’’’’’’’’’’’’’’’!Ę’N’’’’’’’’’’’’’’’’’’’qĘ’M’’’’’’’’’’’’’’’’’’’ĮĘ’M’’’’’’’’’’’’’’’’’’’Ē’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QĒ’_’’’’’’’’’’’’’’’’’’’ĮĒ’J’’’’’’’’’’’’’’’’’’’Č’a’’’’’’’’’’’’’’’’’’’Č’L’’’’’’’’’’’’’’’’’’’ŃČ’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!É’’’’’’’’’’’’’’’’’’’’1É’’’’’’’’’’’’’’’’’’’’QÉ’P’’’’’’’’’’’’’’’’’’’±É’M’’’’’’’’’’’’’’’’’’’Ź’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŹ’$’’’’’’’’’’’’’’’’’’’qŹ’R’’’’’’’’’’’’’’’’’’’ŃŹ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ė’’’’’’’’’’’’’’’’’’’’1Ė’’’’’’’’’’’’’’’’’’’’QĖ’Y’’’’’’’’’’’’’’’’’’’±Ė’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įĖ’(’’’’’’’’’’’’’’’’’’’Ģ’N’’’’’’’’’’’’’’’’’’’aĢ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ģ’’’’’’’’’’’’’’’’’’’’”Ģ’'’’’’’’’’’’’’’’’’’’’ŃĢ’^’’’’’’’’’’’’’’’’’’’1Ķ’(’’’’’’’’’’’’’’’’’’’aĶ’?’’’’’’’’’’’’’’’’’’’±Ķ’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĶ’'’’’’’’’’’’’’’’’’’’’!Ī’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aĪ’P’’’’’’’’’’’’’’’’’’’ĮĪ’O’’’’’’’’’’’’’’’’’’’!Ļ’N’’’’’’’’’’’’’’’’’’’qĻ’N’’’’’’’’’’’’’’’’’’’ĮĻ’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Š’’’’’’’’’’’’’’’’’’’’1Š’*’’’’’’’’’’’’’’’’’’’aŠ’P’’’’’’’’’’’’’’’’’’’ĮŠ’Q’’’’’’’’’’’’’’’’’’’!Ń’R’’’’’’’’’’’’’’’’’’’Ń’N’’’’’’’’’’’’’’’’’’’ŃŃ’J’’’’’’’’’’’’’’’’’’’!Ņ’P’’’’’’’’’’’’’’’’’’’Ņ’(’’’’’’’’’’’’’’’’’’’±Ņ’’’’’’’’’’’’’’’’’’’’ŃŅ’’’’’’’’’’’’’’’’’’’’ńŅ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#end#ie# ’’’’’’’’’Ó’’’’’’’’’’’’’’’’’’’’!Ó’P’’’’’’’’’’’’’’’’’’’Ó’U’’’’’’’’’’’’’’’’’’’įÓ’M’’’’’’’’’’’’’’’’’’’1Ō’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŌ’ ’’’’’’’’’’’’’’’’’’’Ō’T’’’’’’’’’’’’’’’’’’’įŌ’S’’’’’’’’’’’’’’’’’’’AÕ’R’’’’’’’’’’’’’’’’’’’”Õ’N’’’’’’’’’’’’’’’’’’’ńÕ’L’’’’’’’’’’’’’’’’’’’AÖ’A’’’’’’’’’’’’’’’’’’’‘Ö’’’’’’’’’’’’’’’’’’’’±Ö’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃÖ’’’’’’’’’’’’’’’’’’’’ńÖ’0’’’’’’’’’’’’’’’’’’’1×’N’’’’’’’’’’’’’’’’’’’×’S’’’’’’’’’’’’’’’’’’’į×’’’’’’’’’’’’’’’’’’’’Ų’T’’’’’’’’’’’’’’’’’’’aŲ’#’’’’’’’’’’’’’’’’’’’‘Ų’P’’’’’’’’’’’’’’’’’’’ńŲ’$’’’’’’’’’’’’’’’’’’’!Ł’L’’’’’’’’’’’’’’’’’’’qŁ’J’’’’’’’’’’’’’’’’’’’ĮŁ’L’’’’’’’’’’’’’’’’’’’Ś’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŚ’’’’’’’’’’’’’’’’’’’’aŚ’&’’’’’’’’’’’’’’’’’’’‘Ś’W’’’’’’’’’’’’’’’’’’’ńŚ’Q’’’’’’’’’’’’’’’’’’’QŪ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ū’6’’’’’’’’’’’’’’’’’’’ŃŪ’’’’’’’’’’’’’’’’’’’’ńŪ’’’’’’’’’’’’’’’’’’’’Ü’2’’’’’’’’’’’’’’’’’’’QÜ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ü’O’’’’’’’’’’’’’’’’’’’ńÜ’N’’’’’’’’’’’’’’’’’’’AŻ’K’’’’’’’’’’’’’’’’’’’‘Ż’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŻ’’’’’’’’’’’’’’’’’’’’įŻ’3’’’’’’’’’’’’’’’’’’’!Ž’M’’’’’’’’’’’’’’’’’’’qŽ’L’’’’’’’’’’’’’’’’’’’ĮŽ’L’’’’’’’’’’’’’’’’’’’ß’’’’’’’’’’’’’’’’’’’’1ß’M’’’’’’’’’’’’’’’’’’’ß’R’’’’’’’’’’’’’’’’’’’įß’:’’’’’’’’’’’’’’’’’’’!ą’’’’’’’’’’’’’’’’’’’’Aą’"’’’’’’’’’’’’’’’’’’’qą’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ą’’’’’’’’’’’’’’’’’’’’±ą’’’’’’’’’’’’’’’’’’’’Ńą’M’’’’’’’’’’’’’’’’’’’!į’M’’’’’’’’’’’’’’’’’’’qį’I’’’’’’’’’’’’’’’’’’’Įį’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’!ā’’’’’’’’’’’’’’’’’’’’Aā’[’’’’’’’’’’’’’’’’’’’”ā’M’’’’’’’’’’’’’’’’’’’ńā’N’’’’’’’’’’’’’’’’’’’Ać’.’’’’’’’’’’’’’’’’’’’qć’N’’’’’’’’’’’’’’’’’’’Įć’Q’’’’’’’’’’’’’’’’’’’!ä’J’’’’’’’’’’’’’’’’’’’qä’:’’’’’’’’’’’’’’’’’’’±ä’J’’’’’’’’’’’’’’’’’’’å’L’’’’’’’’’’’’’’’’’’’Qå’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”å’’’’’’’’’’’’’’’’’’’’Įå’'’’’’’’’’’’’’’’’’’’’ńå’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ę’/’’’’’’’’’’’’’’’’’’’qę’J’’’’’’’’’’’’’’’’’’’Įę’,’’’’’’’’’’’’’’’’’’’ńę’O’’’’’’’’’’’’’’’’’’’Qē’J’’’’’’’’’’’’’’’’’’’”ē’H’’’’’’’’’’’’’’’’’’’ńē’L’’’’’’’’’’’’’’’’’’’Ač’K’’’’’’’’’’’’’’’’’’’‘č’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įč’’’’’’’’’’’’’’’’’’’’é’'’’’’’’’’’’’’’’’’’’’1é’S’’’’’’’’’’’’’’’’’’’‘é’?’’’’’’’’’’’’’’’’’’’įé’R’’’’’’’’’’’’’’’’’’’Aź’M’’’’’’’’’’’’’’’’’’’‘ź’N’’’’’’’’’’’’’’’’’’’įź’M’’’’’’’’’’’’’’’’’’’1ė’R’’’’’’’’’’’’’’’’’’’‘ė’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įė’(’’’’’’’’’’’’’’’’’’’ńė’O’’’’’’’’’’’’’’’’’’’Qģ’(’’’’’’’’’’’’’’’’’’’ģ’O’’’’’’’’’’’’’’’’’’’įģ’U’’’’’’’’’’’’’’’’’’’Aķ’M’’’’’’’’’’’’’’’’’’’‘ķ’O’’’’’’’’’’’’’’’’’’’ńķ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ī’’’’’’’’’’’’’’’’’’’’1ī’.’’’’’’’’’’’’’’’’’’’aī’O’’’’’’’’’’’’’’’’’’’Įī’M’’’’’’’’’’’’’’’’’’’ļ’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qļ’_’’’’’’’’’’’’’’’’’’’įļ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1š’a’’’’’’’’’’’’’’’’’’’”š’M’’’’’’’’’’’’’’’’’’’ńš’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ań’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń’[’’’’’’’’’’’’’’’’’’’įń’Y’’’’’’’’’’’’’’’’’’’Aņ’M’’’’’’’’’’’’’’’’’’’‘ņ’O’’’’’’’’’’’’’’’’’’’ńņ’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ó’’’’’’’’’’’’’’’’’’’’1ó’"’’’’’’’’’’’’’’’’’’’aó’Z’’’’’’’’’’’’’’’’’’’Įó’Q’’’’’’’’’’’’’’’’’’’!ō’Q’’’’’’’’’’’’’’’’’’’ō’W’’’’’’’’’’’’’’’’’’’įō’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!õ’’’’’’’’’’’’’’’’’’’’Qõ’!’’’’’’’’’’’’’’’’’’’õ’M’’’’’’’’’’’’’’’’’’’Ńõ’T’’’’’’’’’’’’’’’’’’’1ö’P’’’’’’’’’’’’’’’’’’’‘ö’L’’’’’’’’’’’’’’’’’’’įö’M’’’’’’’’’’’’’’’’’’’1÷’9’’’’’’’’’’’’’’’’’’’q÷’P’’’’’’’’’’’’’’’’’’’Ń÷’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#end#ie# ’’’’’’’’’ų’ ’’’’’’’’’’’’’’’’’’’1ų’K’’’’’’’’’’’’’’’’’’’ų’J’’’’’’’’’’’’’’’’’’’Ńų’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ł’’’’’’’’’’’’’’’’’’’’Ał’’’’’’’’’’’’’’’’’’’’ał’U’’’’’’’’’’’’’’’’’’’Įł’O’’’’’’’’’’’’’’’’’’’!ś’M’’’’’’’’’’’’’’’’’’’qś’K’’’’’’’’’’’’’’’’’’’Įś’M’’’’’’’’’’’’’’’’’’’ū’9’’’’’’’’’’’’’’’’’’’Qū’M’’’’’’’’’’’’’’’’’’’”ū’L’’’’’’’’’’’’’’’’’’’ńū’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#prio#ie# ’’’’’’’’1ü’%’’’’’’’’’’’’’’’’’’’aü’P’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įü’5’’’’’’’’’’’’’’’’’’’ż’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ż’U’’’’’’’’’’’’’’’’’’’‘ż’T’’’’’’’’’’’’’’’’’’’ńż’S’’’’’’’’’’’’’’’’’’’Qž’!’’’’’’’’’’’’’’’’’’’ž’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’!’’\’’’’’’’’’’’’’’’’’’’’’P’’’’’’’’’’’’’’’’’’’į’’’’’’’’’’’’’’’’’’’’’’N’’’______________________________________ ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’3 - % #right#GMD ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #right#3 - % ’’’’’’’’’’’’’TEIL 3: Der Editor ’’’’’’’’’’^Mit dem #ib#EUMEL-Editor#ie# steht fŪr den Teil der Programmierung, der aus der Eingabe’’’’’’’^von Programmtext besteht, dasselbe komfortable Werkzeug zur VerfŪgung, wie fŪr die’’’’’’’’’’’’NTextverarbeitung. Merkmale des EUMEL-Editors sind die einfache Fenstertechnik’Nund die Ūbersichtliche Bedienung durch wenige Funktionstasten. ’’’’’’’’’’’’’’’^Eine mit dem Editor erzeugte Textdatei ist maximal 4075 Zeilen lang, die maximale’’’’’’’’’’’’’.Breite einer Zeile betrŁgt 16000 Zeichen. ’’’’.3.1 Ein- und Ausschalten des Editors ’’’’’’’’>Der Editor wird eingeschaltet durch Eingabe von: ’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’. #ib#edit#ie# ("dateiname") ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’^Falls eine Datei unter dem eingegebenen Namen existiert, wird ein Fenster auf dieser’’’’’’’’’’^Datei an der Stelle geŚffnet, an der zuletzt ein Zugriff auf diese Datei stattfand. ’’’’’’’’’’NExistiert noch keine Datei unter dem angegebenen Namen in der Task, folgt eine^Anfrage, ob eine Datei unter dem eingegebenen Namen neu eingerichtet werden soll: ’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’ edit("dateiname") ’’’’’’’’. "dateiname" neu einrichten (j/n) ? ’’’’’’’N____________________________________________________________________________ ’^Die Abfrage dient der Kontrolle der Schreibweise. Man kann ggf. das Einrichten der’’’’’’’’’’’’NDatei ablehnen, den Dateinamen verbessern und das Kommando erneut geben. ’’’’’NBei korrekter Schreibweise bejahen Sie die Kontrollfrage#u# 1)#e#mit ’’’’’’’’’#center# oder ’^Es erscheint ein leerer Editorbildschirm. Die oberste Zeile des Bildschirms ist die’’’’’’’’’’’^#ib#Titelzeile#ie#. In ihr kann nicht geschrieben werden. Sie zeigt jedoch verschiedene nŪtzŻ’^liche Dinge an: den Namen der Datei, die Nummer der aktuellen Zeile, in der gerade’’’’’’’’’’’’Ngeschrieben wird, Tabulatormarken, EinfŪgemodus, Lernmodus usw. ’’’’’’’’’’’’’’N____________________________________________________________________________ ’n #mark on# ............... dateiname ....................#mark off# Zeile 1 #mark on# #mark off# ’’’’’’’’’’’N____________________________________________________________________________ ’nWollen Sie die #ib#Schreibarbeit beenden#ie# und den #ib#Editor ausschalten#ie#, so drŪcken Sie die’’’’’’’’’’’beiden Tasten ^nacheinander. Sie haben damit den #ib#Editor verlassen#ie# und befinden sich wieder auf’’’’’’’Monitor-Ebene. ’’’’’’’’’’’’’’’3.2 Die Funktionstasten ’’’’’^Die Funktionstasten realisieren diejenigen FŁhigkeiten des Editor, die Ūber die reine’’’’’’’’’^Zeicheneingabe hinausgehen. Wo die Tasten auf Ihrem GerŁt liegen, hŁngt von dem’’’’’’’’’’’’’’’Njeweiligen GerŁtetyp ab. Die Wirkung der Tasten ist im Weiteren erlŁutert. ’’’#l pos (0.0)##l pos(4.0)# ’’’’.#taste1(" SHIFT ")# Umschalttaste ’’> <^> <>> <<> Positionierungstasten ’’’’’’’’’’’’’. Eingabe-/ Absatztaste ’’’’’’. Kommandotaste ’’’’’’’’’’’’’’. VerstŁrkertaste ’’’’’’’’’’’’. Tabulatortaste ’’’’’’’’’’’’’. Markiertaste ’’’’’’’’’’’’’’’ LŚschtaste ’. EinfŪgetaste ’’’’’’’’’’’’’’’. Supervisortaste ’’’’’’’’’’’’ Stoptaste ’’ Weitertaste #tableend##clear pos# ’’’’’’’’^Es kann sein, daū Tasten nicht richtig beschriftet sind. Die Installations-anleitung’’’’’’’’’’^muū dann die Entsprechungen beschreiben. NatŪrlich kŚnnen sich weitere FunktionsŻ’’’’’’’’’’’’’Ntasten auūer den im folgenden beschriebenen auf Ihrer Tastatur befinden. DieseNhaben standardmŁūig jedoch keine besondere Bedeutung fŪr den Editor. ’’’’’’’’’.3.3 Die Wirkung der Funktionstasten ’’’’’’’’’#ib#Umschalttaste#ie# ’’’’’’’’^Wird diese Taste gleichzeitig mit einer anderen betŁtigt, so wird ein Buchstabe in’’’’’’’’’’’’^Groūschreibung, bei den Ūbrigen Tasten das obere Zeichen, ausgegeben. So wird z.B.’’’’’’’’’’’’.anstelle der "9" das Zeichen ")" ausgegeben. ’Positionierungstasten ’’’’’’’’^#ib#Positionierung des Cursors#ie# um eine Spalten-/Zeilenposition in die jeweilige Richtung. N#ib#Eingabetaste / Absatztaste#ie#, Carriage Return, kurz: 'CR' ’’’’’’’’’’’’’’^Diese Taste schlieūt die aktuelle Zeile explizit ab und es wird an den Beginn der’’’’’’’’’’’’’>nŁchsten Zeile positioniert. EinrŪckungen werden beibehalten. ^Der EUMEL-Editor ist auf automatischen Wortumbruch voreingestellt, d.h. ein Wort,’’’’’’’’’’’’’^das Ūber das 77. Zeichen der aktuellen Zeile herausreichen wŪrde, wird automatisch’’’’’’’’’’’’^in die nŁchste Zeile gerŪckt (siehe 'word wrap' 4.2.5). Die Absatztaste wird also’’’’’’’’’’’’’^benŚtigt, um explizite Zeilenwechsel und EinrŪckungen bei der Textformatierung zu’’’’’’’’’’’’’^erhalten. Eine Absatzmarke wird durch ein 'blank' hinter dem letzten Zeichen der’’’’’’’’’’’’’’^Zeile erzeugt und ist im Editor an der Inversmarkierung am rechten Bildschirmrand zu’’’’’’’’’’NIm EUMEL-System werden Kommandos auf einer Kommandozeile, auf der alle’’’’’’’’^Editorfunktionen zur VerfŪgung stehen, eingegeben. Auf dieser Ebene beendet die’’’’’’’’’’’’’’’NTaste also ausdrŪcklich die Kommandoeingabe, das gegebene Kommando wird anŻ’’’.schlieūend analysiert und ausgefŪhrt. ’’’’’’’’>"#ib#VerstŁrkertaste#ie#"; wird als Vorschalttaste bedient. ’’NIn Kombination mit anderen Funktionstasten wird deren Wirkung verstŁrkt. ’’’’’^Steht der Cursor nicht am unteren Bildrand, so wird er dorthin positioniert. Steht er’’’’’’’’’Nam unteren Bildrand, so wird um einen Bildschirminhalt "weitergeblŁttert". ’’’^Entsprechend werden auch die Tasten : <^> <>> <<> mit der HOP-Taste verstŁrkt. ’’’’’’’’’’’’’’’ ^#ib#EinfŪgen von Textpassagen#ie#. Die HOP-Taste in Verbindung mit RUBIN und RUBOUT’’’’’’’’’’’>wird zum 'verstŁrkten' LŚschen und EinfŪgen verwendet. ’’’’’’’^Ab der aktuellen Position des Cursors 'verschwindet' der restliche Text. Es kann wie’’’’’’’’’’^bei der anfŁnglichen Texteingabe fortgefahren werden. Die Anzeige '#ib#REST#ie#' in der’’’’’’’^Titelzeile erinnert daran, daū noch ein Resttext existiert. Dieser erscheint nach einem’’’’’’’^neuerlichen BetŁtigen der beiden Tasten HOP RUBIN wieder auf dem Bildschirm (die’’’’’’’’’’’’’’.Anzeige 'REST' verschwindet dann wieder). ’’’’N____________________________________________________________________________ ’N ................ dateiname ..................... Zeile 4 ’’’’’’’’’’’’’’. In diesem Text soll vor dem zweiten Satzß ’’. etwas eingefŪgt werden. Hierzu wird der ’’’’. Cursor an die Position gefŪhrt, an derß ’’’’> ein beliebiger Text eingefŪgt werden soll.#absatz# ’’’’’’’’’N____________________________________________________________________________ ’žNach BetŁtigen der Taste #on("i")##on("b")#HOP#off("i")##off("b")# und #on("i")##on("b")#RUBIN#off("i")##off("b")#sieht der Bildschirm wie folgt aus: ’’’’’’’’N____________________________________________________________________________ ’N .............. dateiname ........REST.......... Zeile 4 ’’’’’’’’’’’’’’’. In diesem Text soll vor dem zweiten Satzß ’’ etwas eingefŪgt werden. ’’’’’’’’’’’’’’’’’’’’R’A’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’P’’’’’’’’’’’’’’’’’’’b’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’ņ’X’’’’’’’’’’’’’’’’’’’R’N’’’’’’’’’’’’’’’’’’’¢’N’’’’’’’’’’’’’’’’’’’ņ’S’’’’’’’’’’’’’’’’’’’R’T’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’ņ’$’’’’’’’’’’’’’’’’’’’"’S’’’’’’’’’’’’’’’’’’’‚’S’’’’’’’’’’’’’’’’’’’ā’N’’’’’’’’’’’’’’’’’’’2’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’!’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’'’’’’’’’’’’’’’’’’’’’Ā’)’’’’’’’’’’’’’’’’’’’ņ’7’’’’’’’’’’’’’’’’’’’2’(’’’’’’’’’’’’’’’’’’’b’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’(’’’’’’’’’’’’’’’’’’’B’8’’’’’’’’’’’’’’’’’’’‚’!’’’’’’’’’’’’’’’’’’’²’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’h’’’’’’’’’’’’’’’’’’’‚ ’M’’’’’’’’’’’’’’’’’’’Ņ ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’Y’’’’’’’’’’’’’’’’’’’b ’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢ ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ ’S’’’’’’’’’’’’’’’’’’’2 ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R ’P’’’’’’’’’’’’’’’’’’’² ’M’’’’’’’’’’’’’’’’’’’ ’_’’’’’’’’’’’’’’’’’’’r ’T’’’’’’’’’’’’’’’’’’’Ņ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B ’ ’’’’’’’’’’’’’’’’’’’r ’"’’’’’’’’’’’’’’’’’’’¢ ’S’’’’’’’’’’’’’’’’’’’’N’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’S’’’’’’’’’’’’’’’’’’’’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’r’*’’’’’’’’’’’’’’’’’’’¢’N’’’’’’’’’’’’’’’’’’’ņ’N’’’’’’’’’’’’’’’’’’’B’R’’’’’’’’’’’’’’’’’’’¢’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’M’’’’’’’’’’’’’’’’’’’B’N’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’ņ’U’’’’’’’’’’’’’’’’’’’R’R’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’\’’’’’’’’’’’’’’’’’’’b’S’’’’’’’’’’’’’’’’’’’Ā’S’’’’’’’’’’’’’’’’’’’"’^’’’’’’’’’’’’’’’’’’’‚’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’S’’’’’’’’’’’’’’’’’’’R’R’’’’’’’’’’’’’’’’’’’²’P’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’Z’’’’’’’’’’’’’’’’’’’r’W’’’’’’’’’’’’’’’’’’’Ņ’]’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’L’’’’’’’’’’’’’’’’’’’Ā’S’’’’’’’’’’’’’’’’’’’"’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’^’’’’’’’’’’’’’’’’’’’Ņ’M’’’’’’’’’’’’’’’’’’’"’T’’’’’’’’’’’’’’’’’’’’’ sollen. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’P’’’’’’’’’’’’’’’’’’’ā’T’’’’’’’’’’’’’’’’’’’B’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’W’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’b’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’c’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’X’’’’’’’’’’’’’’’’’’’²’\’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’S’’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’X’’’’’’’’’’’’’’’’’’’‚’_’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’B’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’ ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā ’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2!’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚!’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā!’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ!’2’’’’’’’’’’’’’’’’’’’2"’.’’’’’’’’’’’’’’’’’’’b"’J’’’’’’’’’’’’’’’’’’’²"’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā"’F’’’’’’’’’’’’’’’’’’’2#’Q’’’’’’’’’’’’’’’’’’’’#’L’’’’’’’’’’’’’’’’’’’ā#’P’’’’’’’’’’’’’’’’’’’B$’Q’’’’’’’’’’’’’’’’’’’¢$’L’’’’’’’’’’’’’’’’’’’ņ$’K’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B%’’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’b%’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’‚%’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²%’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā%’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’&’R’’’’’’’’’’’’’’’’’’’r&’M’’’’’’’’’’’’’’’’’’’Ā&’]’’’’’’’’’’’’’’’’’’’"'’V’’’’’’’’’’’’’’’’’’’‚'’S’’’’’’’’’’’’’’’’’’’ā'’X’’’’’’’’’’’’’’’’’’’B(’P’’’’’’’’’’’’’’’’’’’¢(’’’’’’’’’’’’’’’’’’’’Ā(’L’’’’’’’’’’’’’’’’’’’)’Q’’’’’’’’’’’’’’’’’’’r)’S’’’’’’’’’’’’’’’’’’’Ņ)’P’’’’’’’’’’’’’’’’’’’2*’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B*’0’’’’’’’’’’’’’’’’’’’‚*’R’’’’’’’’’’’’’’’’’’’ā*’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’+’?’’’’’’’’’’’’’’’’’’’b+’Q’’’’’’’’’’’’’’’’’’’Ā+’R’’’’’’’’’’’’’’’’’’’",’r’’’’’’’’’’’’’’’’’’’¢,’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā,’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’-’Q’’’’’’’’’’’’’’’’’’’b-’O’’’’’’’’’’’’’’’’’’’Ā-’K’’’’’’’’’’’’’’’’’’’.’P’’’’’’’’’’’’’’’’’’’r.’S’’’’’’’’’’’’’’’’’’’Ņ.’S’’’’’’’’’’’’’’’’’’’2/’N’’’’’’’’’’’’’’’’’’’‚/’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā/’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"0’’’’’’’’’’’’’’’’’’’’B0’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b0’’’’’’’’’’’’’’’’’’’’‚0’)’’’’’’’’’’’’’’’’’’’²0’%’’’’’’’’’’’’’’’’’’’ā0’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ0’’’’’’’’’’’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’21’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R1’O’’’’’’’’’’’’’’’’’’’²1’N’’’’’’’’’’’’’’’’’’’2’P’’’’’’’’’’’’’’’’’’’b2’L’’’’’’’’’’’’’’’’’’’²2’6’’’’’’’’’’’’’’’’’’’’’#foot# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ2’=’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’23’’’’’’’’’’’’’’’’’’’’R3’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r3’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’3’M’’’’’’’’’’’’’’’’’’’ā3’U’’’’’’’’’’’’’’’’’’’B4’P’’’’’’’’’’’’’’’’’’’¢4’P’’’’’’’’’’’’’’’’’’’5’N’’’’’’’’’’’’’’’’’’’R5’$’’’’’’’’’’’’’’’’’’’‚5’K’’’’’’’’’’’’’’’’’’’Ņ5’O’’’’’’’’’’’’’’’’’’’26’L’’’N____________________________________________________________________________ ’^Nun kann beliebig viel Text eingefŪgt werden. Nochmaliges BetŁtigen von HOP und’’’’’’’’’’’’’’’>RUBIN fŪhrt den Text-Rest wieder bŪndig heran. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’>LŚscht die Zeile ab Cursor-Position bis Zeilenende. ’’’’’’’’’’N____________________________________________________________________________ ’N ................ dateiname ..................... Zeile 4 ’’’’’’’’’’’’’’. Soll eine ganze Zeile oder ein Textrestß ’’’> gelŚscht werden, so positioniert man an dieß ’’’’’’’’’’’’’’’> Stelle, ab der gelŚscht werden soll. Rest lŚschen.... ’’’’’’> Nach HOP RUBOUT ist der Zeilenrest gelŚscht.#absatz# ’’’’’’’N____________________________________________________________________________ ’žNach BetŁtigen der Tasten #on("i")##on("b")#HOP#off("i")##off("b")# undß#on("i")##on("b")#RUBOUT#off("i")##off("b")#ßsieht der Bildschirm wie folgt aus. ’’’’’N____________________________________________________________________________ ’> ............... dateiname .................... Zeile 4 . Soll eine ganze Zeile oder ein Textrestß ’’’> gelŚscht werden, so positioniert man an dieß ’’’’’’’’’’’’’’’. Stelle, ab der gelŚscht werden soll. ’’’’’’’> Nach HOP RUBOUT ist der Zeilenrest gelŚscht.#absatz# ’’’’’’’N____________________________________________________________________________ ’NSteht der Cursor am Zeilenanfang, wird nach HOP RUBOUT dementsprechend die’’’’^ganze Zeile gelŚscht und die LŪcke durch NachrŪcken der Folgezeilen geschlossen’’’’’’’’’’’’’’’(HOP RUBOUT betŁtigen). ’’’’’’#ib#Tabulatortaste#ie# ’’’’’’’^Mit der Tabulatortaste werden die eingestellten Tabulatorpositionen angesprungen.’’’’’’’’’’’’’^Jeder Tastendruck lŁūt den Cursor auf die nŁchste eingestellte Tabulatorposition’’’’’’’’’’’’’’n#on("i")#Voreingestellte#off("i")# Tabulatorpositionen sind die beiden Schreibgrenzen, Textanfang in der’’’’’’Zeile und Ende der Zeile. ’’’’^Weitere Tabulatorpositionen kŚnnen durch Positionierung auf die gewŪnschte Spalte’’’’’’’’’’’’’¾und #on("i")##on("b")#HOP#off("i")##off("b")# #on("i")##on("b")#TAB#off("i")##off("b")# gesetzt werden. Sie kŚnnen gelŚscht werden, indem sie mit #on("i")##on("b")#TAB#off("i")##off("b")#’’’nangesprungen und mit #on("i")##on("b")#HOP#off("i")##off("b")# #on("i")##on("b")#TAB#off("i")##off("b")# ’’’’’ausgeschaltet werden. ’’’’’’’’žDie gesamte eingestellte Tabulalation kann durch #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#TAB#off("i")##off("b")# ein-/ und ausgeŻ’’’’’’’’’schaltet werden. ’’’’’’’’’’’’’^Die eingestellten Tabulatorpositionen erkennen Sie an den Tabulatorzeichen (DachzeiŻ’’’’’’’’’’.chen) in der obersten Bildschirmzeile. ’’’’’’’.#ib#Ein- bzw. Ausschalten der Markierung#ie#. ^Bei BetŁtigung dieser Taste wird in einen speziellen #ib#Markierzustand#ie# geschaltet. Alles,Nwas Sie jetzt schreiben bzw. durch Bewegen des Cursors in Richtung Dateiende’’nkennzeichnen, steht als #on("i")#markierter#off("i")# Bereich fŪr die Bearbeitung zur VerfŪgung. Zur’’’’’’’’’’^besseren Sichtbarkeit wird der markierte Bereich invers zum Ūbrigen Text dargestellt. ’’’’’’’’NWird der Cursor in eine Richtung bewegt, wird das gesamte TextstŪck zwischen’’^Einschaltpunkt der Markierung und aktueller Cursorposition markiert. RŪckwŁrtsbeweŻ’’’’’’’’’’’>gungen des Cursors verkŪrzen den markierten Bereich wieder. ’’NDurch erneutes BetŁtigen der MARK-Taste schalten Sie den Markier-Zustand’’’’’’NMit weiteren Kommandos kann der Bereich nun bearbeitet werden: ’’’’’’’’’’’’’’’N Markierten Abschnitt in 'Scratch'-Datei kopieren. ’’’’’’’’’>

Markierten Abschnitt herauskopieren. ’’’’’’> Markierten Abschnitt lŚschen. ’’’’’’’’’’’’’ĪDer mit #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#p#off("i")##off("b")# oder#on("i")##on("b")#d#off("i")##off("b")# kopierte Bereich kann beliebig oft in derselben oder einer’’’’’’’’’’’’’’.anderen Datei ein/angefŪgt werden. ’’’’’’’’’’’īDer mit #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#RUBOUT#off("i")##off("b")# gelŚschte Abschnitt kann genau einmal durch #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#RUBOUT#off("i")##off("b")#’’’’’’’’’’’’’>an anderer Stelle derselben Datei eingefŪgt werden. ’’’’’’’’’’N(vgl. ESC-Taste, Operationen auf Markierungen, 3-#topage("ESC")#) ’’’’’’’’’’’’>#ib#Ein- bzw. Ausschalten des EinfŪgemodus.#ie# ’’’’’’’’’’’’’’^Das BetŁtigen der Taste schaltet in den EinfŪgemodus. Der Zustand wird durch das’’’’’’’’’’’’’’^Wort "RUBIN" im linken Drittel der Titelzeile der Datei angezeigt. Vor dem Zeichen,’’’’’’’’’’’^auf dem der Cursor steht, wird eingefŪgt. Nochmaliges BetŁtigen der Taste schaltet’’’’’’’’’’’’den EinfŪgemodus aus. ’’’’’’’’#ib#LŚschtaste#ie# ’’’’’’’’’’’NDas Zeichen, auf dem der Cursor steht, wird gelŚscht. Wenn der Cursor, wie bei^fortlaufender Eingabe Ūblich, hinter dem letzten Zeichen einer Zeile steht, wird das’’’’’’’’’’letzte Zeichen gelŚscht. ’’’’’3.4 ESC Kommandos ’’’’’’’’’’’#ib#Kommandotaste#ie# ’’’’’’’’^Mit der ESC-Taste in Kombination mit einer Folgetaste werden vordefinierte Aktionen’’’’’’’’’’’^ausgelŚst. Es gibt Aktionen, die vorprogrammiert zur VerfŪgung stehen, und Sie selbst’’’’’’’’’kŚnnen weitere hinzufŪgen. ’’’.Der Kommandodialog wird eingeschaltet durch: ’N____________________________________________________________________________ ’> ............... Beispiel ..................... Zeile 4 ’> gibßkommando:ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ’N____________________________________________________________________________ ’NDer Kommandodialog ermŚglicht die Eingabe von beliebigen Kommandos ohne den’’’^Editor verlassen zu mŪssen. Insbesondere Such- und Kopieroperationen stellen auch’’’’’’’’’’’’’>fŪr den Programmierer nŪtzliches Werkzeug dar (siehe 3.5). ’’’NAuf der Kommandozeile kann jedes Kommando gegeben werden. Die Kommandozeile’’’~kann wie eine normale Textzeile editiert werden. Nach #on("i")##on("b")#CR#off("i")##off("b")# verschwindet die KomŻ’’’’’’’’’’.mandozeile und das Kommando wird ausgefŪhrt. ’^Falls ein Fehler auftritt erfolgt eine entsprechende Fehlermeldung in der Kopfzeile und’’’’’’’.die Kommandozeile erscheint erneut. ’’’’’’’’’’NUm ein weiteres Editor-Fenster zu 'Śffnen', betŁtigt man im Editor ’’’’’’’’’’’^BetŁtigt man ESC e ungefŁhr in der Mitte des Bildschirms, hat man das Fenster auf’’’’’’’’’’’’’^die neue Datei in der unteren HŁlfte des Bildschirms und die 'alte' Datei in der’’’’’’’’’’’’’’^oberen BildschirmhŁlfte. ZunŁchst wird der Dateiname erfragt. Nach dessen Eingabe’’’’’’’’’’’’’~und #on("i")##on("b")#CR#off("i")##off("b")# wird ein Fenster auf erŚffnet. Die obere linke Ecke des Fensters befindet’’’’’’’’^sich an der aktuellen Cursor-Position. Dabei darf sich der Cursor nicht zu sehr am’’’’’’’’’’’’^rechten oder unteren Rand befinden, weil das Fenster sonst zu klein wŪrde. In diesem’’’’’’’’’’N'Fenster' kann man dann genauso arbeiten wie im 'normalen' Editor. ’’’’’’’’’’’Mit der Tastenfolge ’’’’’’’’’’^wechselt man von einem Fenster (zyklisch) in das benachbarte. Es gibt eine HierŻ’’’’’’’’’’’’’’^archie zwischen den Fenstern in der Reihenfolge, in der eines im anderen eingeŻ’’’’’’’’’’’’’’’richtet worden ist. Gibt man ’^in einem Fenster, so verschwindet dieses und alle darin eingeschachtelten Fenster,’’’’’’’’’’’’>und man befindet sich im Ūbergeordneten Fenster. ’’’’’’’’’’’’’ßß

oder ßß Nschreibt man einen markierten Teil in eine 'Scratch'-Datei (nicht editierbarerNZwischenspeicher); durch ESC p wird ein markie’’’’’’’’’’’’’’’’‚6’M’’’’’’’’’’’’’’’’’’’Ņ6’M’’’’’’’’’’’’’’’’’’’"7’S’’’’’’’’’’’’’’’’’’’‚7’U’’’’’’’’’’’’’’’’’’’ā7’V’’’’’’’’’’’’’’’’’’’B8’\’’’’’’’’’’’’’’’’’’’¢8’X’’’’’’’’’’’’’’’’’’’9’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b9’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚9’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā9’’’’’’’’’’’’’’’’’’’’ā9’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’:’’’’’’’’’’’’’’’’’’’’":’*’’’’’’’’’’’’’’’’’’’R:’&’’’’’’’’’’’’’’’’’’’‚:’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’:’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²:’M’’’’’’’’’’’’’’’’’’’;’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’";’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R;’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r;’N’’’’’’’’’’’’’’’’’’’Ā;’0’’’’’’’’’’’’’’’’’’’<’U’’’’’’’’’’’’’’’’’’’b<’S’’’’’’’’’’’’’’’’’’’Ā<’M’’’’’’’’’’’’’’’’’’’=’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2=’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R=’4’’’’’’’’’’’’’’’’’’’’=’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ=’#’’’’’’’’’’’’’’’’’’’>’#’’’’’’’’’’’’’’’’’’’2>’#’’’’’’’’’’’’’’’’’’’b>’#’’’’’’’’’’’’’’’’’’’’>’#’’’’’’’’’’’’’’’’’’’Ā>’#’’’’’’’’’’’’’’’’’’’ņ>’#’’’’’’’’’’’’’’’’’’’"?’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R?’’’’’’’’’’’’’’’’’’’’r?’-’’’’’’’’’’’’’’’’’’’¢?’,’’’’’’’’’’’’’’’’’’’Ņ?’2’’’’’’’’’’’’’’’’’’’@’'’’’’’’’’’’’’’’’’’’’B@’'’’’’’’’’’’’’’’’’’’’r@’%’’’’’’’’’’’’’’’’’’’¢@’&’’’’’’’’’’’’’’’’’’’Ņ@’'’’’’’’’’’’’’’’’’’’’A’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"A’’’’’’’’’’’’’’’’’’’’BA’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bA’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚A’P’’’’’’’’’’’’’’’’’’’āA’O’’’’’’’’’’’’’’’’’’’BB’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²B’P’’’’’’’’’’’’’’’’’’’C’T’’’’’’’’’’’’’’’’’’’rC’N’’’’’’’’’’’’’’’’’’’ĀC’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āC’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’D’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2D’K’’’’’’’’’’’’’’’’’’’‚D’O’’’’’’’’’’’’’’’’’’’āD’X’’’’’’’’’’’’’’’’’’’BE’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢E’’’’’’’’’’’’’’’’’’’’ĀE’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āE’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’F’R’’’’’’’’’’’’’’’’’’’bF’K’’’’’’’’’’’’’’’’’’’²F’O’’’’’’’’’’’’’’’’’’’G’O’’’’’’’’’’’’’’’’’’’rG’P’’’’’’’’’’’’’’’’’’’ŅG’M’’’’’’’’’’’’’’’’’’’"H’F’’’’’’’’’’’’’’’’’’’rH’N’’’’’’’’’’’’’’’’’’’ĀH’O’’’’’’’’’’’’’’’’’’’"I’J’’’’’’’’’’’’’’’’’’’rI’P’’’’’’’’’’’’’’’’’’’ŅI’M’’’’’’’’’’’’’’’’’’’"J’P’’’’’’’’’’’’’’’’’’’‚J’R’’’’’’’’’’’’’’’’’’’āJ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"K’’’’’’’’’’’’’’’’’’’’BK’T’’’’’’’’’’’’’’’’’’’¢K’\’’’’’’’’’’’’’’’’’’’L’V’’’’’’’’’’’’’’’’’’’bL’T’’’’’’’’’’’’’’’’’’’ĀL’R’’’’’’’’’’’’’’’’’’’"M’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rM’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²M’W’’’’’’’’’’’’’’’’’’’N’Q’’’’’’’’’’’’’’’’’’’rN’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’N’*’’’’’’’’’’’’’’’’’’’ĀN’%’’’’’’’’’’’’’’’’’’’ņN’(’’’’’’’’’’’’’’’’’’’"O’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RO’Q’’’’’’’’’’’’’’’’’’’²O’W’’’’’’’’’’’’’’’’’’’P’8’’’’’’’’’’’’’’’’’’’RP’O’’’’’’’’’’’’’’’’’’’²P’S’’’’’’’’’’’’’’’’’’’Q’Q’’’’’’’’’’’’’’’’’’’rQ’U’’’’’’’’’’’’’’’’’’’ŅQ’Q’’’’’’’’’’’’’’’’’’’2R’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²R’W’’’’’’’’’’’’’’’’’’’S’R’’’’’’’’’’’’’’’’’’’rS’V’’’’’’’’’’’’’’’’’’’ŅS’]’’’’’’’’’’’’’’’’’’’2T’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RT’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ibie# : ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rT’W’’’’’’’’’’’’’’’’’’’ŅT’P’’’’’’’’’’’’’’’’’’’2U’O’’’’’’’’’’’’’’’’’’’’U’L’’’’’’’’’’’’’’’’’’’āU’k’’’’’’’’’’’’’’’’’’’RV’e’’’’’’’’’’’’’’’’’’’ĀV’Z’’’’’’’’’’’’’’’’’’’"W’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bW’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚W’.’’’’’’’’’’’’’’’’’’’²W’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅW’’’’’’’’’’’’’’’’’’’’āW’<’’’’’’’’’’’’’’’’’’’"X’;’’’’’’’’’’’’’’’’’’’bX’5’’’’’’’’’’’’’’’’’’’¢X’/’’’’’’’’’’’’’’’’’’’āX’E’’’’’’’’’’’’’’’’’’’2Y’A’’’’’’’’’’’’’’’’’’’‚Y’Q’’’’’’’’’’’’’’’’’’’āY’P’’’’’’’’’’’’’’’’’’’BZ’U’’’’’’’’’’’’’’’’’’’¢Z’M’’’’’’’’’’’’’’’’’’’ņZ’M’’’’’’’’’’’’’’’’’’’B[’P’’’’’’’’’’’’’’’’’’’¢[’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā[’!’’’’’’’’’’’’’’’’’’’\’:’’’’’’’’’’’’’’’’’’’R\’4’’’’’’’’’’’’’’’’’’’’\’/’’’’’’’’’’’’’’’’’’’Ņ\’B’’’’’’’’’’’’’’’’’’’"]’L’’’’’’’’’’’’’’’’’’’r]’R’’’’’’’’’’’’’’’’’’’Ņ]’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’^’’’’’’’’’’’’’’’’’’’’2^’0’’’’’’’’’’’’’’’’’’’r^’N’’’’’’’’’’’’’’’’’’’Ā^’N’’’’’’’’’’’’’’’’’’’_’P’’’’’’’’’’’’’’’’’’’r_’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²_’"’’’’’’’’’’’’’’’’’’’ā_’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"`’’’’’’’’’’’’’’’’’’’’B`’)’’’’’’’’’’’’’’’’’’’r`’O’’’’’’’’’’’’’’’’’’’Ņ`’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a’'’’’’’’’’’’’’’’’’’’’2a’<’’’’’’’’’’’’’’’’’’’ra’S’’’’’’’’’’’’’’’’’’’Ņa’R’’’’’’’’’’’’’’’’’’’2b’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rb’.’’’’’’’’’’’’’’’’’’’¢b’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āb’’’’’’’’’’’’’’’’’’’’c’’’’’’’’’’’’’’’’’’’’"c’P’’’’’’’’’’’’’’’’’’’‚c’P’’’’’’’’’’’’’’’’’’’āc’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’d’’’’’’’’’’’’’’’’’’’’d’’’’’’’’’’’’’’’’’’’’2d’Q’’’’’’’’’’’’’’’’’’’’d’T’’’’’’’’’’’’’’’’’’’ņd’V’’’’’’’’’’’’’’’’’’’Re’R’’’’’’’’’’’’’’’’’’’²e’T’’’’’’’’’’’’’’’’’’’f’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2f’’’’’’’’’’’’’’’’’’’’Bf’’’’’’’’’’’’’’’’’’’’bf’O’’’’’’’’’’’’’’’’’’’Āf’V’’’’’’’’’’’’’’’’’’’"g’V’’’’’’’’’’’’’’’’’’’‚g’R’’’’’’’’’’’’’’’’’’’āg’V’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#ibie# ’’’’’’’’’’’’’’Bh’’’’’’’’’’’’’’’’’’’’bh’T’’’’’’’’’’’’’’’’’’’Āh’T’’’’’’’’’’’’’’’’’’’"i’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ri’S’’’’’’’’’’’’’’’’’’’²i’T’’’’’’’’’’’’’’’’’’’j’R’’’’’’’’’’’’’’’’’’’rj’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’j’’’’’’’’’’’’’’’’’’’’²j’’’’’’’’’’’’’’’’’’’’Ņj’U’’’’’’’’’’’’’’’’’’’2k’U’’’’’’’’’’’’’’’’’’’’k’N’’’’’’’’’’’’’’’’’’’āk’L’’’’’’’’’’’’’’’’’’’2l’M’’’’’’’’’’’’’’’’’’’‚l’R’’’’’’’’’’’’’’’’’’’āl’N’’’’’’’’’’’’’’’’’’’2m’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bm’’’’’’’’’’’’’’’’’’’’‚m’’’’’’’’’’’’’’’’’’’’¢m’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņm’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"n’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚n’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņn’O’’’’’’’’’’’’’’’’’’’2o’\’’’’’’’’’’’’’’’’’’’’o’L’’’’’’’’’’’’’’’’’’’āo’R’’’’’’’’’’’’’’’’’’’Bp’Z’’’’’’’’’’’’’’’’’’’¢p’U’’’’’’’’’’’’’’’’’’’q’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"q’„’’’rter Text aus der Ursprungsdatei^entfernt und in die 'Scratch'-Datei geschrieben. Im Gegensatz dazu wird er durch’’’’’’’’’’’’’’ESC d kopiert. Durch ’’’’’’’’’^fŪgt man ihn in eine andere (oder dieselbe) Datei ein. Im Unterschied zu ESC RUBIN’’’’’’’’’’’’>wird die temporŁre Datei dadurch nicht entleert. ’’’’’’’’’’’’’nDie fŪr ESC p, bzw. ESC d benutzte #ib#'Scratch'-Datei#ie#, die nicht editierbar ist, ist nicht’’’’’’’’’’’’’’’^mit dem sogenannten Notizbuch zu verwechseln. Das Notizbuch ist eine Datei, in der’’’’’’’’’’’’Nalle Editorfunktionen benutzt werden kŚnnen, auf die jedoch ohne Angabe eines’Dateinamens durch ’’’’’’’’’’’’Nab der aktuellen Cursorposition ein Fenster erŚffnet wird. Das Notizbuch nimmtNinsbesondere Fehlermeldungen und Meldungen bei der Ųbersetzung von Programmen’Nerlaubt vom Łuūeren Fenster aus alle eingeschachtelten Fenster zu verlassen. ’Vorbelegte Tasten ’’’’’’’’’’’’^#ib#ESC q#ie# Verlassen des Editors bzw. der eingeschachtelten Fenster. ’’’’’’’’’’’’’>#ib#ESC e#ie# Weiteres Editorfenster einschalten. ’’’.#ib#ESC n#ie# Notizbuch 'anzeigen'. ’N#ib#ESC v#ie# Dateifenster auf ganzen Bildschirm vergrŚūern ’’’’’’’’’^ bzw. Bildschirm rekonstruieren (eingeschachteltes Fenster verlasŻ’’’’’’’’’’’’’’ sen). ’’’’’’’’’>#ib#ESC w#ie# Dateiwechsel beim Fenstereditor. ’’’’’’N#ib#ESC f#ie# Nochmalige AusfŪhrung des letzten Kommandos. ’’’’’’’’’’^#ib#ESC b#ie# Das Fenster wird auf den linken Rand der aktuellen (ggf. verschoŻ’’’’’’. benen) Zeile gesetzt. ’’’’’’’’’.ESC > Zum nŁchsten Wortanfang. ’’’’’’.ESC < Zum vorherigen Wortanfang. ’’’’.#ib#ESC 1#ie# Zum Anfang der Datei. ’.#ib#ESC 9#ie# Zum Ende der Datei. ’’’Operationen auf Markierungen ’#goalpage("ESC")# ’’’’’’’’’’’’>#ib#ESC RUBOUT#ie# Markiertes "vorsichtig" lŚschen. ’’’’’’N#ib#ESC RUBIN#ie# Mit ESC RUBOUT vorsichtig GelŚschtes einfŪgen. ’’’’’’’’^#ib#ESC p#ie# Markiertes lŚschen und in die Notiz-Datei schreiben. Kann mit ESC’’’’’’> g an anderer Stelle reproduziert werden. ’’’’’’.#ib#ESC d#ie# Duplizieren: ’’’’’’’’’’N Markiertes in die Notiz-Datei kopieren, anschlieūend die’’’’’’’N Markierung abschalten. Kann mit ESC g beliebig oft reproduziert werden. ’’’’’’’^#ib#ESC g#ie# Mit ESC p gelŚschten oder mit ESC d duplizierten Text an aktuelle’’’’’’^ Cursor-Stelle schreiben, d.h. Notiz-Datei an aktueller Stelle einfŪŻ’’’’’’’’’’’ gen. ’’’’’’’’’’Zeichen schreiben ’’’’’’’’’’’’^Diese Tasten sind standardmŁūig so vorbelegt wie hier aufgefŪhrt, sie kŚnnen aber’’’’’’’’’’’’’>von Benutzern und in Anwenderprogrammen geŁndert werden. ’’’’’.#ib#ESC a#ie# Schreibt ein Ł. ’’’’’’’.#ib#ESC A#ie# Schreibt ein Ö. ’’’’’’’.#ib#ESC o#ie# Schreibt ein Ś. ’’’’’’’.#ib#ESC O#ie# Schreibt ein ×. ’’’’’’’.#ib#ESC u#ie# Schreibt ein Ū. ’’’’’’’.#ib#ESC U#ie# Schreibt ein Ų. ’’’’’’’.#ib#ESC s#ie# Schreibt ein ū. ’’’’’’’.#ib#ESC (#ie# Schreibt eine [. ’’’’’’.#ib#ESC )#ie# Schreibt eine ]. ’’’’’’.#ib#ESC <#ie# Schreibt eine {. ’’’’’’.#ib#ESC >#ie# Schreibt eine }. ’’’’’’N#ib#ESC Ž#ie# Schreibt ein Ž, das auch gedruckt werden kann. ’’’’’’’’^#ib#ESC Ż#ie# Schreibt einen (geschŪtzten) Trennstrich, siehe Textverarbeitung. ’’’’’^#ib#ESC Ü#ie# Schreibt ein (geschŪtztes) "k", siehe Textverarbeitung. ’’’’’’’’’’’’’’’^#ib#ESC blank#ie# Schreibt ein (geschŪtztes) Leerzeichen, siehe Textverarbeitung. ’’’’’’’Kommando auf Taste legen’’’’’’>#ib#ESC ESC#ie# Kommandodialog einschalten ’’’’’’’’’’’’.#ib#ESC ! taste#ie# Im Kommandodialog: ’’’’> Geschriebenes Kommando auf Taste legen. ’’’’’’’.#ib#ESC ? taste#ie# Im Kommandodialog: ’’’’N Auf 'taste' gelegtes Kommando zum Editieren anzeigen. ’’’’’’’’’.#ib#ESC k#ie# Im Kommandodialog: ’’’’N Das zuletzt editierte Kommando (einzeilige ELAN-Programm)’’’’’’ anzeigen. ’’’’’Der Lernmodus NDer Lernmodus ermŚglicht beliebige Tastensequenzen zu speichern und auf eine ’žTaste 't' zu legen. Durch #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#t#off("i")##off("b")# wird die gesamte Sequenz ausgefŪhrt. ’’’’’’’’’’’’’NNicht belegt werden kŚnnen die vom System vorbelegten Tasten (3-14). ’’’’’’’’’^Beispielsweise kŚnnte es fŪr einen Programmierer sinnvoll sein die Tastenfolge ’’’’’’’’’’’’’’’Ī'THEN' 'CR' '>' '>' '>' '>' auf die Taste #on("i")##on("b")#T#off("i")##off("b")# zu legen. Durch #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#T#off("i")##off("b")# wird 'THEN' in’’’’’’’’’’’’Ndie aktuelle Zeile geschrieben und der Cursor mit passender EinrŪckung in die .EinrŪckung in die Folgezeile gesetzt. ’’’’’’’’>#ib#ESC HOP#ie# #ib#Lernen einschalten#ie#. ’’’’’’’’’’’^#ib#ESC HOP taste#ie# #ib#Lernen ausschalten#ie# und Lernsequenz auf 'taste'legen. ’’’’’’’’’’^#ib#ESC HOP HOP#ie# #ib#Gelerntes vergessen#ie#. Bedingung ist, daū man die Lernsequenz in’N der Task lŚscht, in der man sie hat lernen lassen. ’’’’#center#A C H T U N G : ’’’’’’^Der Lernmodus bleibt eingeschaltet, auch wenn der Editor beendet wird. Dann werden’’’’’’’’’’’’Ndie folgenden Monitor-Kommandos usw. usf. 'gelernt'. Durch unsinniges 'Lernen'Nlassen sich schlimmstenfalls beliebige VerwŪstungen anrichten. ’’’’’’’’’’’’’’’^Der Lernmodus wird in der Editor-Kopfzeile angezeigt. Falls der Editor beendet wird,’’’’’’’’’’Nohne den Lernmodus auszuschalten, erfolgt eine Warnung auf Monitor-Ebene. ’’’’.Um den Lernmodus zu beenden drŪcken Sie: ’’’’’ ’’’’’’’’’’’nDadurch wird der Lernmodus ausgeschaltet und nichts gelernt, die Gefahr ist gebannt.#off("b")# ’’’’’’’’’’’’’’’#ib#SUPERVISOR-Taste#ie# ’’’’’^BetŁtigen Sie diese Taste im Editor, dann unterbrechen Sie Ihre Editierarbeit und’’’’’’’’’’’’’erhalten die Meldung ’’’’’’’’’N____________________________________________________________________________ ’> Terminal 2 ’’’’’’’. EUMEL Version 1.8/M ’’’’. gib supervisor kommando: ’’’’’’’’’ ESC ? --> help ’’’’’’’’> ESC b --> begin("") ESC h --> halt ’’’’’’’’’> ESC c --> continue("") ESC s --> storage info ’> ESC q --> break ESC t --> task info ’’’’N____________________________________________________________________________ ’^Wollen Sie nun im Editor fortfahren bzw. haben Sie irrtŪmlich die SV-Taste betŁtigt,’’’’’’’’’’dann geben Sie das Kommando ’’N____________________________________________________________________________ ’. gib supervisor kommmando : ’’’’’. continue ("meine task") ’’’’’’’’N____________________________________________________________________________ ’N(falls Ihre Task, in der Sie arbeiteten, wirklich "meine task" hieū!) ’’’’’’’’^Um Ihren in Bearbeitung befindlichen Text wieder vollstŁndig auf dem Bildschirm zu’’’’’’’’’’’’.sehen, betŁtigen die die Tasten ’’’’’’’’’’’’’’^Sie sind wieder an der Stelle, an der Sie den Text mit der SV-Taste verlassen haŻ’’’’’’’’’’’’’.ben, und kŚnnen normal weiterarbeiten. ’’’’’’’^#on("u")#Achtung:#off("u")# Die SV-Taste kann, je nach Terminal, durch das BetŁtigen von zwei’^Tasten gleichzeitig realisiert sein (oft 'CTRL b'). Beachten Sie die Beschreibung Ihrer’’’’’’’^FŪr die Programmierung ist die Tastenfolge ’’’’’’’’’’’’’’’’’’’Ru’1’’’’’’’’’’’’’’’’’’’’u’1’’’’’’’’’’’’’’’’’’’Ņu’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’v’T’’’’’’’’’’’’’’’’’’’rv’b’’’’’’’’’’’’’’’’’’’āv’^’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Bw’M’’’’’’’’’’’’’’’’’’’’w’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Āw’Y’’’’’’’’’’’’’’’’’’’"x’U’’’’’’’’’’’’’’’’’’’‚x’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Āx’W’’’’’’’’’’’’’’’’’’’"y’’’’’’’’’’’’’’’’’’’’²y’R’’’’’’’’’’’’’’’’’’’z’Y’’’’’’’’’’’’’’’’’’’rz’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’z’Z’’’’’’’’’’’’’’’’’’’ņz’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2{’[’’’’’’’’’’’’’’’’’’’’{’O’’’’’’’’’’’’’’’’’’’ņ{’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"|’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b|’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢|’X’’’’’’’’’’’’’’’’’’’}’R’’’’’’’’’’’’’’’’’’’b}’N’’’’’’’’’’’’’’’’’’’²}’R’’’’’’’’’’’’’’’’’’’~’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b~’’’’’’’’’’’’’’’’’’’’‚~’+’’’’’’’’’’’’’’’’’’’²~’6’’’’’’’’’’’’’’’’’’’ņ~’’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’B’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’V’’’’’’’’’’’’’’’’’’’ņ’V’’’’’’’’’’’’’’’’’’’R€’W’’’’’’’’’’’’’’’’’’’²€’V’’’’’’’’’’’’’’’’’’’’V’’’’’’’’’’’’’’’’’’’r’R’’’’’’’’’’’’’’’’’’’ҁ’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’O’’’’’’’’’’’’’’’’’’’r‚’S’’’’’’’’’’’’’’’’’’’Ņ‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ‚’S’’’’’’’’’’’’’’’’’’’Rƒ’P’’’’’’’’’’’’’’’’’’’²ƒ’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņƒ’(’’’’’’’’’’’’’’’’’’’"„’C’’’’’’’’’’’’’’’’’’’r„’B’’’’’’’’’’’’’’’’’’’Ā„’;’’’’’’’’’’’’’’’’’’’…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2…’Q’’’’’’’’’’’’’’’’’’’’…’P’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’systemhandbuch.34.1.91 / 3’’’’#start(2.5,1.5)# ’’’’’’’’’’’’’%#center#EUMEL-Systemhandbuch >#center#5. Supervisor, Tasks und Systemsteuerung#right#% ’’’’’>#ib(9)#5. #ib#Supervisor#ie#, #ib#Tasks#ie# und ’’’’’’’’’’’’’’. #ib#Systemsteuerung#ie##ie(9)# ’’’’’’’’’’’’.#ib(9)#5.1. #ib#Tasks#ie##ie(9)# ’’’’’’’’’’’’’.#ib(9)#Der Datentyp #ib#TASK#ie##ie(9)# ’’’’’’^Benannte Tasks werden innerhalb eines Rechners vollstŁndig und eindeutig Ūber ihren’’’’’’’’’’’^Namen identifiziert. Eine weitere MŚglichkeit der Identifikation besteht in der VerwenŻ’’’’’’’>dung von Datenobjekten vom Typ TASK. Beispiel: ’’’’’’’’’’’’’’’> TASK VAR plotter := task ("PLOTTER 1") ’’’’’’’’’’’’’’’^Die Taskvariable 'plotter' bezeichnet jetzt die Task im System, die augenblicklich den’’’’’’’’^Namen "PLOTTER 1" hat. Nun sind #ib#Taskvariablen#ie# auch unter BerŪcksichtigung der Zeit’’’’^und nicht nur im aktuellen Systemzustand eindeutig. Der Programmierer braucht sich’’’’’’’’’’’’^also keine Sorgen darŪber zu machen, daū seine Taskvariable irgendwann einmal eine’’’’’’’’’’’’^"falsche" Task (nach LŚschen von "PLOTTER 1" neu eingerichtete gleichen oder andeŻ’’’’’’’’’’’’^ren Namens) identifiziert. Wenn die Task "PLOTTER 1" gelŚscht worden ist, bezeichnet’’’’’’’’’’.'plotter' keine gŪltige Task mehr. ’’’’’’’’’’’^#ib#Unbenannte Tasks#ie# haben alle den Pseudonamen "-". Sie kŚnnen nur Ūber TaskvariŻ’’’’’’’’ablen angesprochen werden. ’’’^Der #ib#Task-Katalog#ie# wird vom Supervisor gefŪhrt; andere Tasks kŚnnen sich Kopien’’’’’’’’’^dieses Katalogs besorgen. Einige Prozeduren arbeiten auf dieser taskeigenen Kopie,’’’’’’’’’’’’^ohne diese automatisch auf den neuesten Stand zu bringen (EffizienzgrŪnde). Das’’’’’’’’’’’’’’’.muū bei Bedarf explizit geschehen. ’’’’’’’’’’’ TYPE TASK ’’’’’’’’’’’’’’’. Zweck: Interner Taskbezeichner ’’’’’’’’’’. OP := (TASK VAR dest, TASK CONST source) > Zweck: Zuweisung von internen Taskbezeichnern ’’’’’’’’’’’. BOOL OP = (TASK CONST left, right) ’’’’’’. Zweck: Gleichheitsabfrage ’’’’’’’’’’’’’’’. BOOL OP < (TASK CONST left, right) ’’’’’’^ Zweck: ŲberprŪft, ob die Task 'left' ein Sohn, Enkel, Urenkel, ... der Task 'right'’’’’’’ ist. ’’’’’’’’’’’’’. TASK OP / (TEXT CONST task name) ’’’’’’’’^ Zweck: Liefert die Task des angegebenen Namens, falls sie existiert. Der eigene’’’’’’’’’’N Katalog wird automatisch aktualisiert (identisch mit der’’’’’’’’’’. PROC task (TEXT CONST task name).  Fehlerfall: ’’’’’’’’’’’’’ * ... gibt es nicht > TASK OP / (INT CONST station number, TEXT CONST name) ’’’^ Zweck: Liefert die Task des angegebenen Namen von der Station mit der angeŻ’’’’’’’’’’’’’’ gebenen Nummer. ’’#ib#access#ie# ’’’’’’’’’’’’’’’. PROC access (TASK CONST task) ’’’’’’’’’’’^ Zweck: Aktualisiert den eigenen Taskkatalog, falls 'task' nicht darin enthalten ist. ’’’’#ib#access catalogue#ie# ’’’’’ PROC access catalogue ’’’^ Zweck: Aktualisiert den eigenen Taskkatalog, indem die neueste Fassung vom’’’’’’’’’’’’’’’^ Supervisor geholt wird. Die Prozeduren 'father', 'son', 'brother' arbeiten’’’’’’’’. dann auf dieser neuen Fassung. ’’’#ib#archive#ie# ’’’’’’’’’’’’’’ TASK PROC archive ’’’’’’’N Zweck: Liefert den internen Taskbezeichner der aktuellen Task mit Namen’’N "ARCHIVE". Diese Prozedur dient zum schnellen und bequemen AnŻ’’’’. sprechen der Archivtask. ’’’’’’’’’#ib#brother#ie# ’’’’’’’’’’’’’’. TASK PROC brother (TASK CONST task) ’’’’’^ Zweck: Liefert den nŁchsten Bruder von 'task'. Falls kein Bruder existiert, wird’’’’’’’’’^ 'niltask' geliefert. Aktualisiert den eigenen Katalog nicht automatisch! ’’’’’’’’’#ib#canal#ie# > TASK PROC canal (INT CONST channel number) ’’’’’’’’’’’’’’N Zweck: Diese Prozedur zeigt an, welche Command-Analyser-Task an einem’’’’. bestimmten Kanal hŁngt. ’’’’’’’’’’#ib#exists#ie# ’’’’’’’’’’’’’’’. BOOL PROC exists (TASK CONST task) ’’’’’’^ Zweck: Falls 'task' auf der eigenen Station liegt, informiert diese Prozedur, ob’’’’’’’’’^ die angegebene 'task' noch existiert. Der eigene Taskkatalog wird dabei’’’’’’’’’’’ aktualisiert. ’’’’^ Wenn abgefragt werden soll, ob 'task' auf einer anderen Station liegt,’’’’’’’’’’’’N muū die Prozedur 'name (task) <> "" ' verwendet werden. ’’’’’’’’’’^ Achtung: Diese Prozedur taugt nicht dazu, zu erfragen, ob eine Task’’’’’’’’’’’’’’’> mit bestimmtem Namen im System exisiert. > exists (task ("hugo")) ’’’’’’’’’’’^ Falls die Task "hugo" nicht existiert, fŪhrt schon der Aufruf’’’’’’’’’’’’^ 'task ("hugo")' zum 'errorstop (""hugo" gibt es nicht")'. ’’’’’’’’’’’’’’’#ib#exists task#ie# ’’’’’’’’’’. BOOL PROC exists task (TEXT CONST name) ’N Zweck: Wenn auf der eigenen Station eine > von Bedeutung, da hierŻ’’’’’’’’’’’’’Ndurch der Fehler 'halt vom Terminal' erzeugt wird. Dadurch kŚnnen unerwŪnscht’.laufende Programme abgebrochen werden. ’’’’’’’N#ib#Unterbrechen einer Ausgabe#ie# (oft auch als CTRL a realisiert). ’’’’’’’’’NHaben Sie diese Taste aus Versehen betŁtigt, erkennen Sie dies daran, daū der’NEditor nicht "reagiert". BetŁtigen Sie die WEITER-Taste (oft auch CTRL c). ’’’.Unterbrochene Ausgabe fortsetzen. ’’’’’’’’’’’’NEin mit der STOP-Taste angehaltene Ausgabe kŚnnen Sie durch BetŁtigen der’’’’’.#ib#WEITER-Taste#ie# fortsetzen. ’’’’’’’’’’’’’n#on("u")#VORSICHT:#off("u")# Die STOP-Taste unterbricht nur die Ausgabe auf den Bildschirm. ZeiŻ’’’’’’’’’’’’’N chen, die wŁhrend des STOP eingegeben werden, werden gespeichert’’’. und nach 'WEITER' ausgegeben! ’’’’’.3.5 Positionieren, Suchen, Ersetzen ’’’’’’’’’ im Kommandodialog’’’’’’’’^Um das Editorfenster auf eine bestimmte Zeile zu positionieren wird einfach diese’’’’’’’’’’’’’Zeilennummer angegeben. ’’’’’’N____________________________________________________________________________ ’> ............... Beispiel ..................... Zeile 4 ’> gibßkommando:ß123ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß N____________________________________________________________________________ ’^Falls die Zeilenzahl der Datei geringer als die angegebene Zeilennummer ist, wird auf’’’’’’’’’.die letzte Zeile positioniert. ’’’’’’’’’’’’’’’^Um das Editorfenster auf ein bestimmtes TextstŪck zu positionieren, wird der gesuchŻ’’’’’’’’’’.te Text, ggf. mit Suchrichtung angegeben. ’’’’N____________________________________________________________________________ ’> ............... Beispiel ..................... Zeile 4 ’> gibßkommando:ß"END PROC"ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß N____________________________________________________________________________ ’^Die Suchrichtung kann durch 'D' (down) oder 'U' (up) zusŁtzlich spezifiziert werden. ’’’’’’’’’N____________________________________________________________________________ ’> ............... Beispiel ..................... Zeile 4 ’> gibßkommando:ßU "INT VAR schleifenzaehler"ßßßßßßßßßßßßßßßßß N____________________________________________________________________________ ’^Um beliebige Texte durch andere zu ersetzen, dienen die Operatoren 'C' (change)’’’’’’’’’’’’’’’bzw. 'CA' (change all). ’’’’’’nBei AusfŪhrung dieses Kommandos wird zunŁchst nach #on("u")#unten#off("u")# in der editierten Datei’’’’’’’’’’’^nach dem zu ersetzenden Text gesucht. Wenn der Text gefunden wird, wird er durch’’’’’’’’’’’’’’>den hinter dem Operator stehenden Text ersetzt. ’’’’’’’’’’’’’’N____________________________________________________________________________ ’> ............... Beispiel ..................... Zeile 4 ’> gibßkommando:ß"lb" C "lange bezeichnung"ßßßßßßßßßßßßßßßßßßß N____________________________________________________________________________ ’NBei Anwendung von 'CA' wird jedes Auftreten des gesuchten Textes ab der’’’’’’’NCursorposition durch den Ersatztext ersetzt, bis das Dateiende errreicht ist. >Weitere ErklŁrungen zum Suchen und Ersetzen in 5.5. ’’’’’’’’’’Weitere Hilfen ’’’’’’’’’’’’’’’>Textabschnitt an anderer Stelle der Datei einsetzen: ’’’’’’’’’Ž- Abschnitt markieren und mit #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#d#off("i")##off("b")# zwischenspeichern. ’’’’’’’’’’’Ž- Zweites Editorfenster auf die Datei mit #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#e#off("i")##off("b")# Śffnen. ’’’’’’’’’’- Nach #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#ESC#off("i")##off("b")# Zeilennummer oder Suchbegriff angeben und mit #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#g#off("i")##off("b")# Abschnitt an der gewŪnschte Stelle einsetzen. ’’’’’>Textabschnitt schnell herauskopieren und sichern: ’’’’’’’’’’’’.- GewŪnschten Abschnitt markieren ’’’’’’’’’’’’ž- #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#ESC#off("i")##off("b")# PUT("dateiname") #on("i")##on("b")#CR#off("i")##off("b")# ’’’’’’’’’’’’’’^ Der Abschnitt wird in die Datei 'dateiname' geschrieben. Falls die Frage 'dateinaŻ’’’’’’’’’’^ me' lŚschen (j/n) verneint wird, wird der Abschnitt, an das Ende der Datei angefŪgt.’’’’’’’’> Dadurch kŚnnen Textabschnitte schnell gesammelt werden. ’’’’>Komplette Datei in die editierte Datei einfŪgen: ’’’’’’’’’’’’’ž- #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#ESC#off("i")##off("b")# GET("dateiname") #on("i")##on("b")#CR#off("i")##off("b")# ’’’’’’’’’’’’’’^ Der komplette Inhalt von 'dateiname' wird an die aktuelle Position geschrieben. ’’’’’’’’’’’’Breitere Zeile erzeugen: ’’’’’Ž- #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#ESC#off("i")##off("b")# limit(123) #on("i")##on("b")#CR#off("i")##off("b")# ’’’’^ Die Zeilenbreite wird auf 123 Zeichen geŁndert. Der maximal zulŁssige Wert ist’’’’’’’’’’’’’’^ 16000. Dieser Wert bezieht sich auf den Zeilenumbruch. Bei Zeilenbreite > 77 wird’’’’’’’’’’’^ nur die aktuelle Zeile verschoben. Um fŪr den ganzen Bildschirm die rechte Seite’’’’’’’’’’’’^ der Datei zu sehen, kann die linken Spalte des Bildschirmfenster neu gesetzt werŻ’’’’’’’’’’’Ž #on("i")##on("b")#ESC#off("i")##off("b")# #on("i")##on("b")#ESC#off("i")##off("b")# margin(60) #on("i")##on("b")#CR#off("i")##off("b")# ’’’’^ Die Normaleinstellung wird durch 'limit(77)' und 'margin(1)' wiederhergestellt. ’’’’’’’’’’’’programmierhandbuch.3’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.5’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ra€ė’’30<’’’’<<4M’’’’R’ kap5’’’’’’’’a€’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’€’/’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’Į€’’’’’’’’’’’’’’’’’’’’ń€’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’A’ ’’’’’’’’’’’’’’’’’’’q’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’Į’E’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’Task mit dem Namen 'name' exiŻ’’> stiert, liefert diese Prozedur 'TRUE'. ’’’’’’’’’’’#ib#father#ie# ’’’’’’’’’’’’’’’ TASK PROC father ’’’’’’’’. Zweck: Liefert die eigene Vatertask. ’’’’. TASK PROC father (TASK CONST task) ’’’’’’^ Zweck: Liefert den Vater von 'task'. Existiert kein Vater (z.B. bei UR), wird niltask’’’’N geliefert. Aktualisiert den eigenen Katalog nicht automatisch! ’’’#ib#index#ie# . INT PROC index (TASK CONST task) ’’’’’’’’^ Zweck: Liefert einen INT-Wert von 1 bis 125, der 'task' unter allen gleichzeitig (!)’’’’’> existierenden Tasks eindeutig identifiziert. ’’’’’#ib#is niltask#ie# ’’’’’’’’’’’. BOOL PROC is niltask (TASK CONST task) ’’ Zweck: task = niltask ’’’#ib#myself#ie# ’’’’’’’’’’’’’’’ TASK PROC myself ’’’’’’’’. Zweck: Liefert eigenen Task-Bezeichner. ’. TEXT PROC name (TASK CONST task) ’’’’’’’’^ Zweck: Liefert den Namen von 'task'. Die Task muū noch im System existieren,’’’’’’’’’’’’’^ sonst ist der Name nicht mehr bekannt. Falls die 'task' noch nicht im’’’’’’’’’’’’’N eigenen Katalog enthalten ist, wird er aktualisiert. ’’’’’’’’’’’’’#ib#niltask#ie# ’’’’’’’’’’’’’’ TASK CONST niltask ’’’’’’^ Zweck: Bezeichner fŪr "keine Task". So liefern die Prozeduren 'son', 'brother'’’’’’’’’’’’^ und 'father' als Resultat 'niltask', wenn keine Sohn-, Bruder- oder VaterŻ’’’’’’’’ task existiert. ’’#ib#printer#ie# ’’’’’’’’’’’’’’ TASK PROC printer ’’’’’’’N Zweck: Liefert den internen Taskbezeichner der aktuellen Task mit Namen’’^ #ib#PRINTER#ie#. Diese Prozedur dient zum schnellen und bequemen AnspreŻ’’’’’’’’’’. chen des Druckspoolers. ’’’’’’’’’’#ib#public#ie# ’’’’’’’’’’’’’’’ TASK PROC public ’’’’’’’’N Zweck: Liefert den internen Taskbezeichner der Task #ib#PUBLIC#ie#. ’’’’’#ib#reserve#ie# ’’’’’’’’’’’’’’. PROC reserve (TASK CONST task) ’’’’’’’’’’^ Zweck: Reservieren einer Task fŪr den ausschlieūlichen Dialog mit der Task, in’’’’’’’’’’’. der das Kommando gegeben wurde. ’’> PROC reserve (TEXT CONST message, TASK CONST task) ’’’’’’N Zweck: Wie 'reserve (TASK CONST task)' mit Ųbergabe einer 'message'. ’’’’. TASK PROC son (TASK CONST task) ’’’’’’’’’^ Zweck: Liefert den ersten Sohn von 'task'. Falls keiner im Katalog vermerkt ist,’’’’’’’’’^ wird 'niltask' geliefert. Aktualisiert den eigenen Katalog nicht automaŻ’’’’’’’’’’ tisch! ’’’’’’’’’’’#ib#supervisor#ie# ’’’’’’’’’’’ TASK PROC supervisor ’’’’N Zweck: Liefert den internen Taskbezeichner des Supervisors. ’’’’’’’’’’’’’. TASK PROC task (TEXT CONST task name) ’’’^ Zweck: Liefert die Task des angegebenen Namens, falls sie existiert. Der eigene’’’’’’’’’’> Katalog wird automatisch aktualisiert. ’’’’’’’’’’’ Fehlerfall: ’’’’’’’’’’’’’ * ... gibt es nicht > TASK PROC task (INT CONST channel number) ’’’’’’’’’’’’’’’N Zweck: Liefert den Namen der Task, die an dem angegebenen Kanal hŁngt. ’’>#ib##ib(9)#Inter-Task-Kommunikation#ie##ie(9)# ’’’’’’’’’’’’’’’^Die #ib#Task-Kommunikation#ie# im EUMEL System ist strikt botschaftsorientiert. Eine #ib#BotŻ’^schaft#ie# bzw. "#ib#Sendung#ie#" besteht immer aus einem #ib#Sendungscode#ie# (INT) und einemNDatenraum (DATASPACE). Damit kann eine Botschaft bis zu 1 Mbyte umfassen! ’’’’^Kommunikation zwischen zwei Tasks ist nur dann mŚglich, wenn #ib#Sender#ie# und #ib#EmpfŁnŻ’’’^ger#ie# dazu bereit sind. Eine Sendung kann also nur dann korrekt transferiert werden,’’’’’’’’^wenn der EmpfŁnger existiert und empfangsbereit ist. Diese Art der Kommunikation’’’’’’’’’’’’’’wurde gewŁhlt, um ’’’’’’’’’’’’^ - eine mŚglichst einfache und effiziente Implementation zu ermŚglichen und ’’’’’’’’’’’’’’N - mit den vorhandenen Primitiva mŚglichst flexibel bei der ImplementationN "hŚherer" Kommunikationsmethoden (z.B. Warteschlangen) zu sein. ’’’’’’’> PROC call (TASK CONST destination, INT CONST send code, ’> DATASPACE VAR message ds, INT VAR reply code) ^ Zweck: Die eigene Task wartet, bis die Zieltask 'destination' empfangsbereit ist.’’’’’’’’N Dann wird die Sendung ('send code' und 'message ds') transferiert.^ Anschlieūend wartet die Sendertask auf eine Antwort von 'destination'.’’’’’’’’’’’’^ FŪr Sendungen anderer Tasks ist sie dabei nicht (!) empfangsbereit, nur’’’’’’’’’’’^ die Zieltask kann eine Antwortsendung schicken. Nachdem eine solche’’’’’’’’’’’’’’’^ Antwort eingetroffen ist, wird sie in 'message ds' und 'reply code' gelieŻ’’’’’’’’^ fert und die eigene Task fortgesetzt. Wenn die angesprochene Zieltask’’’’’’’’’’’’’^ nicht existiert, wird -1 als 'reply code' geliefert. 'message ds' ist in’’’’’’’’’’. diesem Fall unverŁndert. ’’’’’’’’’^ 'call' hat Öhnlichkeiten mit einem Prozeduraufruf, nur ist es hier der’’’’’’’’’’’’^ Aufruf einer anderen Task. StŚrungen kŚnnen hierbei nicht auftreten, da’’’’’’’’’’’^ der Zustand der Zieltask keine Rolle spielt (es wird auf EmpfangsbereitŻ’’’’’’’’’’^ schaft gewartet) und beim Warten auf Antwort auch keine "QuerschlŁŻ’’’’’’’’’’’’’’’N gersendungen" von anderen Tasks dazwischenfunken kŚnnen. ’’’’’’’’’#ib#pingpong#ie# ’’’’’’’’’’’’’N PROC pingpong (TASK CONST destination, INT CONST send code, ’’’’’’’’’’’’’N DATASPACE VAR message ds, INT VAR reply code) ’’’’’’’’’’’’^ Zweck: Diese Prozedur wirkt wie die entsprechende 'call'-Prozedur, wartet aber’’’’’’’’’’’^ nicht (!), bis die Zieltask empfangsbereit ist. Wenn die Zieltask existiert,’’’’’’^ aber nicht empfangsbereit ist, wird -2 als 'reply code' geliefert. Der’’’’’’’’’’’’> 'message ds' ist dann nicht verŁndert. ’’’’’’’’’’’> PROC send (TASK VAR destination, INT CONST send code, ’’’> DATASPACE VAR message ds, INT VAR receipt) ’’’^ Zweck: Wenn die Zieltask existiert und empfangsbereit ist, wird die Sendung’’’’’’’’’’’’’’^ ('send code' und 'message ds') transferiert und die Zieltask aktiviert. Als’’’’’’’^ 'receipt' wird 0 (=ack) gemeldet. Diese positive Quittung kommt nicht’’’’’’’’’’’’’^ von der Zieltask, sondern bestŁtigt nur, daū die Sendung ordnungsgeŻ’’’’’’’’’’’’’’N mŁū Ūbertragen wurde. Der Datenraum gehŚrt dann nicht mehr der’’’’^ Sender-, sondern der Zieltask, d.h. die Variable 'message ds' bezeichnet’’’’’’’’’’. keinen gŪltigen Datenraum mehr. ’’^ Im Gegensatz zu 'call' und 'pingpong' lŁuft die Sendertask ohne Halt’’’’’’’’’’’’’’N weiter und wartet nicht auf eine Antwort von der Zieltask. ’’’’’’’^ Falls die Zieltask nicht existiert, wird -1, falls sie nicht empfangsbereit ist,’’^ -2 als 'receipt' geliefert. Bei diesen negativen Quittungen bleibt der’’’’’’’’’’’’^ Datenraum Eigentum der Absendertask, d.h. die Variable 'message ds'’’’’’’’’’’’’’’’> bezeichnet immer noch einen gŪltigen Datenraum. ’’> PROC send (TASK VAR destination, INT CONST send code, ’’’. DATASPACE VAR message ds) ’’’’^ Zweck: s.o. Negative Quittungen (-1 oder -2) werden jedoch ignoriert. Der DaŻ’’’’’’’’’’’’^ tenraum wird entweder transferiert oder gelŚscht ('forget'), steht also in’’’’’’’’N keinem Fall mehr zur VerfŪgung. Die Prozedur sollte nur verwendet’^ werden, wenn der Sender sicher ist, daū die Sendun’’’’’’’’’’ #bottomodd# ’’’’’’’’’1‚’E’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į‚’K’’’’’’’’’’’’’’’’’’’1ƒ’K’’’’’’’’’’’’’’’’’’’ƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ƒ’S’’’’’’’’’’’’’’’’’’’„’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q„’S’’’’’’’’’’’’’’’’’’’±„’Q’’’’’’’’’’’’’’’’’’’…’S’’’’’’’’’’’’’’’’’’’q…’!’’’’’’’’’’’’’’’’’’’’’ #on("b")# ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”…’@’’’’’’’’’’’’’’’’’’’ń…’:’’’’’’’’’’’’’’’’’’’1†’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#foot# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q†’J’’’’’’’’’’’’’’’’’’’”†’2’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’ᆒO’’’’’’’’’’’’’’’’’’’A‡’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‡’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±‡’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń‡’4’’’’’’’’’’’’’’’’’’’1ˆ’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'do' ’’’’’’’’’’’’’’’’ˆ’3’’’’’’’’’’’’’’’’’’’Įˆ’K’’’’’’’’’’’’’’’’’’’‰’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A‰’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‰’A’’’’’’’’’’’’’’’’’’’ቒ$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Š’,’’’’’’’’’’’’’’’’’’’AŠ’)’’’’’’’’’’’’’’’’’’’qŠ’;’’’’’’’’’’’’’’’’’’’±Š’;’’’’’’’’’’’’’’’’’’’ńŠ’;’’’’’’’’’’’’’’’’’’’1‹’’’’’’’’’’’’’’’’’’’’Q‹’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q‹’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'insert' ’’’’’’’’’’’’Į‹’:’’’’’’’’’’’’’’’’’’’Œ’N’’’’’’’’’’’’’’’’’’’QŒ’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Œ’#’’’’’’’’’’’’’’’’’’’ь’R’’’’’’’’’’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A’7’’’’’’’’’’’’’’’’’’’’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'run' ’’’’’’’’’’’’’’’į’ ’’’’’’’’’’’’’’’’’’’Ž’K’’’’’’’’’’’’’’’’’’’aŽ’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ž’7’’’’’’’’’’’’’’’’’’’ńŽ’J’’’’’’’’’’’’’’’’’’’’’ geholt. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'runagain' ’’’’’’’’’’A’%’’’’’’’’’’’’’’’’’’’q’J’’’’’’’’’’’’’’’’’’’Į’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'check' ’’’’’’’’’’’’’A’'’’’’’’’’’’’’’’’’’’’q’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’%’’’’’’’’’’’’’’’’’’’ń’M’’’’’’’’’’’’’’’’’’’A‘’A’’’’’’’’’’’’’’’’’’’‘‘’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ё’&’’’’’’’’’’’’’’’’’’’’’J’’’’’’’’’’’’’’’’’’’Q’’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'prot' ’’’’’’’’’’’’’’‘’’&’’’’’’’’’’’’’’’’’’’Į’’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’“’8’’’’’’’’’’’’’’’’’’’Q“’U’’’’’’’’’’’’’’’’’’’±“’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į“’%’’’’’’’’’’’’’’’’’’’”’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'warnings' ’’’’’’’’’’1”’*’’’’’’’’’’’’’’’’’’’a”’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±”’(’’’’’’’’’’’’’’’’’’’į”’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1•’(’’’’’’’’’’’’’’’’’’’a•’;’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’”•’*’’’’’’’’’’’’’’’’’’’ѕ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń•’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!–’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q–’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”–’%’’’’’’’’’’’’’’’’’’’і’Q’’’’’’’’’’’’’’’’’’’1—’>’’’’’’’’’’’’’’’’’’’q—’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘—’%’’’’’’’’’’’’’’’’’’’Į—’;’’’’’’’’’’’’’’’’’’’˜’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1˜’-’’’’’’’’’’’’’’’’’’’a˜’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘˜’(’’’’’’’’’’’’’’’’’’’Į˜’&’’’’’’’’’’’’’’’’’’’ń˜’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!™’$’’’’’’’’’’’’’’’’’’’Q™’M’’’’’’’’’’’’’’’’’’’”™’ ’’’’’’’’’’’’’’’’’’’љ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń™’&’’’’’’’’’’’’’’’’’’’!š’Q’’’’’’’’’’’’’’’’’’’š’’’’’’’’’’’’’’’’’’’’’’ #page# ’’’’’’’’’’’’’”š’%’’’’’’’’’’’’’’’’’’’њ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńš’ ’’’’’’’’’’’’’’’’’’’!›’K’’’’’’’’’’’’’’’’’’’q›’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 303 ’’’’’’’’’’’’’’’’‘›’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±›’$’’’’’’’’’’’’’’’’’’’į›’N’’’’’’’’’’’’’’’’’’’1œ’N’’’’’’’’’’’’’’’’’’’œ’N’’’’’’’’’’’’’’’’’’’ќ’I’’’’’’’’’’’’’’’’’’’!’M’’’’’’’’’’’’’’’’’’’q’I’’’’’’’’’’’’’’’’’’’Į’S’’’’’’’’’’’’’’’’’’’!ž’5’’’’’’’’’’’’’’’’’’’až’F’’’’’’’’’’’’’’’’’’’±ž’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įž’’’’’’’’’’’’’’’’’’’’Ÿ’O’’’’’’’’’’’’’’’’’’’aŸ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ÿ’$’’’’’’’’’’’’’’’’’’’±Ÿ’E’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’! ’)’’’’’’’’’’’’’’’’’’’Q ’F’’’’’’’’’’’’’’’’’’’” ’O’’’’’’’’’’’’’’’’’’’”’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1”’’’’’’’’’’’’’’’’’’’’Q”’T’’’’’’’’’’’’’’’’’’’±”’’’’’’’’’’’’’’’’’’’’Ń”’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’1¢’/’’’’’’’’’’’’’’’’’’’q¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 5.2.1 Bool ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±¢’J’’’’’’’’’’’’’’’’’’’’’ und FALSE. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'AND' ’’’’’’’’’’’’’’’£’5’’’’’’’’’’’’’’’’’’’A£’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'CAND' ’’’’’’’’’’’’’’£’$’’’’’’’’’’’’’’’’’’’±£’O’’’’’’’’’’’’’’’’’’’¤’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'COR' ’’’’’’’’’’’’’’’q¤’#’’’’’’’’’’’’’’’’’’’”¤’O’’’’’’’’’’’’’’’’’’’„’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’'false' ’’’’’’’’’’’’’a„’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'NOT' ’’’’’’’’’’’’’’’‘„’2’’’’’’’’’’’’’’’’’’’Ń„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'OR' ’’’’’’’’’’’’’’’’ń„’4’’’’’’’’’’’’’’’’’’’1¦’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'true' ’’’’’’’’’’’’’’q¦’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'XOR' ’’’’’’’’’’’’’’’”¦’5’’’’’’’’’’’’’’’’’’’ᦒB’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’1§’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q§’M’’’’’’’’’’’’’’’’’’’”§’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į§’M’’’’’’’’’’’’’’’’’’’1Ø’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ø’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ø’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńØ’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A©’S’’’’’’’’’’’’’’’’’’’”©’I’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’':=' ’’’’’’’’’’’’’’’’ń©’:’’’’’’’’’’’’’’’’’’’1Ŗ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'=' ’’’’’’’’’’’’’’’’’AŖ’2’’’’’’’’’’’’’’’’’’’Ŗ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<>' ’’’’’’’’’’’’’’’’‘Ŗ’3’’’’’’’’’’’’’’’’’’’ŃŖ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<' ’’’’’’’’’’’’’’’’’«’2’’’’’’’’’’’’’’’’’’’A«’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<=' ’’’’’’’’’’’’’’’’a«’3’’’’’’’’’’’’’’’’’’’”«’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'>' ’’’’’’’’’’’’’’’’’Ń«’2’’’’’’’’’’’’’’’’’’’¬’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'>=' ’’’’’’’’’’’’’’’’1¬’3’’’’’’’’’’’g transferiert werŻ’’’’’’’’’’’’’^ den kann, bzw. daū sie im Fehlerfall nicht transferiert zu werden braucht. ’’’’’’’N PROC wait (DATASPACE VAR message ds, INT VAR message code, ’’’’’’’’’’’’’’. TASK VAR source task) ’’’’’’’’n Zweck: Die eigene Task geht in den #ub##ib#offenen Wartezustand#ie##ue# Ūber. Sie ist jetzt’’’’’’’’’’’’’’^ gegenŪber allen anderen Tasks empfangsbereit. Sie wird erst fortgeŻ’’’’’’’’’’’’’’’^ setzt, wenn eine Sendung eintrifft. Diese wird in 'message ds' und 'mesŻ’’’’’’’’’’N sage code', die Absendertask in 'source task' geliefert. ’’’’’’’’’nDer #ub##ib#Sendungscode#ue##ie# muū zwischen den Beteiligten abgesprochen sein und ist also frei’’’’’’’’’’’’’^wŁhlbar. Allerdings sind negative Werte nicht erlaubt, sondern fŪr bestimmte "PseudoŻ’’’’’’’’’.antworten" vom Betriebssystem reserviert: ’’’’. -1 "Zieltask existiert nicht" ’’’’’> -2 "Zieltask ist nicht empfangsbereit" ’’’’’’’’’’’’N -4 "Eingabe vom Kanal" Diese Meldung kann nur (!) beim offenen WarŻ^ ten ('wait') auftreten, und auch dann nur, wenn die Task gleichzeitig’’’’’’’’’’’^ an einen Kanal angekoppelt ist. Auf diese Weise wird mitgeteilt, daū’’’’’’’’’’’’^ mindestens ein Zeichen vorliegt. Dieses kann im folgenden mit 'inŻ’’’’’’’’’’’’’’N char', 'incharety', 'blockin' oder darauf aufbauenden Prozeduren gelesen werden. NWeitere Codes werden in Systemroutinen standardmŁūig verwandt und sollten auch>von Anwenderroutinen genauso interpretiert werden: ’’’’’’’’’’’> 0 "#ib#ack#ie#" positive Quittung ’’’’’’’’’> 1 "#ib#nak#ie#" negative Quittung ’’’’’’’’’N 2 "#ib#error nak#ie#" negative Quittung mit Fehlermeldung. ’’’’’’N Der gelieferte Datenraum sollte die Struktur eines’N BOUND TEXTs haben und die Fehlermeldung in’’’’’’’’’> diesem TEXT beinhalten. ’’’’’’’’’’’>Beispiel: #ub#Kommunikation mit einem Manager#ue# ’’’’’’’. Auftraggeber Manager ’’’. call (....) REP ’’’’’’’N wait (ds, order, order task) ; ’’’’’’’’’’> execute order ; ’’’’’’’’’N send (order task, reply, ds) ’’’’’’’’’’’’. PER ’’’’’’’^Da der Auftraggeber 'call' verwendet, wartet er automatisch so lange, bis der Manager’’’’’’’’’^fŪr ihn empfangsbereit wird. Dann schickt er die Sendung und geht gleichzeitig (!) in’’’’’’’’’Nden geschlossenen "auf Antwort warten" - Zustand Ūber. Der Manager kann daher’^unbesorgt mit dem "unsicheren" 'send' antworten, da die Empfangsbereitschaft des’’’’’’’’’’’’’’^Auftraggebers nur durch Katastrophen wie LŚschung der Task oder "halt from terminal"’’’’’’’’’’^gestŚrt werden kann. (In diesen FŁllen kann die Antwort ruhig ins Leere gehen.) ’’’’’’’’’’’’’’.Hier sieht man auch den Unterschied zwischen ’> call (...) und send (....); wait (....) . ’’>Bei der zweiten Alternative kŚnnen drei StŚrfŁlle eintreten: ’^ a) Der Manager ist nicht empfangsbereit. 'send' versagt, 'wait' wartet ewig. ’’’’’’’’’’’’N b) Da Ūber die zeitlichen Rahmenbedingungen nichts ausgesagt werden kann,^ ist es mŚglich, daū der Manager die Antwort schickt, bevor die 'wait'-OperaŻ’’’’’’’’’’N tion beim Auftraggeber ausgefŪhrt werden konnte. In unserem Beispiel’’N wŪrde das den Verlust der RŪckmeldung und ewiges Warten seitens des’’’. Auftraggebers auslŚsen. ’’’’’’’’’’’’’’N c) Beim 'wait' kann eine StŚrsendung einer anderen Task eintreffen. ’’’’’.#ib(9)#5.2. #ib#Supervisor#ie##ie(9)# ’’’’’’’’>#ib(9)##ib#Verbindung zum Supervisor#ie##ie(9)# ’’’’’’’’’’’’’’#ib#begin#ie# > PROC begin (PROC start, TASK VAR new task) ’’’’’’’’’’’’’’^ Zweck: Es wird eine #ib#unbenannte Task#ie# (Pseudoname "-") als neuer Sohn der’’’’’’’’’’^ aufrufenden eingerichtet und mit der Prozedur 'start' gestartet. NamensŻ’’’’’’’’’’^ kollision ist nicht mŚglich, die erzeugte Task kann aber auch nicht naŻ’’’’’’’’’’’N mensmŁūig angesprochen werden. 'new task' identifiziert den neuen’. Sohn, falls kein Fehler auftrat. ’ FehlerfŁlle : ’’’’’’’’’’’ * zu viele Tasks ’’’N PROC begin (TEXT CONST son name, PROC start, TASK VAR new task) ’’’’’’’’’N Zweck: Es wird eine Task mit Namen 'son name' als Sohn der aufgerufenen’’^ eingerichtet und mit der Prozedur 'start' gestartet. 'new task' identifiŻ’’’’’’’’’> ziert den neuen Sohn, falls kein Fehler auftrat. ’ FehlerfŁlle : ’’’’’’’’’’’ * zu viele Tasks ’’’N * Name unzulaessig (* "" oder LENGTH > 100 *) ’’’’’’’’’’’’’’’. * ... existiert bereits ’’’’’’’’’’’’#ib#begin password#ie# ’’’’’’’> PROC begin password (TEXT CONST password) ’’’’’’’’’’’’’’’N Zweck: Bei normalen 'global manager'-Tasks kann man mit dieser Operation’N das weitere Kreieren von Sohntasks unter Paūwortkontrolle stellen.N Wenn dieses Kommando in der Manager-Task gegeben worden ist, wird’N bei folgenden SV-begin-Kommandos interaktiv das Paūwort verlangt.’> Dabei gelten die Ūblichen Paūwort-Konventionen: ’’n a) "" (Niltext) bedeutet #on("i")#kein Paūwort#off("i")#. Damit kann man durch’’’’’’’’’’’’’’’N 'begin password ("")' das Paūwort wieder ausschalten. ’’’’n b) "-" bedeutet #on("i")#jedes eingegebene Paūwort ist ungŪltig#off("i")#. Damit’’’’’’’’’’’’’N kann man durch 'begin password ("-")' das Einrichten von’’N Sohntasks von auūen (durch SV-Kommando) abschalten. ’’’’’’#ib#break#ie#  PROC break ’’’’’’’’’’’’’’^ Zweck: Die Task koppelt sich von einem evtl. angekoppelten Terminal ab. Bei’’’’’’’’’’’’’’N der Abkopplung wird auf dem Terminal die "Tapete" ("Terminal n...’> EUMEL Version ..../M...") ausgegeben. ’’’’’’’’’’’’. PROC break (QUIET CONST quiet) ’’’’’’’’’’^ Zweck: Die Task koppelt sich von einem evtl. angekoppelten Terminal ab. Dabei’’’’’’’’’’’’> wird aber keine "Tapete" ausgegeben. ’’’’’’’’’’’’’#ib#channel#ie# ’’’’’’’’’’’’’’ INT PROC channel ’’’’’’’’^ Zweck: Liefert die #ib#Kanalnummer#ie# der eigenen Task. Falls kein Kanal (Terminal)’’’’’. zugeordnet ist, wird 0 geliefert. . INT PROC channel (TASK CONST task) ’’’’’’N Zweck: Liefert die Kanalnummer der angegebenen Task. Ist kein Kanal zugeŻ. ordnet, wird 0 geliefert. ’’’’’’’’#ib#clock#ie# . REAL PROC clock (INT CONST index) ’’’’’’’^ Zweck: Liefert die Ūber Index spezifizierte #ib#Systemuhr#ie#. Die Zeiteinheit ist 1 sec,. die Meūgenauigkeit 0.1 sec. ’’’’’’N clock (0) : CPU-Zeit der eigenen Task ’’’’’’’’’’’’’’’> clock (1) : Realzeit des Systems ’’’’. REAL PROC clock (TASK CONST task) ’’’’’’’> Zweck: Liefert die CPU-Zeit der angegebenen Task. ’’’’’’’^ Hinweis: Die CPU-Zeit beginnt mit der Taskkreation zu laufen. Sie gibt also’’’’’’’’’’’’’’^ jeweils die gesamte bisher verbrauchte CPU-Zeit an. Die Zeitdauer’’’’’’’’’’’’’’’N bestimmter Operationen kann als Differenz zweier 'clock'-AufrufeN gemessen werden. Beim Ende einer Task wird ihr CPU-ZeitverbrauchN dem Vater zugeschlagen, um Abrechnungen zu ermŚg’’’’’’’’q¬’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'+' ’’’’’’’’’’’’’’’’’”¬’.’’’’’’’’’’’’’’’’’’’Ѭ’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’­’1’’’’’’’’’’’’’’’’’’’’’ Addition. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'-' ’’’’’’’’’’’’’’’’’Q­’.’’’’’’’’’’’’’’’’’’’­’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”­’1’’’’’’’’’’’’’’’’’’’į­’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'*' ’’’’’’’’’’’’’’’’’®’1’’’’’’’’’’’’’’’’’’’A®’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'**' ’’’’’’’’’’’’’’’’a®’6’’’’’’’’’’’’’’’’’’’”®’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'DECR' ’’’’’’’’’’’’’’Ń®’A’’’’’’’’’’’’’’’’’’’!Æ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'DIV' ’’’’’’’’’’’’’’’QÆ’3’’’’’’’’’’’’’’’’’’’‘Æ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’±Æ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'INCR' ’’’’’’’’’’’’’’ŃÆ’A’’’’’’’’’’’’’’’’’’’!°’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'abs' ’’’’’’’’’’’’’’’Q°’9’’’’’’’’’’’’’’’’’’’‘°’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į°’7’’’’’’’’’’’’’’’’’’’±’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1±’’’’’’’’’’’’’’’’’’’’Q±’?’’’’’’’’’’’’’’’’’’’”±’R’’’’’’’’’’’’’’’’’’’²’N’’’’’’’’’’’’’’’’’’’’’ rator". ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'max' ’’’’’’’’’’’’’’’Q²’>’’’’’’’’’’’’’’’’’’’‘²’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'maxint' ’’’’’’’’’’’’Į²’(’’’’’’’’’’’’’’’’’’’ń²’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'min' ’’’’’’’’’’’’’’’!³’>’’’’’’’’’’’’’’’’’’’a³’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”³’!’’’’’’’’’’’’’’’’’’’ѳ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'minint' ’’’’’’’’’’’’“’(’’’’’’’’’’’’’’’’’’’1“’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'MOD' ’’’’’’’’’’’’’’’q“’<’’’’’’’’’’’’’’’’’’’±“’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į“’’’’’’’’’’’’’’’’’’’’µ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’’!µ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'random' ’’’’’’’’’’’’Aµ’L’’’’’’’’’’’’’’’’’’’‘µ’N’’’’’’’’’’’’’’’’’’’įµ’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'real' ’’’’’’’’’’’’’’1¶’4’’’’’’’’’’’’’’’’’’’q¶’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'sign' ’’’’’’’’’’’’’’‘¶’:’’’’’’’’’’’’’’’’’’’Ѷ’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1·’ ’’’’’’’’’’’’’’’’’’’a·’ ’’’’’’’’’’’’’’’’’’’‘·’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į·’8’’’’’’’’’’’’’’’’’’’ø’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'text' ’’’’’’’’’’’’’’Aø’7’’’’’’’’’’’’’’’’’’’ø’Q’’’’’’’’’’’’’’’’’’’įø’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¹’>’’’’’’’’’’’’’’’’’’’A¹’K’’’’’’’’’’’’’’’’’’’‘¹’S’’’’’’’’’’’’’’’’’’’ń¹’O’’’’’’’’’’’’’’’’’’’Qŗ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŗ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įŗ’+’’’’’’’’’’’’’’’’’’’ńŗ’%’’’’’’’’’’’’’’’’’’’!»’’’’’’’’’’’’’’’’’’’’A»’’’’’’’’’’’’’’’’’’’’’’ Y:*** ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q»’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”»’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į»’N’’’’’’’’’’’’’’’’’’’¼’Q’’’’’’’’’’’’’’’’’’’q¼’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±¼’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń¼’X’’’’’’’’’’’’’’’’’’’Q½’P’’’’’’’’’’’’’’’’’’’±½’L’’’’’’’’’’’’’’’’’’’¾’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’!¾’,’’’’’’’’’’’’’’’’’’’Q¾’J’’’’’’’’’’’’’’’’’’’”¾’>’’’’’’’’’’’’’’’’’’’į¾’6’’’’’’’’’’’’’’’’’’’!æ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #clearpos# ’’’’’’’’’’’’ #tableend# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qæ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘æ’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įæ’L’’’’’’’’’’’’’’’’’’’1Ą’M’’’’’’’’’’’’’’’’’’’Ą’G’’’’’’’’’’’’’’’’’’’ŃĄ’J’’’’’’’’’’’’’’’’’’’!Į’L’’’’’’’’’’’’’’’’’’’qĮ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’':=' ’’’’’’’’’’’’’’’’±Į’=’’’’’’’’’’’’’’’’’’’ńĮ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'=' ’’’’’’’’’’’’’’’’’Ā’3’’’’’’’’’’’’’’’’’’’AĀ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<>' ’’’’’’’’’’’’’’’’QĀ’4’’’’’’’’’’’’’’’’’’’‘Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<' ’’’’’’’’’’’’’’’’’ĮĀ’3’’’’’’’’’’’’’’’’’’’Ć’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<=' ’’’’’’’’’’’’’’’’!Ć’4’’’’’’’’’’’’’’’’’’’aĆ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'>' ’’’’’’’’’’’’’’’’’‘Ć’3’’’’’’’’’’’’’’’’’’’ŃĆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'>=' ’’’’’’’’’’’’’’’’ńĆ’4’’’’’’’’’’’’’’’’’’’1Ä’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'+' ’’’’’’’’’’’’’’’’’aÄ’0’’’’’’’’’’’’’’’’’’’”Ä’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įÄ’3’’’’’’’’’’’’’’’’’’’’’ Addition. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'-' ’’’’’’’’’’’’’’’’’!Å’0’’’’’’’’’’’’’’’’’’’aÅ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Å’3’’’’’’’’’’’’’’’’’’’ĮÅ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'*' ’’’’’’’’’’’’’’’’’įÅ’3’’’’’’’’’’’’’’’’’’’!Ę’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'/' ’’’’’’’’’’’’’’’’’AĘ’3’’’’’’’’’’’’’’’’’’’’’ Division. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’Ę’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'**' ’’’’’’’’’’’’’’’’”Ę’8’’’’’’’’’’’’’’’’’’’įĘ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ē’B’’’’’’’’’’’’’’’’’’’QĒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'DECR' ’’’’’’’’’’’’’’qĒ’C’’’’’’’’’’’’’’’’’’’ĮĒ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'INCR' ’’’’’’’’’’’’’’ńĒ’C’’’’’’’’’’’’’’’’’’’AČ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'abs' ’’’’’’’’’’’’’’’qČ’7’’’’’’’’’’’’’’’’’’’±Č’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įČ’5’’’’’’’’’’’’’’’’’’’!É’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'arctan' ’’’’’’’’’’’’QÉ’7’’’’’’’’’’’’’’’’’’’‘É’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'arctand' ’’’’’’’’’’’ŃÉ’8’’’’’’’’’’’’’’’’’’’Ź’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'cos' ’’’’’’’’’’’’’’’QŹ’4’’’’’’’’’’’’’’’’’’’‘Ź’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'cosd' ’’’’’’’’’’’’’’ŃŹ’5’’’’’’’’’’’’’’’’’’’Ė’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QĖ’’’’’’’’’’’’’’’’’’’’qĖ’G’’’’’’’’’’’’’’’’’’’ĮĖ’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'e' ’’’’’’’’’’’’’’’’’Ģ’#’’’’’’’’’’’’’’’’’’’AĢ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'exp' ’’’’’’’’’’’’’’’aĢ’4’’’’’’’’’’’’’’’’’’’”Ģ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'floor' ’’’’’’’’’’’’’ĮĢ’9’’’’’’’’’’’’’’’’’’’Ķ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'frac' ’’’’’’’’’’’’’’AĶ’5’’’’’’’’’’’’’’’’’’’Ķ’B’’’’’’’’’’’lichen. ’’’’’’’’#ib#continue#ie# ’’’’’’’’’’’’’. PROC continue (INT CONST channel nr) ’’’’^ Zweck: Die Task versucht, sich an den vorgegebenen Kanal anzukoppeln. Falls’’’’’’’’’’’’’’^ sie vorher schon an ein Terminal gekoppelt war, wird implizit 'break'’’’’’’’’’’’’’^ durchgefŪhrt, falls die Aktion erfolgreich durchgefŪhrt werden konnte.’’’’’’’’’’’’N Ein erfolgreiches 'continue' beinhaltet implizit 'reset autonom'. N Anmerkung: Normale Tasks kŚnnen auf die KanŁle 1-24 zugreifen,’’’’^ Systemtasks dŪrfen sich auch an die privilegierten KanŁle’’’’’’’’’’’’’’. 25-32 ankoppeln. ’’’’’’ FehlerfŁlle: ’’’’’’’’’’’’ * ungueltiger Kanal  * Kanal belegt ’’’’’ PROC end ^ Zweck: LŚscht die eigene Task und alle SŚhne. Wenn die Task an ein Terminal’’’’’’’’’’’’’’^ angekoppelt ist, wird vorher angefragt, ob wirklich gelŚscht werden soll.’’’’’’’’’N Anschlieūend wird die Standard-"Tapete" auf dem Bildschirm ausgeŻ’ geben. ’’’’’’’’’’’. PROC end (TASK CONST task) ’’’’’’’’’’’’’’^ Zweck: LŚscht die angegebene 'task'. 'task' muū allerdings die eigene oder eine’’’’’’’’’’^ Sohn- bzw. Enkel-Task der eigenen sein (siehe auch: 'Privilegierte OpeŻ’’’’’’’’’’’^ rationen'). Im Unterschied zur oben aufgefŪhrten parameterlosen ProzeŻ’’’’’’’’’’’’N dur 'end' wird nicht angefragt und auch keine "Tapete" ausgegeben.N Wenn also die eigene Task ohne Reaktion auf dem Terminal beendet’’N werden soll, kann dies mit 'end (myself)' geschehen. ’’’’’’’’’’’’’ Fehlerfall: ’’’’’’’’’’’’’ * 'end' unzulaessig #ib#family password#ie# ’’’’’’> PROC family password (TEXT CONST password) ’’’’’’’’’’’’’’N Zweck: Diese Prozedur setzt oder Łndert das Paūwort derjenigen FamilienŻ^ mitglieder, die kein Paūwort oder das gleiche Paūwort wie die aufrufenŻ’’’’’’’’’’’ de Task haben. ’’’^ Zu einer Familie gehŚren die Task, in der man sich befindet, und die ihr’’’’’’’’’’. untergeordneten Tasks. ’’’’’’’’’’’^ NatŪrlich gelten auch hier die allgemeinen Paūwortbedingungen (siehe’’’’’’’’’’’’’’. dazu: 'task password'). ’’’’’’’’’’N Beispiel: Das Kommando 'family password ("EUMEL")' wird in SYSUR’’N gegeben. Dadurch wird das SYSURŻPaūwort und die PaūŻ’’’’N worte der entsprechenden Tasks unter SYSUR auf "EUMEL"’’. gesetzt. ’’’’’’’’’’’’’’’#ib#next active#ie# ’’’’’’’’’’. PROC next active (TASK VAR task) ’’’’’’’’^ Zweck: 'task' wird auf die nŁchste aktive Task gesetzt. Aktiv sind alle Tasks, die’’’’’’’^ sich im Zustand 'busy' befinden oder auf Ein/Ausgabe warten (i/o) und’’’’’’’’’’’’’> an einen Kanal angekoppelt sind. Beispiel: ’’’’’’’> TASK VAR actual task := myself; ’’’’’’’’ REP ’’’’ ... ; > next active (actual task) ’’’’’’’’’’’’> UNTIL actual task = myself PER. ’’’’’’’’^ Hier werden alle aktiven Tasks durchgemustert (z.B. fŪr Scheduling-’’’’’’’’’’’’’’’N Anwendungen). Dieses Verfahren ist sehr viel weniger aufwendig alsN eine Durchmusterung des ganzen Taskbaumes, liefert aber nur die’’’. gerade aktiven Tasks. ’’’’’’’’’’’’#ib#rename myself#ie# ’’’’’’’’> PROC rename myself (TEXT CONST new task name) ’’’’’’’’’’’N Zweck: Die eigene Task erhŁlt als neuen Tasknamen 'new task name'. Damit’N kann auch aus einer benannten eine unbenannte Task mit dem PseuŻ’’N donamen "-" werden. Umbenennung in die andere Richtung ist ebenŻ’’ falls mŚglich. ’’’N Achtung: Durch das Umbenennen der Task werden alle Taskvariablen,’^ die sich auf diese Task beziehen, ungŪltig (als wŁre die Task’’’’’’’’’’’’> gelŚscht und dann neu eingerichtet). ’’’’ FehlerfŁlle: ’’’’’’’’’’’’. * ... existiert bereits ’’’’’’’’’’’’ * Name unzulaessig ’#ib#reset autonom#ie# ’’’’’’’’ PROC reset autonom ’’’’’’N Zweck: Die eigene Task deklariert sich beim Supervisor als nicht autonom’N (Normalzustand). Das bedeutet, 'continue'-Aufforderungen Ūber ein’N 'Supervisor-Kommando' vom Terminal werden vom System ohne BeŻ’’’’’> nachrichtigung der Task durchgefŪhrt. ’’’’’’’’’’’’#ib#set autonom#ie# ’’’’’’’’’’ PROC set autonom ’’’’’’’’^ Zweck: Die eigene Task deklariert sich beim Supervisor als #ib#autonom#ie# (Ūblich fŪr’’’N Manager-Tasks). Wenn jetzt ein 'continue'-Supervisor-Kommando auf’N diese Task von einem Terminal aus gegeben wird, wird der Task Ūber. 'send' eine Nachricht zugestellt. N Achtung: Im autonomen Zustand ist der Programmierer selbst fŪr die^ Reaktion der Task verantwortlich. Man kann sie von auūen auf’’’’’’’’’’’’’N keine Weise gewaltsam an ein Terminal koppeln (ermŚgŻ’’’’> licht Paūalgorithmen / Datenschutz). ’’’’N Um die Programmierung etwas zu entschŁrfen, wird eine’’’’N Task automatisch aus dem autonomen in den Normalzustand’’N ŪberfŪhrt, wenn sie selbst ein 'continue' gibt. ’’’’’’’’’#ib#status#ie# ’’’’’’’’’’’’’’’. INT PROC status (TASK CONST task) ’’’’’’’> Zweck: Liefert den Status der angegebenen Task: ’’’’’’’’’> 0 -busy- Task ist aktiv. ’’’’’’’’’’’’’’’N 1 i/o Task wartet auf Beendigung des Outputs oder’’’’. auf Eingabe. ’’^ 2 wait Task wartet auf Sendung von einer anderen Task. ’’’’’’’’’’’’’’’N 4 busy-blocked Task ist rechenwillig, ist aber blockiert. ’’’’N 5 i/o -blocked Task wartet auf I/O, ist aber blockiert. ’’’’’’N 6 wait-blocked Task wartet auf Sendung, ist aber blockiert. ’’N Achtung: Die Task wird beim Eintreffen einer’’’N Sendung automatisch entblockiert. ’’’’#ib#storage#ie# ’’’’’’’’’’’’’’. PROC storage (INT VAR size, used) ’’’’’’’^ Zweck: Informiert Ūber den physisch verfŪgbaren ('size') und belegten ('used')’’’’’’’’’’’N Speicher des Gesamtsystems. Die Einheit ist KByte. ’’’’’’’’’’’’’’’^ Achtung: 'size' gibt den Speicher an, der benutzt werden kann, ohne in’’’’’’’’’’’’N eine Engpaūsituation zu kommen. TatsŁchlich wird auf dem’N Hintergrundmedium noch eine gewisse Reserve freigehalten.N Wenn diese angebrochen wird, befindet sich das System im’^ #ib#Speicherengpaū#ie#. Dieser Zustand kann mit 'used > size'’’’’’’’’’’’’. abgefragt werden. ’’’’’’’. INT PROC storage (TASK CONST task) ’’’’’’^ Zweck: Liefert die GrŚūe des Speicherbereichs in KByte, den die angegebene’’’’’’’’’’’’’’’. Task augenblicklich belegt. ’’’’’’^ Dabei werden durch Sharing mŚgliche Optimierungen nicht berŪcksichŻ’’’’’’’’’’’’’’’^ tigt. D.h. eine Task kann physisch erheblich weniger Speicher als logisch’’’’’’’’’N belegen. Entsprechend kann die Speichersumme aller Tasks den phyŻ’^ sisch belegten Speicherbereich des Gesamtsystems betrŁchtlich ŪberŻ’’’’’’’’’’’’’’’ sc’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃĶ’’’’’’’’’’’’’’’’’’’’ńĶ’=’’’’’’’’’’’’’’’’’’’1Ī’R’’’’’’’’’’’’’’’’’’’‘Ī’I’’’’’’’’’’’’’’’’’’’įĪ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'int' ’’’’’’’’’’’’’’’Ļ’3’’’’’’’’’’’’’’’’’’’AĻ’F’’’’’’’’’’’’’’’’’’’‘Ļ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'ln' ’’’’’’’’’’’’’’’’±Ļ’3’’’’’’’’’’’’’’’’’’’ńĻ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’Š’’’’’’’’’’’’’’’’’’’’1Š’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'log2' ’’’’’’’’’’’’’’qŠ’5’’’’’’’’’’’’’’’’’’’±Š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’ŃŠ’’’’’’’’’’’’’’’’’’’’ńŠ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'log10' ’’’’’’’’’’’’’1Ń’6’’’’’’’’’’’’’’’’’’’qŃ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’‘Ń’’’’’’’’’’’’’’’’’’’’±Ń’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'max' ’’’’’’’’’’’’’’’ńŃ’@’’’’’’’’’’’’’’’’’’’AŅ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'maxreal' ’’’’’’’’’’’qŅ’*’’’’’’’’’’’’’’’’’’’”Ņ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'min' ’’’’’’’’’’’’’’’įŅ’@’’’’’’’’’’’’’’’’’’’1Ó’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'MOD' ’’’’’’’’’’’’’’’qÓ’>’’’’’’’’’’’’’’’’’’’±Ó’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÓ’!’’’’’’’’’’’’’’’’’’’!Ō’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'pi' ’’’’’’’’’’’’’’’’QŌ’%’’’’’’’’’’’’’’’’’’’Ō’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'random' ’’’’’’’’’’’’”Ō’(’’’’’’’’’’’’’’’’’’’ŃŌ’O’’’’’’’’’’’’’’’’’’’1Õ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'round' ’’’’’’’’’’’’’aÕ’K’’’’’’’’’’’’’’’’’’’±Õ’M’’’’’’’’’’’’’’’’’’’Ö’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ö’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aÖ’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮÖ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÖ’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'sign' ’’’’’’’’’’’’’’Q×’;’’’’’’’’’’’’’’’’’’’‘×’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń×’9’’’’’’’’’’’’’’’’’’’Ų’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'sin' ’’’’’’’’’’’’’’’QŲ’4’’’’’’’’’’’’’’’’’’’‘Ų’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'sind' ’’’’’’’’’’’’’’įŲ’5’’’’’’’’’’’’’’’’’’’!Ł’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'smallreal' ’’’’’’’’’aŁ’+’’’’’’’’’’’’’’’’’’’‘Ł’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŁ’’’’’’’’’’’’’’’’’’’’Ś’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ś’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'sqrt' ’’’’’’’’’’’’’’QŚ’5’’’’’’’’’’’’’’’’’’’‘Ś’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’±Ś’’’’’’’’’’’’’’’’’’’’ŃŚ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'tan' ’’’’’’’’’’’’’’’Ū’4’’’’’’’’’’’’’’’’’’’AŪ’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'tand' ’’’’’’’’’’’’’’Ū’5’’’’’’’’’’’’’’’’’’’ĮŪ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'text' ’’’’’’’’’’’’’’Ü’8’’’’’’’’’’’’’’’’’’’AÜ’M’’’’’’’’’’’’’’’’’’’‘Ü’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮÜ’@’’’’’’’’’’’’’’’’’’’Ż’K’’’’’’’’’’’’’’’’’’’aŻ’N’’’’’’’’’’’’’’’’’’’±Ż’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įŻ’P’’’’’’’’’’’’’’’’’’’AŽ’O’’’’’’’’’’’’’’’’’’’”Ž’S’’’’’’’’’’’’’’’’’’’ß’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aß’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ß’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 5.2.4 Text ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ß’M’’’’’’’’’’’’’’’’’’’įß’w’’’’’’’’’’’’’’’’’’’aą’N’’’’’’’’’’’’’’’’’’’±ą’P’’’’’’’’’’’’’’’’’’’į’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aį’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qį’’’’’’’’’’’’’’’’’’’’”į’’’’’’’’’’’’’’’’’’’’Įį’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńį’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ā’’’’’’’’’’’’’’’’’’’’Qā’’’’’’’’’’’’’’’’’’’’qā’’’’’’’’’’’’’’’’’’’’”ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńā’L’’’’’’’’’’’’’’’’’’’!ć’O’’’’’’’’’’’’’’’’’’’ć’O’’’’’’’’’’’’’’’’’’’įć’X’’’’’’’’’’’’’’’’’’’Aä’I’’’’’’’’’’’’’’’’’’’‘ä’S’’’’’’’’’’’’’’’’’’’ńä’U’’’’’’’’’’’’’’’’’’’Qå’=’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’‘å’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńå’(’’’’’’’’’’’’’’’’’’’ę’(’’’’’’’’’’’’’’’’’’’1ę’(’’’’’’’’’’’’’’’’’’’aę’(’’’’’’’’’’’’’’’’’’’‘ę’(’’’’’’’’’’’’’’’’’’’Įę’(’’’’’’’’’’’’’’’’’’’ńę’(’’’’’’’’’’’’’’’’’’’!ē’(’’’’’’’’’’’’’’’’’’’Qē’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ē’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įē’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńē’T’’’’’’’’’’’’’’’’’’’Qč’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”č’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'heap size' ’’’’’’’’’Ńč’*’’’’’’’’’’’’’’’’’’’é’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aé’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aé’7’’’’’’’’’’’’’’’’’’’”é’6’’’’’’’’’’’’’’’’’’’įé’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ź’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aź’M’’’’’’’’’’’’’’’’’’’‘ź’I’’’’’’’’’’’’’’’’’’’įź’I’’’’’’’’’’’’’’’’’’’1ė’-’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’aė’’’’’’’’’’’’’’’’’’’’ė’’’’’’’’’’’’’’’’’’’’”ė’R’’’’’’’’’’’’’’’’’’’ģ’3’’’’’’’’’’’’’’’’’’’Aģ’F’’’’’’’’’’’’’’’’’’’‘ģ’P’’’’’’’’’’’’’’’’’’’ńģ’T’’’’’’’’’’’’’’’’’’’Qķ’N’’’’’’’’’’’’’’’’’’’”ķ’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńķ’T’’’’’’’’’’’’’’’’’’’1ī’S’’’’’’’’’’’’’’’’’’’‘ī’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įī’+’’’’’’’’’’’’’’’’’’’ļ’+’’’’’’’’’’’’’’’’’’’Aļ’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’qļ’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’”ļ’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’Ńļ’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’š’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’1š’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’aš’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’‘š’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’Įš’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’ńš’’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’’’13 I ’’’’’’’’’’’’’’’’’’. I ’’’’’’’’’’’’’’’’’’. I ’’’’’’’’’’’’’’’’’’. I ’’’’’’’’’’’’’’’’’’20 I ’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’!ń’+’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’Qń’’’’’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’’’23 I ’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’’’24 I ’’’’’’’’’’’’’’’’’’ I ’’’’’’’’’’’’’’’’’’ 25 I ū ’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’':=' ’’’’’’’’’’’’’’’’qń’=’’’’’’’’’’’’’’’’’’’±ń’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'=' ’’’’’’’’’’’’’’’’’Įń’<’’’’’’’’’’’’’’’’’’’ņ’M’’’’’’’’’’’’’’’’’’’Qņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<>' ’’’’’’’’’’’’’’’’qņ’=’’’’’’’’’’’’’’’’’’’±ņ’O’’’’’’’’’’’’’’’’’’’ó’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<' ’’’’’’’’’’’’’’’’’1ó’<’’’’’’’’’’’’’’’’’’’qó’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<=' ’’’’’’’’’’’’’’’’Ńó’=’’’’’’’’’’’’’’’’’’’ō’R’’’’’’’’’’’hreiten. ’’’’’’’#ib#task password#ie# ’’’’’’’’. PROC task password (TEXT CONST password) ^ Zweck: Das angegebene Paūwort wird beim Supervisor hinterlegt. Bei folgenŻ’’’’’’’’’’’’’’’N den SV-Kommandos 'continue...' auf diese Task wird interaktiv das’^ Paūwort abgefragt. Dabei gelten die Ūblichen Paūwort-Konventionen: ’’’’’’’’’’’’’’’n a) "" (Niltext) bedeutet #on("i")#kein Paūwort#off("i")#. Damit kann man durch’’’’’’’’’’’’’’’N 'task password ("")' das Paūwort wieder ausschalten. ’’’’’n b) "-" bedeutet #on("i")#jedes eingegebene Paūwort ist ungŪltig#off("i")#. Damit’’’’’’’’’’’’’N kann man durch 'task password ("-")' das Ankoppeln an ein’N Terminal von auūen (durch SV-Kommando) unterbinden. ’’’’’’>#ib##ib(9)#Privilegierte Operationen#ie(9)##ie# ’’’’’’’’’’’’’’^Die im folgenden aufgefŪhrten privilegierten Operationen kŚnnen #ub#nur#ue# von #ib#SystemŻ’’’^tasks#ie# - das sind direkte oder indirekte SŚhne des Supervisors - ausgefŪhrt werden. Um’’’’’NMiūbrauch unmŚglich zu machen, sollte der Supervisor nach der Einrichtung der’^gewŪnschten Systemtasks bzgl. der Einrichtung neuer SŚhne gesperrt und alle SyŻ’’’’’’’’’’’’’’’.stemtasks durch Paūworte geschŪtzt werden. ’’’#ib#block#ie# . PROC block (TASK CONST task) ’’’’’’’’’’’’^ Zweck: Die angegebene #ib#Task wird blockiert#ie#, d.h. so lange von der Verarbeitung’’’’^ suspendiert, bis die Blockade durch 'unblock' wieder aufgehoben wird.’’’’’’’’’’’’’^ Diese Operation wird vom Scheduler benutzt. Falls das Packet 'scheduŻ’’’’’’’’’’’’’^ ler' insertiert ist, sollten andere Tasks die Prozedur 'block' nicht anwenŻ’’’’’’’> den, um dem Scheduling nicht entgegenzuwirken. ’’’.#ib#collect garbage blocks#ie# ’’’’’’’’’’’’’’’. PROC collect garbage blocks ’’’’’’’’’’’’’N Zweck: Es wird eine auūerplanmŁūige GesamtmŪllabfuhr durchgefŪhrt. PlanŻ’^ mŁūig (d.h. ohne Aufruf dieser Prozedur) wird sie alle 15 Minuten und in’’’’’’’’’’^ Engpaūsituationen durchgefŪhrt. Nach Aufruf dieser Prozedur wird der’’’’’’’’’’’’’’N automatische Fixpunkt/ MŪllabfuhr-Rhythmus ca. 1 Stunde lang geŻ’’N sperrt. Somit kann man z.B. in der Task "scheduler" einen eigenen’> Fixpunkt/MŪllabfuhr-Rhythmus implementieren. ’’’’’^ Achtung: Diese Operation erfordert starkes Paging und dauert dementŻ’’’’’’’’’’’’’’. sprechend lange. ’’’’’’’’. PROC end (TASK CONST task) ’’’’’’’’’’’’’’N Zweck: Die angegebene Task und alle SŚhne, Enkel etc. werden gelŚscht.’’’N Systemtasks (direkte und indirekte Nachkommen des SUPERVISORs)’’’’N kŚnnen beliebige andere Tasks (nicht nur eigene SŚhne) lŚschen. ’’#ib#fixpoint#ie# ’’’’’’’’’’’’’ PROC fixpoint ’’’’’’’’’’’^ Zweck: FŪr das Gesamtsystem wird ein auūerplanmŁūiger #ib#Fixpunkt#ie# geschrieŻ’’’’’’’’’^ ben. PlanmŁūige Fixpunkte (d.h. ohne Aufruf dieser Prozedur) werden’’’’’’’’’’’’’’’N alle 15 Minuten geschrieben. Nach Aufruf dieser Prozedur wird der’N automatische Fixpunkt/MŪllabfuhr-Rhythmus ca. 1 Stunde lang geŻ’’’N sperrt. Somit kann man z.B. in der Task "scheduler" einen eigenen’> Fixpunkt/MŪllabfuhr-Rhythmus implementieren. ’’’’’N Achtung: Diese Operation verursacht starkes Paging (RŪckschreiben’N aller verŁnderten Seiten auf das Hintergrundmedium) und’’> dauert dementsprechend lange. ’’’’’’’’’’’. INT PROC prio (TASK CONST task) ’’’’’’’’’^ Zweck: Liefert die augenblickliche #ib#PrioritŁt#ie# der angegebenen Task. ’’’’’’’’’’’’’’> PROC prio (TASK CONST task, INT CONST new prio) ’’’’’’’’’. Zweck: Setzt die PrioritŁt der Task. ’’’’^ Hinweis: 0 ist die hŚchste, 15 die niedrigste PrioritŁt. Die PrioritŁten 0 bis 2’’’’’’’’’^ werden von EUMEL 0 (fine scheduling) verwaltet. Die restlichen PrioriŻ’’’’’’’’’’^ tŁten kŚnnen fŪr 'rough scheduling' (siehe auch im Kapitel Scheduler)’’’’’’’’’’’. eingesetzt werden. ’’’’’’’’’’’’’^ Durch 'continue ("name")' wird die PrioritŁt wieder auf 0 gesetzet. ’’’’’’’’’’’’#ib#set date#ie# ’’’’’’’’’’’’’ PROC set date ’’’’’’’’’’’^ Zweck: #ib#Datum#ie# und #ib#Uhrzeit#ie# kŚnnen im Dialog gesetzt werden (Form wie beim’’^ Start des Systems). Dabei wird gegebenenfalls die HardwareŻUhr geleŻ’’’’’’’’’’’’’’ sen. ’’’’’’’’’’’’’N Sollte der SHard ein falsches Datum liefern, so muū das Datum mit N set clock (date("tt.mm.jj") + time ("hh:mm:ss")) ’’’’’’’’’’’’’ gesetzt werden. ’’#ib#save system#ie# ’’’’’’’’’’ PROC save system ’’’’’’’’^ Zweck: Der gesamte Systemhintergrund wird auf Archivdisketten gesichert. Zu’’’’’’’’’’’’’’N diesem Zweck wird das System wie bei 'shutup' heruntergefahren. ’’#ib#shutup#ie# ’’’’’’’’’’’’’’’ PROC shutup ’’’’’’’’’’’’’^ Zweck: #ib#Kontrolliertes Herunterfahren des Systems#ie#. Beim nŁchsten Systemstart’’’’’’N wird automatisch Datum und Uhrzeit erfragt, wenn der KommandodialŻN og eingeschaltet ('command dialogue (TRUE)') und keine Hardwareuhr^ vorhanden ist. Falls diese Prozedur nicht vor dem Abschalten aufgerufen’’’’’’’’’’’^ wurde, findet beim Neustart ein Aufsetzen auf dem letzten Fixpunkt statt’’’’’’’’’’ (RERUN). ’’’’’’’’’#ib#unblock#ie# ’’’’’’’’’’’’’’. PROC unblock (TASK CONST task) ’’’’’’’’’’^ Zweck: Eine vorherige Blockierung der Task wird aufgehoben. Ist die Task nicht’’’’’’’’’’’^ blockiert, bewirkt 'unblock' nichts. Diese Operation wird vom Scheduler’’’’’’’’’’’N benutzt. Andere Tasks sollten sie normalerweise nicht anwenden, um> dem Scheduling nicht entgegenzuwirken. ’’’’’’’’’’’.#ib(9)#5.3. #ib#ID Ż Konstanten#ie##ie(9)# ’’’Die Informationsprozedur ’’’’’. INT PROC id (INT CONST no) ’’’’’’’’’’’’’’Nliefert folgende Informationen Ūber die SoftŻ und Hardware des Rechners: ’’’’’. Von EUMEL 0 werden geliefert: ’’’’’’’’’’’’’ id (0) --> EUMELŻVersion . id (1) --> Prozessortyp (1: Z80, ’’’’’’’. 2: Z8001, ’’’’’> 3: 8086 und kompatible, ’’’’’’’. 4: 68000 ’’’’’’. 5: 80286) ’’’’’. id (2) --> UrladerŻVersion ’’’’’’’’’’’’’’ id (3) --> reserviert ’’’. Vom SHard werden geliefert: ’’’’’’’’’’’’’’’. id (4) --> Lizenznummer des SHards ’’’’’’> id (5) --> Installationsnummer des EUMELŻAnwenders ’’’’’’. id (6) --> SHardŻspezifisch ’’’’’’’’’’’’’. id (7) --> SHardŻspezifisch ’’’’’’’’’’’’’.#ib(9)#5.4. #ib#Systemverwaltung#ie##ie(9)# ’’n#on("i")#Achtung#off("i")#: Dieser Teil des Systemhandbuchs ist nur fŪr solche Multi-User-Installationen’’’’’’N von Bedeutung, die erweiterte Systemverwaltungsfunktionen generieren’. bzw. modifizieren wollen. ’’’’’’’’’’’^ #on("i")#Das EUMEL-System ist in der ausgelieferten minimalen Standardform (ohne’’’’’> die Features) ohne weiteres benutzbar#off("i")#. ’’’’.#ib(9)#Der Systemmanager #ib#SYSUR#ie##ie(9)# ^Der Systemmanager verhŁlt sich im wesentlichen wie ein normaler Manager, allerdings’’’’’’’’’’’mit folgender Erweiterung: ’’’^ - Die Operationen 'list' und 'fetch' kŚnnen von allen Tasks des Systems und’’’’’’’’’’’’’’N nicht nur von SŚhnen durchgefŪhrt werden. Damit kann man SystemverwalŻ’’’’’’’’’qō’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'>' ’’’’’’’’’’’’’’’’’‘ō’<’’’’’’’’’’’’’’’’’’’Ńō’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'>=' ’’’’’’’’’’’’’’’’1õ’=’’’’’’’’’’’’’’’’’’’qõ’T’’’’’’’’’’’’’’’’’’’Ńõ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'LEXEQUAL' ’’’’’’’’’’ńõ’C’’’’’’’’’’’’’’’’’’’Aö’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'LEXGREATER' ’’’’’’’’qö’E’’’’’’’’’’’’’’’’’’’Įö’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’÷’’’’’’’’’’’’’’’’’’’’1÷’J’’’’’’’’’’’’’’’’’’’÷’U’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į÷’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ų’S’’’’’’’’’’’’’’’’’’’ų’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ų’=’’’’’’’’’’’’’’’’’’’ńų’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ł’R’’’’’’’’’’’’’’’’’’’‘ł’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'+' ’’’’’’’’’’’’’’’’’Ńł’<’’’’’’’’’’’’’’’’’’’ś’Q’’’’’’’’’’’’’’’’’’’qś’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'*' ’’’’’’’’’’’’’’’’’Įś’G’’’’’’’’’’’’’’’’’’’ū’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aū’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ū’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'CAT' ’’’’’’’’’’’’’’’±ū’B’’’’’’’’’’’’’’’’’’’ü’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ü’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aü’O’’’’’’’’’’’’’’’’’’’Įü’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'change' ’’’’’’’’’’’’ńü’I’’’’’’’’’’’’’’’’’’’Aż’P’’’’’’’’’’’’’’’’’’’”ż’S’’’’’’’’’’’’’’’’’’’ž’O’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’až’8’’’’’’’’’’’’’’’’’’’”ž’(’’’’’’’’’’’’’’’’’’’Ńž’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’X’’’’’’’’’’’’’’’’’’’q’’Q’’’’’’’’’’’’’’’’’’’Ń’’Q’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’8’’’’’’’’’’’’’’’’’’’r’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'change all' ’’’’’’’’²’M’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’b’P’’’’’’’’’’’’’’’’’’’Ā’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’*’’’’’’’’’’’’’’’’’’’B’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'code' ’’’’’’’’’’’’’’‚’7’’’’’’’’’’’’’’’’’’’Ā’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ sein. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’7’’’’’’’’’’’’’’’’’’’r’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’Q’’’’’’’’’’’’’’’’’’’2’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'compress' ’’’’’’’’’’r’<’’’’’’’’’’’’’’’’’’’²’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’r’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’r’_’’’’’’’’’’’’’’’’’’’ā’V’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’P’’’’’’’’’’’’’’’’’’’Ņ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'length' ’’’’’’’’’’’’"’9’’’’’’’’’’’’’’’’’’’b’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'LENGTH' ’’’’’’’’’’’’²’7’’’’’’’’’’’’’’’’’’’ņ’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B ’’’’’’’’’’’’’’’’’’’’b ’1’’’’’’’’’’’’’’’’’’’¢ ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'pos' ’’’’’’’’’’’’’’’ā ’A’’’’’’’’’’’’’’’’’’’2 ’X’’’’’’’’’’’’’’’’’’’’ ’Y’’’’’’’’’’’’’’’’’’’ņ ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’" ’,’’’’’’’’’’’’’’’’’’’R ’’’’’’’’’’’’’’’’’’’’r ’-’’’’’’’’’’’’’’’’’’’¢ ’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ ’O’’’’’’’’’’’’’’’’’’’2 ’T’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’² ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā ’Z’’’’’’’’’’’’’’’’’’’B ’Z’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢ ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ ’Q’’’’’’’’’’’’’’’’’’’2’Q’’’’’’’’’’’’’’’’’’’’’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’b’7’’’’’’’’’’’’’’’’’’’¢’1’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'real' ’’’’’’’’’’’’’’’’8’’’’’’’’’’’’’’’’’’’Ņ’Q’’’’’’’’’’’’’’’’’’’2’F’’’’’’’’’’’’’’’’’’’’’ stehen. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'replace' ’’’’’’’’’’’‚’[’’’’’’’’’’’’’’’’’’’ā’U’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’ņ’T’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'SUB' ’’’’’’’’’’’’’’’r’D’’’’’’’’’’’’’’’’’’’Ā’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'subtext' ’’’’’’’’’’’ā’L’’’’’’’’’’’’’’’’’’’2’U’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’Q’’’’’’’’’’’’’’’’’’’B’Q’’’’’’’’’’’’’’’’’’’¢’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’P’’’’’’’’’’’’’’’’’’’2’Z’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’Q’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’T’’’’’’’’’’’’’’’’’’’2’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'text' ’’’’’’’’’’’’’’b’L’’’’’’’’’’’’’’’’’’’²’Q’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’C’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’S’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’P’’’’’’’’’’’’’’’’’’’Ņ’S’’’’’’’’’’’’’’’’’’’2’!’’’’’’’’’’’n tungsdateien (z.B. "#ib#logbuch#ie#") von allen Tasks aus lesen. 'erase' und 'save' sind’’’’’’’’’’’’’’’^ jedoch nur von SŚhnen bzw. Enkeln - d.h. von privilegierten Systemtasks - aus’’’’’’’’’’ zulŁssig. ’’’’’’’’’’’’’NDas Paket stellt folgende Operationen zusŁtzlich zur VerfŪgung: ’’’’’’’’’’’’’’.#ib#generate shutup manager#ie# ’’’’’’’’’’’’’’. PROC generate shutup manager ’’’’’’’’’’’’^ Zweck: Es wird eine Sohntask mit Namen "shutup" kreiert. Diese Task ist nichtŻ’’’’’’’’’’’N (!) paūwortgeschŪtzt, lŁūt aber keine normalen Kommandos zu, sonŻ dern fragt nur ’’’. shutup (j/n) ? ’’’’’’’’’’^ So kann jeder das System kontrolliert abschalten und die privilegierten’’’’’’’’’’’N Operationen des OPERATORs wie 'end' sind dennoch geschŪtzt. ’’’’’’#ib#put log#ie# ’’’’’’’’’’’’’’. PROC put log (TEXT CONST log record) ’’’’N Zweck: Der angegebene 'log record' wird mit vorangestelltem Tasknamen desN Absenders, Datums- und Uhrzeitangabe in die Logbuchdatei "logbuch"^ in der Task "SYSUR" geschrieben. Der neue Satz wird an die Datei angeŻ’’’’’’’’’’’’N fŪgt. ("logbuch" wird z.B. vom EUMELmeter verwandt.) ’’’’’’’’’’’’’N Hinweis: Bei Verwendung des Logbuchs darf die zwar groūe, aber doch endŻ’N liche DateikapazitŁt nicht vergessen werden. Nachdem das Logbuch^ mit 4073 SŁtzen voll ist, werden weitere 'put log' Operationen ignoŻ’’’’’’’’’’’’^ riert. Die Datei "logbuch" sollte deshalb - wenn sie beispielsweise vom’’’’’’’’’^ EUMELmeter verwandt wird - von Zeit zu Zeit gelŚscht werden ('erase'’’’’’’’’’’’’ bzw. 'forget')! .#ib(9)##ib#Scheduler#ie##ie(9)# ’’’’’’’’’’’’’’^Der Scheduler dient zur Verwaltung der rechenwilligen #ib#Hintergrundtask#ie#s. Will man den’’^Scheduler (eventuell abgeŁndert) insertieren, muū man die Task "scheduler" als Sohn’’’’’’’’’’’^von SYSUR einrichten. Dann holt man die Datei "scheduler" vom Archiv und insertiert’’’’’’’’’’’^sie. "scheduler" beinhaltet "#ib#eumelmeter#ie#". Es wird beim Start erfragt, ob die MeūroutiŻ.nen aktiviert werden sollen oder nicht. ’’’’’’>#ib##ib(9)#Funktionsweise des Schedulers#ie(9)##ie# ’’’’’’’’’’^Der Scheduler sammelt in bestimmten Zeitintervallen alle aktiven (rechnenden) Tasks’’’’’’’’’’’^ab, die an kein Terminal angekoppelt sind und auch keine Manager sind. Diese Tasks’’’’’’’’’’’’^werden blockiert und in die Warteschlange der #ib#Standardklasse#ie# eingefŪgt. ’’’’’’’’’’’’’’^Die Klassen des Schedulers werden durch die #ib#TaskprioritŁt#ie#en 5 bis 9 definiert. Die’’’’^Standardklasse entspricht der PrioritŁt 7. Die KlassenzugehŚrigkeit einer Task kann von’’’’’’’^einer Systemtask aus (z.B. von "OPERATOR") mit der Prozedur '#ib#prio#ie#' verŁndert werden. ’>Der Scheduler geht nach folgender Strategie vor: ’’’’’’’’’’’’’N Anhand der Vordergrund/Hintergrundlast des Systems wird entschieden, ob’’^ Ūberhaupt Hintergrundtasks aktiv sein dŪrfen, welche Klassen aktiv sein dŪrfen’’’’’’’’’’’N und wieviel #ib#Hintergrundtask#ie#s gleichzeitig rechnen dŪrfen. ’’’’’’’^ Die wartenden #ib#Hintergrundtask#ie#s werden im #ib#Round-Robin-Verfahren#ie# aktiviert.N Dabei kommt die Klasse n+1 erst dann zum Zug, wenn die Warteschlange der’^ Klasse n leer ist oder weniger Tasks enthŁlt, als gleichzeitig aktiviert werden’’’’’’’’’’^Die implementierte Standardstrategie hat als oberste Maxime, den Vordergrund auf’’’’’’’’’’’’’’^keinen Fall zu stŚren. Dementsprechend wird der Hintergrund nur aktiviert, wenn eine’’’’’’’’’’.der folgenden Bedingungen erfŪllt ist: ’’’’’’’> - Die Vordergrundlast des Systems liegt unter 3% . ’’’’’’^ - Es ist keine normale #ib#Vordergrundtask#ie# (Nachfahre von "UR") an einen Kanal’’’’’’’N angekoppelt. Man beachte, daū Systemtasks hierbei nicht berŪcksichtigt’N werden. Ein aktiver Drucker blockiert die Hintergrundtasks also nicht. EUMELmeter (Systemstatistik) ’nDie #ib#Meūsoftware#ie# zum #ib#Protokollieren der Systembelastung#ie# befindet sich auf dem Archiv’’’’’’’’’’’'std.zusatz'. ^Falls das System keinen #ib#Scheduler#ie# benutzt, muū eine Meūtask als Sohn von "SYSUR"’’’’’’^eingerichtet werden. In diese Task muū dann die Datei "#ib#eumelmeter#ie#" vom Archiv geholt’’und Ūbersetzt werden. ’’’’’’’’^Falls das System einen Scheduler beinhalten soll, muū bei der Generierung des ScheŻ’’’’’’’’’’’^dulers lediglich auf die Frage "mit eumelmeter (j/n) ?" mit "j" geantwortet werden. ’’’’’’’’’’.#ib##ib(9)#EUMELmeter#ie(9)##ie# ’’’’’’’’’’’’’^Das EUMELmeter protokolliert die #ib#Systemlast#ie# in ca. 10 minŪtigen AbstŁnden in der’’’’’’nDatei "#ib#logbuch#ie#" in "SYSUR". FŪr jedes Meūintervall wird eine Zeile angefŪgt. Die Zeilen’’’’’’’’’’’’’’’.sind folgendermaūen aufgebaut: ’’’’’’’’’’’’’’’>tt.mm.jj hh:mm hg uf ub pw pb cpuf cpub cpus last nutz ’’>tt.mm.jj hh:mm Datum und Uhrzeit des Eintrags ’’’’’’’’’’’’’Nhg GrŚūe des aktuell belegten Hintergrundspeichers ’’’’’’’’’’’’ (in KB) ’’’’>uf Anzahl der aktiven Vordergrundtasks ’’’’’’’’>ub Anzahl der aktiven Hintergrundtasks ’’’’’’’’Npw #ib#Paginglast#ie# bei wartender CPU (#ib#Paging/Wait#ie#) ’Npb Paginglast bei aktiver CPU (#ib#Paging/Busy#ie#) ’’’’’’’’’’’Ncpuf #ib#CPU-Auslastung#ie# durch Vordergrundtasks ’’’’’’’’’’’’’’>cpub CPU-Auslastung durch Hintergrundtasks ’’’’’’.cpus #ib#CPU-Systemlast#ie# ’’’’’>last #ib#Gesamtlast des Systems#ie#: ’’’’’’’’’’’’. pw + pb + cpuf + cpub+ cpus N (Achtung: kann 100% Ūbersteigen, da Platte und CPU ŪberŻ’’’’. lappt arbeiten kŚnnen.) ’’’’Nnutz #ib#NutzgŪte#ie# im Meūintervall: 100% - pw - cpus ’’’’’’’’^ Die NutzgŪte gibt an, welcher Anteil der Systemarbeit fŪr echte’’’’’’’’’’’’’N Nutzarbeit verfŪgbar war. Sie ist die Summe aus der echten’’^ Nutzlast 'cpuf+cpub' und der Leerzeit, die ja theoretisch auch’’’’’’’’’’’’’’^ fŪr Nutzarbeit hŁtte verwandt werden kŚnnen. Sie lŁūt sich, wie’’’’’’’’’’’’’N oben angegeben, auch berechnen, indem man den idealerweise’’N ŪberflŪssigen Overhead 'cpus' und 'pw' von 100% abzieht. ’’’#count per page# ’’’’’’’’’’’’’%#center#EUMEL-Systemhandbuch .#center#6. Der EUMEL-Drucker#right#% ’’’’’’’’’.#ib(9)#6. Der #ib#EUMEL-Drucker#ie##ie(9)# ’’’.#ib(9)#6.1. Allgemeine EinfŪhrung#ie(9)# ’’’’’^Die Ansteuerung eines #ib#Druckers#ie# durch das EUMEL-System geschieht durch zwei’’’’’’’’’’’’Naufeinanderbauende Komponenten. Die eine Komponete ist der hardwareunabhŁngiŻ’^ge #ib#EUMEL-Drucker#ie#, der die #ib#Textverarbeitungsanweisungen#ie# umsetzt und die DruckŻ’^seite entsprechend aufbereitet, so daū sie im Blocksatz, in Tabellenform oder in SpalŻ’’’’’’’’^ten gedruckt werden kann. Die andere Komponente ist der hardwareabhŁngige #ib#DruÜŻ’’’’’’’’’’’^kertreiber#ie#, der durch ein einfaches Interface zum EUMEL-Drucker, wie z.B. TextausgeŻ’’’’’’^ben, Positionieren oder Schrifttypen und Modifikationen an- und ausschalten, den’’’’’’’’’’’’’’eigentlichen Druck vornimmt. ’NDie hardwareunabhŁngige Komponente, der EUMEL-Drucker, befindet sich bei den’’^ausgelieferten Systemen im priviligierten Ast des Taskbaums, so daū beim Anschluū’’’’’’’’’’’’’^eines Druckers nur noch der hardwareabhŁngige Druckertreiber insertiert werden muū.’’’’’’’’’’’^Auf dem PRINTER-Archiv befinden sich schon ein’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Es muū ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’Ā’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’W’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’R’’’’’’’’’’’’’’’’’’’ā’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’Q’’’’’’’’’’’’’’’’’’’²’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’>#pagenr("%",1)##setcount(1)##block##pageblock# ’’’’’’’’’’’’’’’.#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’.#center#TEIL 5 : Programmierung ’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’5 - % #right#GMD ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #right#5 - % ’’’’’’’’’’’’’TEIL 5: Programmierung ’’’’’’5.1 Der ELAN-Compiler ’’’’’’NDer ELAN-Compiler des EUMEL-Systems dient zweierlei Aufgaben: zum einen der’’’NŲbersetzung von ELAN-Programmen, zum anderen der Verwaltung der taskeigenen’’’Modulbibliothek. ’’’’’’’’’’’’’^Diese Moduln, in ELAN Pakete (siehe 2.4.3.4ff.) genannt, stellen als vorŪbersetzte,’’’’’’’’’’’Nund damit abrufbereite#u#1)#e# Prozeduren den Kommandovorrat einer Task dar. ’^Der Codebereich einer Task liegt in ihrem Standarddatenraum (ds4). Die GrŚūe dieses’’’’’’’’’’’^Codebereiches betrŁgt 256K. Der Inhalt besteht zunŁchst aus den von der Vatertask’’’’’’’’’’’’’^ererbten (durch Kopie des ds4 dieser Task) Moduln, im weiteren allen in dieser Task’’’’’’’’’’’.neu hinzu insertierten Packeten. ’’’’’’’’’’’’’NACHTUNG: Durch stŁndiges Neuinsertieren eines Packets kann der’’’’’’’’’’’’’’> Codebereich der betroffenen Task zum Ųberlaufen’’’’ gebracht werden! ’’N1) Die von anderen Systemen her gewohnten Phasen 'Binden' und 'Laden' sind’’’’> durch das EUMEL-ELAN-Compiler-Konzept unnŚtig. ’’’’’’’’’’’’^Jedes Kommando im EUMEL-System ist der Aufruf einer, in der Schnittstelle eines’’’’’’’’’’’’’’’>bereits insertierten Packetes stehenden, Prozedur. ’’’’’’’’’’’.Kommandos fŪr den ELAN-Compiler: ’’’’’’’’’’’’’>- Ųbersetzen : do , insert , run , runagain ’’’>- Protokollieren : check , checkon/off , ’’’’’’’’’’N prot , protoff , warnings on/off ’’’’’’’’’’’’’’’> #on("b")#PROC do (TEXT CONST program)#off("b")# ’’’’’’’’’’’N Ųbersetzen und AusfŪhren von 'program' von einem Programm aus. 'program'’’’. muū ein ausfŪhrbares ELAN Programm sein. ’’N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’. PACKET reo DEFINES reorganize all: ’’’’’’’’’’. PROC reorganize all(THESAURUS CONST thes): ’’. do (PROC (TEXT CONST) reorganize ,thes) ’’’’’> (* Die Prozedur 'reorganize' (siehe 5-52), die einen*) ’’’> (* Dateinamen als Parameter verlangt, wird auf alle *) ’’’> (* Dateien des Thesaurus 'thes' angewandt. *) ’’’ END PROC reorganize all; ’’’’ END PACKET reo; ’’’’’’’’’’’’’N____________________________________________________________________________ ’> #on("b")#PROC insert (TEXT CONST dateiname) #off("b")# ’’’’N Insertieren eines oder mehrerer PACKETs aus der Datei 'dateiname'. Der ProŻN grammtext muū sich in #on("u")#einer#off("u")# Datei befinden. ’’’’’’’’’’’’. #on("b")#PROC insert #off("b")# ’’’’’’’’’’’^ Insertieren eines oder mehrerer PACKETs. Der Dateiname ist der zuletzt benutzte’’’’’’’’’’’’ Dateiname. > #on("b")#PROC insert (THESAURUS CONST t) #off("b")# ’’’’’’’^ Insertieren aller PACKETs, die in den Dateien des Thesaurus 't' enthalten sind. ’’’’’’’’’’’. #on("b")#PROC run #off("b")# ’’’’’’’’’’’’’’N Ųbersetzen und AusfŪhren eines ELAN-Programms. Der Programmtext muū sich’’’N in einer Datei befinden. Der Dateiname ist der zuletzt benutzte Dateiname. > #on("b")#PROC run (TEXT CONST dateiname) #off("b")# ’’’’’’’N Wie oben. Der Programmtext wird aus der Datei mit dem Namen 'dateiname'’’’’. #on("b")#PROC runagain #off("b")# ’’’’’’’’’N Nochmaliges AusfŪhren des zuletzt mit 'run' Ūbersetzten ELAN-Programms.’’’’N Wurde in der letzten Ųbersetzung ein Fehler gefunden, erfolgt die Meldung: . FEHLER : "run again nicht mŚglich" ’’’’’’’. #on("b")#BOOL PROC check #off("b")# ’’’’’’’N Informationsprozedur, die TRUE liefert, wenn 'check' eingeschaltet ist. ’’’. #on("b")#PROC check on #off("b")# ’’’’’’’’’N Einschalten der Generierung von Zeilennummern durch den ELAN-Compiler. Der’N bei der Ųbersetzung erzeugte Code wird ca. 25% umfangreicher! ’’’’’’’’’’’’’> Voreinstellung im 'PUBLIC'- Zweig: 'check on'. ’’’’’’’’’’’’. #on("b")#PROC check off #off("b")# ’’’’’’’’N Ausschalten der Generierung von Zeilennummern durch den ELAN-Compiler. ’’’’> Voreinstellung im 'SYSUR' - Zweig: 'check off. ’’’’’’’’’’’’. #on("b")#BOOL PROC prot #off("b")# ’’’’’’’’N Informationsprozedur, die TRUE liefert, gdw. 'prot' eingeschaltet ist. ’’’’> #on("b")#PROC prot (TEXT CONST dateiname) #off("b")# ’’’’’’^ Einschalten des Compilerlistings auf dem Bildschirm. Das Listing wird gleichzeitig’’’’’’’’’. in die Datei 'dateiname' geschrieben. ’’’’’. #on("b")#PROC prot off #off("b")# ’’’’’’’’’ Ausschalten des Listings. ’. #on("b")#BOOL PROC warnings #off("b")# ’’’’N Informationsprozedur, die TRUE liefert gdw. 'warnings' eingeschaltet ist. ’. #on("b")#PROC warnings on #off("b")# ’’’’’’N Warnungen werden wie Fehlermeldungen ins Notizbuch ausgegeben. ’’’’’’’’’’’’. #on("b")#PROC warnings off#off("b")# ’’’’’’> Warnungen werden nicht mit in das Notizbuch ausgegeben. ’’’.5.1.1 Fehlermeldungen des ELAN-Compilers ’’’’erfolgen stets in der Form: ’’.#ib#COMPILER ERROR#ie#: ’’’’’’’’’’’’’’’.wobei folgende Werte annehmen kann: ’’’N#on("bold")# Bedeutung und eventuelle Abhilfe#off ("bold")#: ’’’’’’’’’. 101 Ųberlauf der Namenstabelle ’’’’’’’’’^ Die Anzahl der Namen aller sichtbaren Pakete ist zu groū oder es wurden’’’’’’’’’’’’’> die AnfŪhrungstriche eines TEXT-Denoters vergessen.  => Keine Abhilfe. ’’. 102 Ųberlauf der Symboltabelle ’’’’’’’’’> Die Anzahl der deklarierten Objekte ist zu groū. ’’’. => Programm in Pakete unterteilen. ’. 103 Ųberlauf des Zwischencodebereiches ’. => Programm in Pakete unterteilen. ’. 104 Ųberlauf der Permanenttabelle ’’’’’’. Zu viele Pakete insertiert. ’’’’’’’’. => Keine (neue Task beginnen). ’’’’’. 106 Paketdatenadresse zu groū ’’’’’’’’’’N Im Paket wird zuviel Platz ( > 64K ) von globalen Datenobjekten und’. Denotern eingenommen. ’’’’’’’’’’’’’’ => Keine Abhilfe. ’’. 107 Lokaige Druckeranpassungen fŪr diverse’’’’’’’’’’’’’’Druckertypen. >- Implementierung des Druckertreiber-Interface ’’’’’’’’’’’’’’^ Das Paket mit dem Druckertreiber muū in einer Task "PRINTER" insertiert und’’’’’’’’’’’’. ein Spool eingerichtet werden. ’’’’’’’’N- Erstellen einer Fonttabelle fŪr den anzuschieūenden Drucker ’’’’’’’’’’’’’’’^ Eine vorhandene Fonttabelle wird dabei in die Task "configurator" gebracht’’’’’’’’’’’’’^ werden. Die Fonttabelle sollte in allen bestehenden Tasks - insbesondere in’’’’’’’’’’’’~ der Task "PUBLIC" und der Task "PRINTER" - mit dem #on("i")##on("b")#fonttable#off("i")##off("b")#-Kommando’’’’’’’’’’’’ eingestellt werden. ’’’>#ib(9)#6.2. Das #ib#Druckertreiber-Interface#ie##ie(9)# ’’’’’’^Da der EUMEL-Drucker vor dem Druckertreiber insertiert ist, aber auf dem DruckerŻ’’’’’’’’’’’’’^treiber aufbaut, mŪssen beim Aufruf der 'print'-Prozedur des EUMEL-Druckers die’’’’’’’’’’’’’’’NProzeduren des Druckertreibers mit Ūbergeben werden. Aus progammtechnischen’’’^GrŪnden sollte ihre Anzahl mŚglichst gering gehalten werden. Deshalb gibt es die’’’’’’’’’’’’’’^folgende drei Prozeduren, die mit einem 'op code' parametrisiert werden. Die BedeuŻ’’’’’’’’’’’^tung der weiteren Parameter der Interfaceprozeduren hŁngen von diesem 'op code' ab.’’’’’’’’’’’NDie folgende Beschreibung der Prozeduren gibt einen Programmrahmen vor, in dem^die Parameter durch Refinements entsprechend ihrer Bedeutung umdefiniert sind. ’’’’’’’’’’’’’’’>PROC open (INT CONST op code, INT VAR param 1, param 2) : ’’’’ LET document code = 1 , ’’ page code = 2 ; ’’ SELECT op code OF ’’’’’’’’’’. CASE document code : open document ’’’’’. CASE page code : open page ’’’’’’’’’ END SELECT.  x steps : param1 . ’’’’’’’’’ y steps : param2 . ’’’’’’’’’ #ib#open document#ie# : ’’’’^ Zweck: Die Prozedur wird vom EUMEL-Drucker zur Einleitung jedes Ausdrucks’’’’’’’’’’’’’’’N aufgerufen. Hier kŚnnen notwendige Initialisierungen der Hardware^ durchgefŪhrt werden. In 'x steps' und 'y steps' muū die Breite bzw.’’’’’’’’’’’’’’N HŚhe der bedruckbaren FlŁche des Papieres in Mikroschritten des’’> Druckers angegeben werden.#u##count#)#e# ’’’’’’’’>#value#) Zur Definition der Mikroschritte siehe Bemerkung 2. ’ x start : param1 . ’’’’’’’’’ y start : param2 . ’’’’’’’’’ #ib#open page#ie# : ’’’’’’’’N Zweck: Hiermit wird dem Hardware-Interface der Beginn einer neuen Seite’^ mitgeteilt. Die Parameter 'x start' und 'y start' liefern die gewŪnschte’’’’’’’’’^ Position der linken oberen Ecke des Schreibfeldes. Das Hardware-InŻ’’’’’’’’’’’’’’^ terface muū in diesen Parametern seine augenblickliche Position auf’’’’’’’’’’’’’’N dem Papier zurŪckmelden, wobei die Position (0,0) die linke obere. Ecke des Papieres ist. ’’’’’’’’’’N Vor der RŪckmeldung kann aber auch auf die angegebene StartpoŻ’’’^ sition positioniert und diese zurŪckgemeldet werden. Es ist jedoch’’’’’’’’’’’’’’’N darauf zu achten, daū die zurŪckgemeldete Position den internen’’N Nullpunkt fŪr die Absolutkoordinaten im EUMEL-Drucker definiert.’N Deswegen muū das Hardware-Interface sicherstellen, daū bei einem’^ "ZeilenrŪcklauf" die zurŪckgemeldete Position 'x start' erreicht wird.’’’’’’’’’’’^ (Siehe 'carriage return' in der Prozedur 'execute'). Auch gibt es FŁlle,’’’’’’’’’^ bei denen links von der gemeldeten 'x start'-Position positioniert wird. ’’’’’’’’^ Bei #ib#Druckern mit Einzelblatteinzug#ie#, bei denen das Papier gleich auf die’’^ zweite oder dritte Zeile positioniert wird, sollte, um ein korrektes DruckŻ’’’’’’^ bild zu erreichen, diese Postion in 'y start' zurŪckgemeldet werden. ’’’’’’’’’’’’END PROC open; ’’’’’’’’’’’’’’’>PROC close (INT CONST op code, INT CONST param 1) : ’’’’’’’’’’ LET document code = 1 , ’’ page code = 2 ; ’’ SELECT op code OF ’’’’’’’’’’. CASE document code : close document ’’’’. CASE page code : close page ’’’’’’’’ END SELECT.  #ib#close document#ie# : ’’’N Zweck: Hiermit wird dem Hardware-Interface das Ende eines Druckvorgangs’ mitgeteilt. ’’’’’. remaining y steps : param 1 . ’’’’’’’’’’’’’’ #ib#close page#ie# : ’’’’’’’N Zweck: Hiermit wird dem Hardware-Interface mitgeteilt, daū der Druck der> aktuellen Seite abgeschlossen ist. ’’’’’’’’’’’’’’^ 'remaining y steps' gibt an, wieviel Mikroschritte das vertikale PapierŻ’’’’’’’’’^ ende noch von der aktuellen Druckposition entfernt ist. Die x-Position’’’’’’’’’’’N des Druckers ist bei Aufruf dieser Prozedur immer der linke Rand’ 'x start'. ’’’’’’END PROC close; ’’’’’’’’’’’’’’>PROC execute (INT CONST op code, TEXT CONST string, ’’’’’’’’’’> INT CONST param1, param2) : . LET write text code = 1 , ’’’’’’’’’’’. write cmd code = 2 , ’’’’’’’’’’’. carriage return code = 3 , ’’’’’’’’’’’. move code = 4 , ’’’’’’’’’’’. draw code = 5 , ’’’’’’’’’’’. on code = 6 , ’’’’’’’’’’’. off code = 7 , ’’’’’’’’’’’. type code = 8 ; ’’’’’’’’’’’ SELECT op code OF ’’’’’’’’’’. CASE write text code : write text ’. CASE write cmd code : write cmd ’’> CASE carriage return code : carriage return ’’’’’’’’’’’’. CASE move code : move ’’’’’’’. CASE draw code : draw ’’’’’’’. CASE on code : on ’’’’’’’’’. CASE off code : off ’’’’’’’’. CASE type code : type ’’’’’’’ END SELECT . ’’’’’’’’’’’’’’’ from : param1 . ’’’’’’’’’’’’ to : param2 . ’’’’’’’’’’’’ #ib#write text#ie# : ’’’’’’’^ Zweck: Der Ūbergebene Text 'string' muū von der Zeichenposition 'from' bis’’’’’’’’’’’’’’^ 'to' (einschlieūlich) auf dem Drucker ausgegeben werden. Die ŲberŻ’’’’’’’’’’’’’’’N schreitung der Papierbreite braucht nicht ŪberprŪft zu werden. ’’ #ib#write cmd#ie# : ’’’’’’’’^ Zweck: Der Ūbergebene Text 'string' enthŁlt zwischen den Positionen 'from'’’’’’’’’’’’’’’^ und 'to' ein direkt angegebenes #ib#Druckerkommando#ie# (Ž"..."Ž). Wenn’’’’’’’’’’N direkte Druckerkommandos erlaubt sein sollen, mŪssen sie ausgegeŻ ben werden. ’’’’’. x steps to left margin : param 1 . ’’’’’’’’’ #ib#carriage return#ie# : ’’N Zweck: Der Druckkopf muū (ohne Zeilenvorschub) an den linken Rand beŻ’’’^ wegt werden, d.h. an die bei 'open page' vom Druckertreiber gemelŻ’’’’’’’’’’’’’’’^ dete Position 'x start'. 'x steps to left margin' gibt an, wieviel MinimalŻ’’’’’’^ schritte die augenblickliche Position vom linken Rand entfernt ist. ’’’’’’’’’’’’’ x steps : param 1 . ’’’’’’’’ y steps : param 2 . ’’’’’’’’ #ib#move#ie# : ’’’’’’’’’’’’’^ Zweck: Die Schreibposition muū um 'x steps' Mikroschritte nach rechts und um’’’’’’’’’’’’N 'y steps' Mikroschritte nach unten verschoben werden. Negative’’’^ Schrittwerte bedeuten dabei die jeweils andere Richtung. Das ŲberŻ’’’’’’’’’’’’’’’^ schreiten des Papiers braucht nicht ŪberprŪft zu werden. Bei einer’’’’’’’’’’’’’’’^ horizontalen Bewegung nach rechts ('x steps' > 0) mŪssen die eingeŻ’’’’’’’’’’’’’’N schalteten Modifikationen beachtele Datenadresse zu groū ’’’’’’’’^ Im Paket wird zuviel Platz ( > 32K ) von lokalen Datenobjekten belegt. ’’’’’’’’’’’’’ => Keine Abhilfe. ’’. 204 Ųberlauf des Compilerstack ’’’’’’’’’ => Keine Abhilfe. ’’. 301 Modulnummern-Ųberlauf ’’’’’’’’’’’’’’N Zu viele sichtbare Pakete, Prozeduren und Operatoren ( > 2048 ). ’’’ => Keine Abhilfe. ’’ siehe 304 ’’’’’’’’’’. 304 Zu viele Ansprungadressen ’’’’’’’’’’N In dem gerade Ūbersetzten Modul (Prozedur, Operator oder Paketrumpf)N werden vom Compiler zu viele Marken benŚtigt (mehr als 2000). MarkenN werden z.B. fŪr die Codegenerierung von Auswahl (IF ...) und WiederŻN holung (REP ...) gebraucht. Insbesondere bei SELECT-Anweisungen’’’’’N werden 'casemax - casemin + 2' Marken benŚtigt, wobei 'casemax' der’N INT-Wert des maximalen, 'casemin' der des minimalen CASE-Wertes’’’’’^ ist. Dieser Fehler ist somit fast immer auf zu viele und/oder zu weit geŻ’’’’’’’’’’’> spannte SELECT-Anweisungen zurŪckzufŪhren. ’’’’’’’’’N => SELECT-Anweisungen Ūber mehrere Prozeduren verteilen oder’’’’’’’’. Spannweiten verringern. ’’’’’’’’’ 305 CodeŪberlauf ’’’’’’’^ Der insgesamt erzeugte sichtbare Code ist zu umfangreich ( > 256K ). ’’’’’’’’’’’’’’’ => Keine Abhilfe. ’’. 306 Paketdatenadresse zu groū ’’’’’’’’’’N Insgesamt zu viele Datenobjekte in den Paketen ( > 128K ). ’’’’’’’’’ => Keine Abhilfe. ’’. 307 TemporŁre Datenadresse zu groū ’’’’’N Zu viele (lokale) Datenobjekte in einer Prozedur ( > 32K ). ’’’’’’’’^ => Prozedur in mehrere unterteilen, so daū die Datenobjekte sich Ūber’’’’’’’’’’’’’’’. mehrere Prozeduren verteilen. ’’’ 308 Modulcode-Ųberlauf ’^ Ein Modul (Prozedur, Operator oder Paket-Initialisierungsteil) ist zu groū’’’’’’’’’’ ( > 7.5 KB Code). ’’> => In mehrere Prozeduren oder Pakete zerlegen. ’’’’’ 309 Zuviele Paketdaten ’> (Insgesamt mehr als 128K Paketdaten) ’’’’’’’’’’’’’’’ => Keine Abhilfe ’’’5.2 Standardtypen ’’’’’’’’’’’NDer Wertebereich fŪr Datenobjekte vom Typ BOOL besteht aus den Werten TRUE’’’’> #on("b")#BOOL OP AND (BOOL CONST a, b) #off("b")# ’’’’’’’’’> Logisches UND, liefert TRUE gdw. a und b TRUE sind. ’’’’’’’. #on("b")#BOOL OP CAND #off("b")# ’’’’’’’’’’^ Bedingtes logisches UND, entspricht: 'IF a THEN b ELSE false FI'. Der zweite’’’’’’’’’’’’’’’^ Operand wird nicht ausgewertet, falls er fŪr das Ergebnis nicht relevant ist. ’’’’’’’’’’’’’. #on("b")#BOOL OP COR #off("b")# ’’’’’’’’’’’^ Bedingtes logisches ODER, entspricht: 'IF a THEN true ELSE b FI'. Der zweite’’’’’’’’’’’’’’’^ Operand wird nicht ausgewertet, falls er fŪr das Ergebnis nicht relevant ist. ’’’’’’’’’’’’’. #on("b")#BOOL CONST false #off("b")# ’’’’’’> #on("b")#BOOL OP NOT (BOOL CONST a) #off("b")# ’’’’’’’’’’’’ Logische Negation. ’’’’’’’’> #on("b")#BOOL OP OR (BOOL CONST a, b) #off("b")# ’’’’’’’’’’> Logisches ODER, liefert TRUE gdw. a und/oder b TRUE ist. ’’. #on("b")#BOOL CONST true #off("b")# ’’’’’’’> #on("b")#BOOL OP XOR (BOOL CONST a, b) #off("b")# ’’’’’’’’’N Exklusives ODER, liefert TRUE gdw. entweder a oder b TRUE ist. ’’’’’’’’’’’’5.2.2 Integer-Arithmetik ’’’’NEin Datenobjekt vom Typ INT belegt im Speicher 2 Bytes. ZulŁssige INT - Werte’>sind die ganzen Zahlen von -32768 bis +32767 einschlieūlich. ’NFalls grŚūere ganze Zahlen benŚtigt werden, muū das Packet 'LONGINT', welches’^sich auf dem Archive 'std.zusatz' befindet, nachinsertiert werden (siehe 6.1.2). ’’’’’’’’’’’’’Operationen fŪr Integers: ’’’’>- Vergleich : = , <> , < , <= , > , >= ’’’’’’’N- VerknŪpfung : + , - , * , ** , DECR , DIV , INCR ’’’’’’’’’’’’’^- Sonstiges : abs , ABS , initialize random , max , maxint , min , ’’’’’’’’’’’N minint , MOD , random , sign , SIGN , text ’’’’’> #on("b")#INT OP := (INT VAR a, INT CONST b) #off("b")# ’’’’ Zuweisung. > #on("b")#BOOL OP = (INT CONST a, b) #off("b")# ’’’’’’’’’’’’ Vergleich. > #on("b")#BOOL OP <> (INT CONST a, b) #off("b")# ’’’’’’’’’’’. Vergleich auf Ungleichheit. ’’’’’’’’’’’’’’’> #on("b")#BOOL OP < (INT CONST a, b) #off("b")# ’’’’’’’’’’’’ Vergleich auf kleiner. ’’’’> #on("b")#BOOL OP <= (INT CONST a, b) #off("b")# ’’’’’’’’’’’. Vergleich auf kleiner gleich. ’’’’’’’’’’’’’> #on("b")#BOOL OP > (INT CONST a, b) #off("b")# ’’’’’’’’’’’’ Vergleich auf grŚūer. ’’’’’> #on("b")#BOOL OP >= (INT CONST a, b) #off("b")# ’’’’’’’’’’’. Vergleich auf grŚūer gleich. ’’’’’’’’’’’’’’. #on("b")#INT OP + (INT CONST a) #off("b")# > Monadischer Operator (Vorzeichen, ohne Wirkung). ’’’’’’’’’’> #on("b")#INT OP + (INT CONST a, b) #off("b")# ’’’’’’’’’’’’’. #on("b")#INT OP - (INT CONST a) #off("b")#  Vorzeichen-Umkehrung. ’’’’’> #on("b")#INT OP - (INT CONST a, b) #off("b")# ’’’’’’’’’’’’’ Subtraktion. ’’’’’’’’’’’’’’> #on("b")#INT OP * (INT CONST a, b) #off("b")# ’’’’’’’’’’’’’ Multiplikation. ’’’’’’’’’’’> #on("b")#INT OP ** (INT CONST arg, exp) #off("b")# ’’’’’’’’. Exponentiation mit 'exp' >= 0 ’’’’’’’’’’’’’N #on("b")#OP DECR (INT VAR links, INT CONST rechts) #off("b")# ’’’’’’’’’’’’’. Wirkt wie links := links - rechts ’’’’’’’’’> #on("b")#INT OP DIV (INT CONST a, b) #off("b")# ’’’’’’’’’’’ INT-Division. ’’’’’’’’’’’’’ - DIV durch 0 ’’’’’’’’’’’’’N #on("b")#OP INCR (INT VAR links, INT CONST rechts) #off("b")# ’’’’’’’’’’’’’. Wirkt wie links := links + rechts ’’’’’’’’’> #on("b")#INT PROC abs (INT CONST argument) #off("b")# ’’’’’. Absolutbetrag eines INT-Wertes. ’’’’’’’’’’’> #on("b")#INT OP ABS (INT CONST argument) #off("b")# ’’’’’’’. Absolutbetrag eines INT-Wertes. ’’’’’’’’’’’'initialize random' ’’’’’’’’’’N #on("b")#PROC initialize random (INT CONST wert) #off("b")# ’’’’’’’’’’’’’’’^ Initialisieren der 'random'-Prozedur, um nicht reproduzierbare Zufallszahlen zu’’’’’’’’’’’’N bekommen. Diese 'initialize random'-Prozedur gilt fŪr den "INT-Random GeneŻ> #on("b")#INT PROC max (INT CONST links, rechts) #off("b")# . Liefert den GrŚūten der beiden INT-Werte. ’. #on("b")#INT CONST maxint #off("b")# ’’’’’’. GrŚūter INT-Wert im EUMEL-System (32 767). > #on("b")#INT PROC min (INT CONST links, rechts) #off("b")# > Liefert den Kleinsten der beiden INT-Werte. ’’’’’’’’’’’’’’’. min ( 3.0, 2.0) ==> 2.0 ’’’’’’’’’’’’’. min (-2.0, 3.0) ==> -2.0 ’’’’’’’’’’’’’. #on("b")#INT CONST minint #off("b")# ’’’’’’> Kleinster INT-Wert im EUMEL-System (-32768). ’’’’’’’’’’’’’’> #on("b")#INT OP MOD (INT CONST links, rechts) #off("b")# ’’. Liefert den Rest einer INT-Division. ’’’’’’ 3 MOD 2 ==> 1 ’’’’’’’’ -3 MOD 2 ==> 1 ’’’’’’’’ - DIV durch 0 ’’’’’’’’’’’’’’N #on("b")#INT PROC random (INT CONST lower bound, upper bound) #off("b")# ’’N Pseudo-Zufallszahlen-Generator im Intervall 'upper bound' und 'lower bound'N einschlieūlich. Es handelt sich hier um den "INT Random Generator". ’’’’’’’> #on("b")#REAL PROC real (INT CONST a) #off("b")# ’’’’’’’’’’ Konvertierungsprozedur. ’’’> #on("b")#INT PROC sign (INT CONST argument) #off("b")# ’’’’^ Feststellen des Vorzeichens eines INT-Wertes. Folgende Werte werden geliefert: ’’’’’’’’’’’’. argument > 0 ==> 1 ’’’’’’’’’’’’’’. argument = 0 ==> 0 ’’’’’’’’’’’’’’. argument < 0 ==> -1 ’’’’’’’’’’’’’’> #on("b")#INT OP SIGN (INT CONST argument) #off("b")# ’’’’’’t werden. Wenn z.B. 'underline'’N eingeschaltet ist, muū die Strecke unterstrichen werden. ’’’’’’’’N Kann eine Leistung (z.B. Bewegung nach links) nicht erbracht werŻ^ den, muū ein 'errorstop' ausgelŚst werden. Im Fehlerfall bei einer’’’’’’’’’’’’’’’N Horizontalbewegung versucht der EUMEL-Drucker nach einem ZeiŻ’’’’^ lenrŪcklauf nochmals die angestrebte x-Position zu erreichen. Somit’’’’’’’’’’’’’’N brauchen horizontale Bewegungen nach links ('x steps' < 0) nicht’^ unbedingt implementiert zu werden, sondern kŚnnen mit einem 'errorŻ’’’’’’’’’’’’’’^ stop' beantwortet werden. Im Fehlerfall bei einer vertikalen Bewegung’’’’’’’’’’’’> wird an der alten Position weitergeschrieben. ’’’ #ib#draw#ie# : ’’’’’’’’’’’’’^ Zweck: Von der aktuellen Schreibposition an (linke untere Ecke der Zeichenposition)’’’’’’’’’’^ soll eine gerade Linie zum Zielpunkt ('x steps' weiter rechts, 'y steps' weiter’’^ unten) gezogen werden. Kann eine Leistung (z.B. schrŁge Linie, Linie nach’’’’’’’’^ oben o.Ł.) nicht erbracht werden, muū ein 'errorstop' ausgelŚst werden.’’’’’’’’’’^ Dieser Fehlerfall wird vom EUMEL-Drucker ignoriert. Das Ųberschreiten’’’’’’’’’’’’N des Schreibfeldes braucht nicht ŪberprŪft zu werden. ’’’’’’’’’’’’ modification : param 1 . ’’’ #ib#on#ie# : ’’’’’’’’’’’’’’’^ Zweck: Die #ib#Modifikation#ie# der Nummer 'modification' soll eingeschaltet werŻ’’’’’’’^ den, sofern die Hardware es erlaubt. Augenblicklich gibt es folgende’’’’’’’’’’’’’ Modifikationen: ’. 1 underline ’’’’. 2 bold ’’’’’’’’’. 4 italics ’’’’’’. 8 reverse ’’’’’’^ Die in der Fonttabelle spezifizierte Befehlssequenz, um die entspreŻ’’’’’’’’’’’’’^ chende Modifikation anzuschalten, kann mit der Prozedur #on("i")#on string’’’’’’’> (modification)#off("i")# abgefragt werden. ’’’’’’^ Kann eine Leistung nicht erbracht werden, muū ein 'errorstop' ausŻ’’’’’’’’’’’’’’’^ gelŚst werden. Im Fehlerfall der Modifikation 'underline' versucht der’’’’’’’’’’’^ neue EUMEL-Drucker die Zeile mit Hilfe von 'draw' zu unterstreichen.’’’’’’’’’’’’’^ Im Fehlerfall der Modifikation 'bold' wird die Zeile nochmals, um den in’’’’’’’’’^ der Fonttabelle spezifizierten 'bold offset' verschoben, ausgegeben.’’’’’’’’’’’’’^ Bei den restlichen beiden Modifkationen wird der Fehlerfall ignoriert. ’’’’’’’’’’ #ib#off#ie# : ’’’’’’’’’’’’’’^ Zweck: Die angegebene #ib#Modifikation#ie# 'modification' soll ausgeschaltet werŻ’’’’’’’^ den. Die in der Fonttabelle spezifizierte Befehlssequenz, um die entŻ’’’’’’’’’’’’^ sprechende Modifikation auszuschalten, kann mit der Prozedur #on("i")#off’’’’’’’’^ string (modification)#off("i")# abgefragt werden. Ein Fehlerfall wird hier ignoŻ’ riert. ’’’’’’’’’’ font nr : param 1 . ’’’’’’’’^ Zweck: Die Druckausgabe soll auf den #ib#Schrifttyp#ie# mit der angegebenen FontŻ’’’’’’’^ nummer 'font nr' umgeschaltet werden. Diese Nummer bezieht sich auf’’’’’’’’’’’’’’^ die eingestellte Fonttabelle. Mit den Prozeduren des Fontspeichers’’’’’’’’’’’’’’’N kŚnnen anhand dieser Nummer die nŚtigen Informationen beschafft’’n werden. So liefert z.B. die Prozedur #on("i")#font string (font nr)#off("i")# die in der FontŻ’’’n tabelle spezifizierte Befehlssequenz oder die Prozedur #on("i")#font (font nr)#off("i")#’’’’’’’’’^ den Namen des Fonts. Die Breite des Leerzeichens kann mit #on("i")#char pitch’’’’> (font nr, " ")#off("i")# bestimmt werden. ’’’’’’’END PROC execute; ’’’’’’’’’’’’.#ib(9)#6.3. Prozedur-Schnittstelle des EUMEL-  Druckers#ie(9)# ’’’’’’’’’#ib#print#ie# > PROC print (PROC (TEXT VAR) next line, BOOL PROC eof, ’’> PROC (INT CONST, INT VAR, INT VAR) open, ’’’> PROC (INT CONST, INT CONST) close, ’’’’’’’’’> PROC (INT CONST, TEXT CONST, ’’’’’’’’’’’’’’’N INT CONST, INT CONST) execute, ’’’’’’’’’N BOOL CONST elan listing, TEXT CONST file name) ’’’’’’’’’’’’’^ Zweck: Solange die Prozedur 'eof' FALSE liefert wird mit der Prozedur 'next’’’’’’’’’’’’’^ line' eine Zeile eingelesen. Dieser Eingabestrom wird fŪr den Druck’’’’’’’’’’’’’’^ aufbereitet. Ist die Konstante 'elan listing' auf FALSE gesetzt, so wird’’’’’’’’’N der Eingabestrom als Textdatei mit Textkosmetik-Anweisungen ausŻ’N gedruckt. Andernfalls wird der Eingabestrom wie ein ELAN-Listing’^ behandelt. In der Textkonstanten 'file name' muū dann der Dateiname’’’’’’’’’’’’’’> der Programmdatei enthalten sein. ’’’’’’’’’’’’’’’. PROC print (FILE VAR file, ’’’’’’’’’’’’’> PROC (INT CONST, INT VAR, INT VAR) open ’’’’> PROC (INT CONST, INT CONST) close ’’’’’’’’’’> PROC (INT CONST, TEXT CONST, ’’’’’’’’’’’’’’’N INT CONST, INT CONST) execute) ’’’’’’’’’’’’N Zweck: Der Eingabestrom kommt aus der angegebenen Datei. Anhand vorgeŻ’’^ gebener Kriterien wird entschieden, ob diese Datei als Textdatei oder’’’’’’’’’’’’> als ELAN-Listing ausgedruckt wird. ’’’’’’’’’’’’’’#ib#with elan listings#ie# ’’’> PROC with elan listings (BOOL CONST flag) ’’’’’’’’’’’’’’N Zweck: Mit dieser Prozedur kann bei der vorangegangenen 'print'-ProzedurN gesteuert werden, ob Ūberhaupt irgendwelche Dateien als ELAN-LisŻ^ tings gedruckt werden sollen. Wird damit FALSE eingestellt, so werŻ’’’’’’’’’’’’’’> den alle Dateien als Textdateien gedruckt. ’’’’’’. BOOL PROC with elan listings ’’’’’’’’’’’’> Zweck: Liefert die aktuelle Einstellung. ’’’’’’’’’’’’’’’#ib#is elan source#ie# ’’’’’’’. PROC is elan source (FILE VAR file) ’’’’’^ Zweck: Entscheidet nach vorgebenen Kriterien, ob die angegebene Datei ein’’’’’’’’’’’’’’’. ELAN-Listing ist. ’’’’’’’’’’’’’’’.#ib#bottom label for elan listings#ie# ’’’’’’’> PROC bottom label for elan listings (TEXT CONST label) ’’^ Zweck: Bei ELAN-Listings wird in der Fuūzeile ein Text eingestellt, der durch’’’’’’’’’’’^ SchŁgstrich getrennt vor die Seitennummer geschrieben wird. (z.B. zur’’’’’’’’’’’’> Durchnumerierung der Pakete im Quellcode) ’’’’’’’. TEXT PROC bottom label for elan listings > Zweck: Liefert die aktuelle Einstellung. ’’’’’’’’’’’’’’’#ib#material#ie# ’’’’’’’’’’’’’ TEXT PROC material ’’’’’’^ Zweck: Hier kann das Hardware-Interface jeder Zeit den aktuellen MaterialŻ’’’’’’’’’’’’’’^ wert abfragen, der vom Benutzer mit der 'material'-Anweisung eingeŻ’’’’’’’’’’’’’’ stellt ist. ’’’’’#ib#x pos#ie#  INT PROC x pos ’’’’’’’’’’^ Zweck: Wird in der Prozedur 'execute' die Funktion 'move' oder 'draw' angeŻ’’’’’’’’’’’’’^ steuert, so liefert diese Prozedur die absolute Zielposition in x-RichŻ’’’’’’’’’’^ tung, wo bei der Nullpunkt durch das zurŪckgelieferte 'x start' bei 'open’’’’’’’’^ page' definiert ist. Diese Prozedur dient zur UnterstŪtzung von DruÜŻ’’’’’’’’’’’’^ kern, die eine absolute Positionierung in horizontaler Richtung b> Feststellen des Vorzeichens eines INT-Wertes. ’’’’’’’’’’’’’> #on("b")#TEXT PROC text (INT CONST zahl) #off("b")# ’’’’’’’^ Konvertierung des INT Wertes 'zahl' in den kŪrzest mŚglichen Text. Das VorzeiŻ’’’’’’’’’’’’’ chen bleibt erhalten. ’’’’’> #on("b")#TEXT PROC text (INT CONST zahl, lŁnge) #off("b")# N Konvertierung des INT Wertes 'zahl' in einen Text der LŁnge 'lŁnge'. Das’’’^ Vorzeichen bleibt erhalten. Falls der Text kŪrzer als 'lŁnge' ist, wird er links’’’’’’’’’’’^ (vorne) mit Leerzeichen aufgefŪllt, falls er lŁnder ist wird 'lŁnge' mal "*"’’’’’’’’’’’’’’’ ausgegeben. ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’. out ("X:"); out(text(12345,7)) ; line; ’’’. out ("Y:"); out(text(12345,3)) ; ’’’’’’’’’ (* ergibt *) ’’’’’’’’’ X: 12345 N____________________________________________________________________________ ’5.2.3 Real-Arithmetik ’’’’’’’NFŪr den Datentyp REAL gibt es auūer den Ūblichen VerknŪpfungs- und VergleichsŻ^operationen noch eine Anzahl mathematischer Prozeduren und Operationen. Teilweise’’’’’’’’’’’’’>stehen diese in mehr als einer Version zur VerfŪgung. ’’’’’’’’>Jedes Datenobjekt vom Typ REAL belegt im Speicher 8 Byte. ’’’’^REALs haben eine 13-stellige #ib#Mantisse#ie#, die im Rechner dezimal gefŪhrt wird. (Das’’’’’’^heiūt, bei Konversionen zwischen interner und TEXT-Darstellung treten keine RunŻ’’’’’’’’’’’’’’Ndungsfehler auf.) Der Wertebereich wird durch folgende Eckwerte abgegrenzt: ’’#dpos(0.5,".")##lpos(4.5)# ’’’. 9.999999999999e+126 grŚūter REAL-Wert ’’N 0.000000000001 kleinster positiver REAL-Wert mit x + 1.0 > 1.0 ’’’’> 9.999999999999e-126 kleinster positiver REAL-Wert > 0.0 > -9.999999999999e-126 grŚūter negativer REAL-Wert ’’’’’’’’. -9.999999999999e+126 kleinster REAL-Wert >- Vergleiche : = , <> , < , <= , > , >= ’’’’’’’N- VerknŪpfungen : + , - , * , / , ** , DECR , INCR ’’’’’’’’’’’’’’’N- Diverse : abs , arctan , arctand , cos , cosd , decimal ’’N exponent , e , exp , floor , frac , initialize ’N random , int , ln , log2 , log10 , max , ’’’’’’’N maxreal , min , MOD , pi , random , round , ’’’’N sign , SIGN , sin , sind , smallreal , sqrt , ’’> tan , tand , text ’’’’’’’’’’’’’’> #on("b")#REAL OP := (REAL VAR a, REAL CONST b) #off("b")# ’ Zuweisung. > #on("b")#BOOL OP = (REAL CONST a, b) #off("b")# ’’’’’’’’’’’ Vergleich. > #on("b")#BOOL OP <> (REAL CONST a, b) #off("b")# ’’’’’’’’’’. Vergleich auf Ungleichheit. ’’’’’’’’’’’’’’’> #on("b")#BOOL OP < (REAL CONST a, b) #off("b")# ’’’’’’’’’’’ Vergleich auf kleiner. ’’’’> #on("b")#BOOL OP <= (REAL CONST a, b) #off("b")# ’’’’’’’’’’. Vergleich auf kleiner gleich. ’’’’’’’’’’’’’> #on("b")#BOOL OP > (REAL CONST a, b) #off("b")# ’’’’’’’’’’’ Vergleich auf grŚūer. ’’’’’> #on("b")#BOOL OP >= (REAL CONST a, b) #off("b")# ’’’’’’’’’’. Vergleich auf grŚūer gleich. ’’’’’’’’’’’’’’> #on("b")#REAL OP + (REAL CONST a) #off("b")# ’’’’’’’’’’’’’’> Monadischer Operator (Vorzeichen, ohne Wirkung). ’’’’’’’’’’> #on("b")#REAL OP + (REAL CONST a, b) #off("b")# ’’’’’’’’’’’> #on("b")#REAL OP - (REAL CONST a) #off("b")# ’’’’’’’’’’’’’’ Vorzeichen-Umkehrung. ’’’’’> #on("b")#REAL OP - (REAL CONST a, b) #off("b")# ’’’’’’’’’’’ Subtraktion. ’’’’’’’’’’’’’’> #on("b")#REAL OP * (REAL CONST a, b) #off("b")# ’’’’’’’’’’’ Multiplikation. ’’’’’’’’’’’> #on("b")#REAL OP / (REAL CONST a, b) #off("b")# ’’’’’’’’’’’ - Division durch 0 ’’’’’’’’> #on("b")#REAL OP ** (REAL CONST arg, exp) #off("b")# ’’’’’’ Exponentiation. ’’’’’’’’’’’N #on("b")#REAL OP ** (REAL CONST arg, INT CONST exp) #off("b")# ’’’’’’’’’’’’ Exponentiation. ’’’’’’’’’’’N #on("b")#OP DECR (REAL VAR links, REAL CONST rechts) #off("b")# ’’’’’’’’’’’. Wirkt wie links := links - rechts ’’’’’’’’’N #on("b")#OP INCR (REAL VAR links, REAL CONST rechts) #off("b")# ’’’’’’’’’’’. Wirkt wie links := links + rechts ’’’’’’’’’> #on("b")#REAL PROC abs (REAL CONST wert) #off("b")# ’’’’’’’. Absolutbetrag eines REAL-Wertes. ’’’’’’’’’’> #on("b")#REAL OP ABS (REAL CONST wert) #off("b")# ’’’’’’’’’. Absolutbetrag eines REAL-Wertes. ’’’’’’’’’’> #on("b")#REAL PROC arctan (REAL CONST x) #off("b")# ’’’’’’’> Arcus Tangens-Funktion. Liefert einen Wert in Radiant. ’’’’> #on("b")#REAL PROC arctand (REAL CONST x) #off("b")# ’’’’’’> Arcus Tangens-Funktion. Liefert einen Wert in Grad. ’’’’’’’> #on("b")#REAL PROC cos (REAL CONST x) #off("b")# ’’’’’’’’’’> Cosinus-Funktion. 'x' muū in Radiant angegeben werden. ’’’’> #on("b")#REAL PROC cosd (REAL CONST x) #off("b")# ’’’’’’’’’> Cosinus-Funktion. 'x' muū in Winkelgrad angegeben werden. ’'decimal exponent' ’’’’’’’’’’’N #on("b")#INT PROC decimal exponent (REAL CONST mantisse) #off("b")# ’’’’’’’N Liefert aus einem REAL-Wert den dezimalen Exponenten als INT-Wert. ’’’’’’’’. #on("b")#REAL PROC e #off("b")# ’’’’’’’’’’’ Eulersche Zahl (2.718282). > #on("b")#REAL PROC exp (REAL CONST z) #off("b")# ’’’’’’’’’’ Exponentialfunktion. ’’’’’’> #on("b")#REAL PROC floor (REAL CONST real) #off("b")# ’’’’’> Schneidet die Nachkommastellen des REAL-Wertes 'real' ab. ’> #on("b")#REAL PROC frac (REAL CONST z) #off("b")# ’’’’’’’’’N Liefert die Stellen eines REAL-Wertes hinter dem Dezimalpunkt. ’’’’’’’’’’’’'initialize random' ’’’’’’’’’’> #on("b")#PROC initialize random (REAL CONST z) #off("b")# ’^ Initialisieren der 'random'-Prozedur mit verschiedenen Werten fŪr 'z', um nicht’’’’’’’’’’’’N reproduzierbare Zufallszahlen zu bekommen. Diese Prozedur gilt fŪr den’’’’’ 'REAL-Random Generator'. ’’> #on("b")#INT PROC int (REAL CONST a) #off("b")# ’’’’’’’’’’’N Konvertierungsprozedur. Die Nachkommastellen werden abgeschnitten. ’’’’’’’’ Bsp: int (3.9) => 3 ’’’’> #on("b")#REAL PROC ln (REAL CONST x) #off("b")# ’’’’’’’’’’’ NatŪrlicher Logarithmus. ’’ - ln mit negativer Zahl ’’’> Nur echt positive Argumente sind zulŁssig. ’’’’’’’’’’’’’’> #on("b")#REAL PROC log2 (REAL CONST z) #off("b")# ’’’’’’’’’ Logarithmus zur Basis 2. ’’ - log2 mit negativer zahl ’> Nur echt positive Argumente sind zulŁssig. ’’’’’’’’’’’’’’> #on("b")#REAL PROC log10 (REAL CONST x) #off("b")# ’’’’’’’’ Logarithmus zur Basis 10. ’ - log10 mit negativer zahl > Nur echt positive Argumente sind zulŁssig. ’’’’’’’’’’’’’’N #on("b")#REAL PROC max (REAL CONST links, rechts) #off("b")# ’’’’’’’’’’’’’’. Liefert den GrŚūten der beiden REAL-Werte. . #on("b")#REAL CONST maxreal #off("b")# ’’’’> GrŚūter REAL-Wert im EUMEL-System (9.999999999999e126). ’’’N #on("b")#REAL PROC min (REAL CONST links, rechts) #off("b")# ’’’’’’’’’’’’’’> Liefert den Kleinsten der beiden REAL-Werte. ’’’’’’’’’’’’’’> #on("b")#REAL OP MOD (REAL CONST links, rechts) #off("b")# > Modulo-Funktion fŪr REALs (liefert den Rest). Beispiele: ’’. 5.0 MOD 2.0 ==> 1.0 ’’’’’’’’’’’’’. 4.5 MOD 4.0 ==> 0.5 ’’’’’’’’’’’’’. #on("b")#REAL CONST pi #off("b")# ’’’’’’’’’ Die Zahl pi (3.141593). ’’’. #on("b")#REAL PROC random #off("b")# ’’’’’’^ Pseudo-Zufallszahlen-Generator im Intervall 0 und 1. Es handelt sich hier um’’’’’’’’’’’’’’’. den "REAL Random Generator". ’’’’’’’’’’’’’’N #on("b")#REAL PROC round (REAL CONST real, INT CONST digits) #off("b")# ’’’N Runden eines REAL-Wertes auf 'digits' Stellen. FŪr positive Werte wird auf’enŚtiŻ’’’’’’’’’’ gen. ’’’’’’’’’’’’#ib#y pos#ie#  INT PROC y pos ’’’’’’’’’’^ Zweck: Wird in der Prozedur 'execute' die Funktion 'move' oder 'draw' anŻ’’’’’’’’’’’’’’’^ gesteuert, so liefert diese Prozedur die absolute Zielposition in y-RichŻ’’’’’’’’^ tung, wo bei der Nullpunkt durch das zurŪckgelieferte 'y start' bei 'open’’’’’’’’^ page' definiert ist. Diese Prozedur dient zur UnterstŪtzung von DruÜŻ’’’’’’’’’’’’^ kern, die eine absolute Positionierung in vertikaler Richtung benŚtigen. ’’’’’’’’ INT PROC linetype ’’’’’’’^ Zweck: Wird in der Prozedur 'execute' die Funktion 'draw' angesteuert, so gibt’’’’’’’’’’^ diese Prozedur den gewŪnschten Linientyp an. Bisher ist nur definiert: ’’’’’’’’’’. 1 underline ’’’’^ Anmerkung: Bis jetzt benutzt der EUMEL-Druckers die Funktion 'draw' lediglich’’’’’’’’’’’^ zum Unterstreichen in Fehlerfall der Modifikation 'underline', d.h.’’’’’’’’’’^ zeichnen mit 'y steps = 0' und 'x steps >= 0' mit 'line type = 1'’’’’’’’’’’’’ reicht aus. ’#ib#y offset index#ie# ’’’’’’’ INT PROC y offset index ’^ Zweck: Wurde der Font mit 'y offsets' definiert, so kann hiermit in der bei der’’’’’’’’’^ Funktion 'write text' in der Prozedur 'execute' der jeweilige Offset-InŻ’’’’’’’’’N dex fŪr den auszugebenden Text abgefragt werden. Der Offset-IndexN sagt aus, die wievielte Verschiebung nun ausgegeben wird. Dabei’’N werden die Verschiebungen in der Reihenfolge durchnummeriert, in’^ der sie in der Fonttabelle angegeben wurden. Anhand dieses Offset-InŻ’’’’’’’’’’’’N dex muū das Hardware-Interface entscheiden, welche Bitmuster ausŻ. gegeben werden mŪssen. ’’’’’’’’’’#ib#pages printed#ie# ’’’’’’’’ INT PROC pages printed ’’N Zweck: Gibt nach dem Ausdruck an, wieviel Seiten gedruckt wurden. ’’’’’’.#ib(9)#6.4. Bemerkungen und RatschlŁge#ie(9)# ^1) FŪr ein Paket, das dieses Interface implementiert, sind folgende Punkte wichtig: ’’’’’’’’’’N - Man braucht sich keine ZustŁnde (aktuelle Position o.Ł.) zu merken. ’’’^ - RŪckmeldungen Ūber die LeistungsfŁhigkeit eines Druckers bzw. seiner AnŻ’’’’’’’’’’’’’’’^ passung erfolgen Ūber 'errorstop'. Der #ib#EUMEL-Drucker#ie# stellt fest, ob bestimmŻ’’N te Leistungen (Einschalten der Attribute und Bewegungen des Druckers)’’^ verfŪgbar sind, indem er sie versuchsweise ausfŪhren lŁūt. Bei den ProzeduŻ’’’’’’’’’’’’^ ren 'open', 'close' und den Funktionen 'write text', 'write cmd', 'carriage return'’’’’^ und 'type' der Prozedur 'execute' fŪhrt ein 'errorstop' jedoch zum Abbruch des’’’’’’’’’ Drucks. ’’’’’’’’’’’’’’’Ž2) Die #on("i")##on("b")##ib#Mikroschritte#ie##off("i")##off("b")# sollten die kleinsten durchfŪhrbaren horizontalen bzw. vertikalen’’’’’’’’’’N Bewegungen des Druckers sein. Oft gibt aber das Handbuch des Druckers keine^ eindeutige Angabe Ūber die Mikroschritte in horizontaler Richtung, sondern sagt’’’’’’’’’’’’^ nur, daū es gewisse Schriften mit einer bestimmten Anzahl von Zeichen pro Zoll’’’’’’’’’’’’’n gibt.#u##count#)#e# Dann ergibt sich die Anzahl von Mikroschritten pro Zoll aus dem kleinsten#foot#’’’’’’’’.#value#) 1 Zoll = 1 Inch = 2.54 cm ’’’’’’’’’’’N gemeinsamen Vielfachen der Anzahl Zeichen pro Zoll aller Schriften. ’’’’’’’^ Der Olivetti Drucker PR1470 hat drei Schriften mit 10, 12, und 16.6 Zeichen pro’’’’’’’’’^ Zoll. Das kleinste gemeinsame Vielfache ist 300. Ein Mikroschritt bei dem DruÜŻ’’’’’’’’’^ ker PR1470 entspricht also einem 300stel Zoll. Die Breite der einzelnen SchrifŻ’’’’’’’’’> ten lŁūt sich nun aus der folgenden Tabelle ablesen. ’’’> Anzahl Zeichen pro Zoll Breite in 1/300 Zoll > 10 30 ’’’’’’’’’’’’’> 12 25 ’’’’’’’’’’’’’> 16.6 18 ’’’’’’’’’’’’’^ Wenn der Drucker in diesen theoretischen Mikroschritten nicht positionieren kann,’’’’’’’’’’n so muū er bei einem #on("i")#move#off("i")#-Befehl so genau wie mŚglich positionieren. Der Rest’’’’’’’’’’’’^ sollte abgespeichert und beim nŁchsten #on("i")#move#off("i")#-Befehl hinzuaddiert werden. N3) Um ein optimales Druckbild zu bekommen, mŪssen alle Breiten und HŚhenangaŻ’. ben der Zeichen genau angegeben werden. ’’’^4) Die Fonttabelle bietet eine einfache MŚglichkeit, Zeichen mit Hilfe der #ib#ErsatzdarŻ’’’’’^ stellung#ie#en umzucodieren. Deshalb sollte der Druckerkanal auch mit der KonfiguŻ’’’’’’’’’> rationstabelle 'transparent' konfiguriert werden. ’’’’’’’’’^5) Um den Schrifttyp festzulegen, mit dem #ib#ELAN-Listing#ie#s gedruckt werden sollen,’’’’’’’Ž kann in der Fonttabelle einem Font der Name #on("i")##on("b")#"#ib#elanlist#ie#"#off("i")##off("b")# zugeordnet werden, denn’’’’’’’’’’’’’’’^ der ELAN-Lister versucht auf einen Schrifttyp mit diesem Namen zuschalten. Wenn’’’’’’’’’’’’^ kein Schrifttyp "elanlist" existiert, dann wird fŪr ELAN-Listings der erste Schrifttyp’’’’’ der Fonttabelle genommen. ’^6) Nach der Installation des #ib#Druckertreiber#ie#s ist darauf zu achten, daū in der Task’’’’> "PRINTER" eine Fonttabelle des Druckers eingestellt ist. ’’^7) Der #ib#Druckertreiber#ie# sollte eventuell noch ein Prozedur bereitstellen, mit der die’’’^ Papierbreite bzw. -hŚhe eingestellt werden kann, die bei 'open document' dem’’’’’’’’’’’’’’’. EUMEL-Drucker gemeldet wird. ’’’’’’’’’’’’’’>#ib(9)#6.5. Arbeitsweise des EUMEL-Druckers#ie(9)# ’’’’’’’’’’’>Der EUMEL-Drucker arbeitet mit der folgenden Strategie: ’’’’’’^Die Datei wird zeilenweise analysiert. Bei der Analyse werden einzelne #ib#Token#ie# beŻ’’’’’’^stimmt. Ein Token ist ein Textteil, der zusammenhŁngend gedruckt werden kann, ohne’’’’’’’’’’’’Ndaū es zu Typumschaltungen, ModifkationsŁnderungen oder Positionierungen in x-^bzw. y-Richtung kommt. So ist bei einfachem Zeilendruck jede Zeile ein Token, wŁhŻ’’’’’’’’’’’’Nrend im Blocksatz jedes Wort ein Token ist. Ein Token hat also immer ’’’’’’’’’ - einen Text, ’’’’’’’’’’’’’. - die LŁnge des Textes bei der Ausgabe, ’’’> - eine absolute x- und y- Position auf dem Papier, ’’’’’’’’ - einen Schrifttyp, ’’’’’’’. - Modifikationen fŪr den Text, ’’’’’’’’’’’’N - Modifikationen fŪr den Zwischenraum vom letzten Token zu diesem Token. ’’^Sind alle Token einer Zeile bestimmt, so werden sie in eine Liste aller bisher erzeugŻ’’’’’’’’^ten, aber noch nicht gedruckten Token der absoluten y-Position nach einsortiert. Diese’’’’’’’’^Tokenliste wird erst dann ausgedruckt, wenn sichergestellt ist, daū im weiteren Verlauf’’’’’’’^der Datei kein Token vor das letzte Token der sortierten Liste kommt. Beim Zeilendruck’’’’’’’’^ist dies nach jeder Zeile der Fall. Bei Spaltendruck kann jedoch erst dann ausgedruckt’’’’’’’’^werden, wenn sich die Analyse in der letzten Spalte befindet. SpŁtestens bei einem’’’’’’’’’’’’>Seitenwechsel muū die Tokenliste ausgegeben werden. ’’’’’’’’’’^Durch diese Strategie lassen sich Spaltendruck oder Indizes und Exponenten sehr’’’’’’’’’’’’’’’^leicht fŪr alle Drucker implementieren, ohne daū ein Drucker in vertikaler Richtung’’’’’’’’’’’rŪckwŁrts positionieren muū. ’^Bei der Ausgabe der Tokenliste wird jeweils auf die nŁchst grŚūere y-Position posiŻ’’’’’’’’’’’^tioniert und dort werden alle Token zu dieser y-Position ausgegeben. Die Ausgabe’’’’’’’’’’’’’’>eines Tokens erfolgt in der folgenden Reihenfolge: ’’’’’’’’’’’. - der Schri. Nachkommastellen gerundet. Beispiel: ’’’’’’. round (3.14159, 3) ’’’’’’’’’’’’’^ liefert '3.142'. FŪr negative 'digits'-Werte wird auf Vorkommastellen gerundet. ’’’’’’’’’’’. round (123.456, -2) ’’’’’’’’’’’’^ liefert '100.0'. Abweichung vom Standard: Es wird mit 'digits'-Ziffern gerundet. ’’’’’’’’’’> #on("b")#INT PROC sign (REAL CONST argument) #off("b")# ’’’> Feststellen des Vorzeichens eines REAL-Wertes. ’’’’’’’’’’’’> #on("b")#INT OP SIGN (REAL CONST argument) #off("b")# ’’’’’> Feststellen des Vorzeichens eines REAL-Wertes. ’’’’’’’’’’’’> #on("b")#REAL PROC sin (REAL CONST x) #off("b")# ’’’’’’’’’’N Sinus-Funktion. 'x' muū in Radiant (Bogenmaū) angegeben werden. ’’’’’’’’’’’> #on("b")#REAL PROC sind (REAL CONST x) #off("b")# ’’’’’’’’’> Sinus-Funktion. 'x' muū im Winkelgrad angegeben werden. ’’’. #on("b")#REAL PROC smallreal #off("b")# ’’’> Kleinster darstellbarer REAL-Wert im EUMEL-System fŪr den ’. 1.0 - smallreal <> 1.0 ’’’’’’’’’’’’’’’. 1.0 + smallreal <> 1.0 ’’’’’’’’’’’’’’’ gilt (1.0E-12). ’’’’’’’’’’’> #on("b")#REAL PROC sqrt (REAL CONST z) #off("b")# ’’’’’’’’’ Wurzel-Funktion. ’’’’’’’’’’ - sqrt von negativer Zahl ’. Das Argument muū grŚūer gleich 0.0 sein. > #on("b")#REAL PROC tan (REAL CONST x) #off("b")# ’’’’’’’’’’> Tangens-Funktion. 'x' muū in Radiant angegeben werden. ’’’’> #on("b")#REAL PROC tand (REAL CONST x) #off("b")# ’’’’’’’’’> Tangens-Funktion. 'x' muū in Winkelgrad angegeben werden. ’> #on("b")#TEXT PROC text (REAL CONST real) #off("b")# ’’’’’’N Konvertierung eines REAL-Wertes in einen TEXT. Ggf. wird der TEXT in ExpoŻ’. nenten-Darstellung geliefert. ’’’’’’’’’’’’’N #on("b")#TEXT PROC text (REAL CONST real, laenge) #off("b")# ’’’’’’’’’’’’’’N Konvertierung eines REAL-Wertes in einen TEXT. Der TEXT wird in ExponenŻ’’’N ten-Darstellung geliefert. Um diese Darstellung zu ermŚglichen ist der Wert. 'laenge' grŚūer oder gleich 8 anzugeben. ’’^ #on("b")#TEXT PROC text (REAL CONST real, INT CONST laenge, fracs)#off("b")# ’’’’’’’’’’’’’’^ Konvertierung eines REAL-Wertes in einen TEXT. Dabei gibt 'laenge' die LŁnge’’’’’’’’’’’’’’’^ des Resultats einschlieūlich des Dezimalpunktes und 'fracs' die Anzahl der DeziŻ’’’’’’’’’’’^ malstellen an. Kann der REAL-Wert nicht wie gewŪnscht dargestellt werden, wird ’’’’’’’’’’’’ laenge * "*" ’’’ geliefert. NJedes Datenobjekt vom Typ TEXT besteht aus einem festen Teil von 16 Bytes und’~mŚglicherweise aus einem flexiblen Teil auf dem #on("i")##on("b")#Heap#off("i")##off("b")#. Im festen Teil werden Texte’’’’’’’Nbis zur LŁnge von 13 Zeichen untergebracht. Wenn eine TEXT-Variable einen Wert^mit mehr als 13 Zeichen LŁnge annimmt, werden alle Zeichen auf dem Heap untergeŻ’’’’’’’’’’’’’’.bracht. Genauer ergibt sich folgendes Bild: ’’. kurzer Text (LŁnge <= 13): ’’’’’’’’’’’’’’. Heap-Link 2 Bytes ’’’’’’’’’’’’’’’ TextlŁnge 1 Byte . Text 13 Bytes ’’’’’’’’’’’’’’’. langer Text (LŁnge > 13): ’’’’’’’’’’’’’’’. Heap-Link 2 Bytes ’’’’’’’’’’’’’’’ 255 1 Byte . LŁnge 2 Bytes ’’’’’’’’’’’’’’’. ungenutzt 11 Bytes ’’’’’’’’’’’’’’’NWenn eine Variable einmal Platz auf dem Heap bekommen hat, behŁlt sie diesen’’^vorbeugend auch dann, wenn sie wieder einen kurzen Text als Wert erhŁlt. So muū’’’’’’’’’’’’’’’^wahrscheinlich kein neuer Platz auf dem Heap zugewiesen werden, wenn sie wieder’’’’’’’’’’’’’’’^lŁnger wird. Das gilt allerdings nur bis zur nŁchsten #ib#Garbage Collection#ie# auf den’’’’’’NTEXT-Heap, denn dabei werden alle Heap-Container minimal gemacht bzw. geŻ’’’’’^lŚscht, wenn sie nicht mehr benŚtigt werden. Der Platz auf dem Heap wird in VielfaŻ’’’’’’’’’’’^chen von 16 Bytes vergeben. In FremddatenrŁumen wird in jedem #ib#Container#ie# neben’’’’’’’’’>dem eigentlichen Text auch die ContainerlŁnge untergebracht. ’>Beispiele: TEXT-LŁnge Speicherbedarf (Byte) ’’’’’’’’’’’. 0 16 ’’’’’’. 13 16 ’’’’’’. 14 32 ’’’’’’. 15 48 ’’’’’’. 30 48 ’’’’’’. 31 64 ’’’’’’. 46 64 ’’’’’’. 47 80 ’’’’’’. 62 80 ’’’’’’>Die HeapgrŚūe eines Fremddatenraums berechnet sich als: ’’’’’’. 1024 * 1024 = 1048056 - stat Bytes ’’’’’^'stat' ist dabei die statische GrŚūe der Datenstruktur, die dem Datenraum aufgeprŁgt’’’’’’’’’’Nwurde. Bei einem BOUND ROW 1000 TEXT ergibt sich also eine HeapgrŚūe von ’’’’’. 1048056 - (1000 * 16) = 1032056 Bytes. ’. #on("b")#INT PROC heap size #off("b")# ’’’’> Informationsprozedur fŪr die GrŚūe (in KB) des TEXT-Heaps. TEXT- Operationen: ’’’’’’’’’’’>- Vergleich : = , <> , < , <= , > , >= ’’’’’’’> LEXEQUAL , LEXGREATER , ’’’’’’’’. LEXGREATEREQUAL .- Verkettung : + , * , CAT ’’’’N- VerŁnderung : change , change all , code , compress , delete ’N char , insert char , length , LENGTH , max ’’’’’N text length , pos , real , replace , SUB , ’’’’’. subtext , text ’Der EUMEL-Zeichensatz’’’’’’’’’#goalpage("codetab")# ’’’’’’’’^Das EUMEL System definiert einen Zeichensatz, der gewŁhrleistet, daū gleiche TextŻ’’’’’’’’’’’’>zeichen auf allen Maschinen gleich codiert werden. ’’’’’’’’’’’N Die interne Darstellung wird durch die folgende EUMEL-Codetabelle’’’’’’’’^beschrieben. Der Zeichensatz beruht auf dem ASCII-Zeichensatz mit Erweiterungen.’’’’’’’’’’’’’’^Der in der Tabelle freie Bereich (z.B code(127) bis code(213)) ist nicht einheitlich’’’’’’’’’’NverfŪgbar und wird deshalb nicht beschrieben. Die Codierung bildet mithin auch.Grundlage fŪr Vergleiche und Sortierungen. ’’’^Die Korrekte Darstellung dieser Zeichen auf Bildschirm, Drucker etc. setzt natŪrlich’’’’’’’’’’^eine korrekte Konfiguration der GerŁte voraus. Die Anpassung eines GerŁts an diesen’’’’’’’’’’’NZeichensatz ist im EUMEL-Systemhandbuch in Teil 2 beschrieben. ’’’’’’’’’’’’’’’. I 0 1 2 3 4 5 6 7 8 9 ’’’.---+-------------------------------------- ’’’.3 I SP ! " Ž $ % & ' ’’’.4 I ( ) * + , - . / 0 1 ’’’.5 I 2 3 4 5 6 7 8 9 : ; ’’’.6 I < = > ? @ A B C D E ’’’.7 I F G H I J K L M N O ’’’.8 I P Q R S T U V W X Y ’’’.9 I Z [ \ ] ^ _ ` a b c ’’’.10 I d e f g h i j k l m ’’’.11 I n o p q r s t u v w ’’’.12 I x y z { | } ~ ’’’’’’’’’’’’’’’.21 I Ö × Ų Ł Ś Ū ’’’22 I Ü Ż Ž SP ’’’’’’’’’’> #on("b")#TEXT OP := (TEXT VAR a, TEXT CONST b) #off("b")# ’ Zuweisung. > #on("b")#BOOL OP = (TEXT CONST links, rechts) #off("b")# ’’N Vergleich von zwei Texten auf Gleichheit (Texte mit ungleichen LŁngen sind’ immer ungleich). ’’’’’’’’’’> #on("b")#BOOL OP <> (TEXT CONST links, rechts) #off("b")# ’^ Vergleich von zwei Texten auf Ungleichheit (Texte mit ungleichen LŁngen sind’’’’’’’’’’’’’’’ stets ungleich). ’’’’’’’’’’> #on("b")#BOOL OP < (TEXT CONST links, rechts) #off("b")# ’’^ Vergleich zweier Texte auf kleiner ('links' kommt lexikographisch vor 'rechts'). ’’’’’’’’’’> #on("b")#BOOL OP <= (TEXT CONST links, rechfttyp wird eingeschaltet, ’’’’’’N - die Modifikationen fŪr den Zwischenraum werden eingeschaltet, ’’’’’’’’’’’N - der Positionsbefehl fŪr horizontale Bewegungen wird gegeben, ’’’’’’’’’’’’> - die Modifikationen fŪr den Text werden eingeschaltet, ’’’. - der Text wird ausgegeben. ’’’’’’’’’’’’’’’^Die ersten vier Punkte werden nur dann ausgefŪhrt, wenn sie notwendig sind. ŲberŻ’’’’’’’’’’’’’^schreitet der Text die Papierbreite, so zeigen Punkte am Ende der Zeile dies an.’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’systemhandbuch.4’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’£ž’’’’’’’’’’’’’’’’ų’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‚Ua€ė’’££  <’’’’<<¤M ’’’’a€’’’’’’’’’’’’’’’’’’’’’’’’’’’’£’’’’’’’’’’’’’’’’’’€’’’’’’’’’’’’’’’’’’’’’’ #pageblock# ’’’’’’’’’’’#block# ’’’’’’’’’’’’’’’ #page (91)# ’’’’’’’’’’’ #headeven# ’’’’’’’’’’”€’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’Į€’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń€’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q’O’’’’’’’’’’’’’’’’’’’±’Y’’’’’’’’’’’’’’’’’’’‚’L’’’’’’’’’’’’’’’’’’’a‚’]’’’’’’’’’’’’’’’’’’’Į‚’‚’’’’’’’’’’’’’’’’’’’Qƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qƒ’X’’’’’’’’’’’’’’’’’’’у’Y’’’’’’’’’’’’’’’’’’’1„’O’’’’’’’’’’’’’’’’’’’‘„’T’’’’’’’’’’’’’’’’’’’ń„’M’’’’’’’’’’’’’’’’’’’A…’M’’’’’’’’’’’’’’’’’’’‘…’K’’’’’’’’’’’’’’’’’’’į…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’†’Q’’’’’’’’’’’’’’’’’’’a†’N’’’’’’’’’’’’’’’’’’’±†’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‡’U’’’’’’’’’’’’’’’’’’’q‡’O’’’’’’’’’’’’’’’’’’’ч’M’’’’’’’’’’’’’’’’’’’!ˆ’O’’’’’’’’’’’’’’’’’’’ˆ’P’’’’’’’’’’’’’’’’’’’ሒN’’’’’’’’’’’’’’’’’’’1‰’x’’’’’’’’’’’’’’’’’’’±‰’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Š’X’’’’’’’’’’’’’’’’’’’aŠ’X’’’’’’’’’’’’’’’’’’’ĮŠ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ኒ-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‹’R’’’’’’’’’’’’’’’’’’’q‹’V’’’’’’’’’’’’’’’’’’’ы’T’’’’’’’’’’’’’’’’’’’1Œ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŒ’P’’’’’’’’’’’’’’’’’’’ь’M’’’’’’’’’’’’’’’’’’’!’u’’’’’’’’’’’’’’’’’’’”’Q’’’’’’’’’’’’’’’’’’’Ž’K’’’’’’’’’’’’’’’’’’’QŽ’d’’’’’’’’’’’’’’’’’’’ĮŽ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Das Kommando ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’_’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’R’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’ѐ’\’’’’’’’’’’’’’’’’’’’1‘’V’’’’’’’’’’’’’’’’’’’‘‘’N’’’’’’’’’’’’’’’’’’’į‘’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’l’’’’’’’’’’’’’’’’’’’q’’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’“’Z’’’’’’’’’’’’’’’’’’’a“’`’’’’’’’’’’’’’’’’’’’ѓ’R’’’’’’’’’’’’’’’’’’’1”’_’’’’’’’’’’’’’’’’’’’””’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į”’Q’’’’’’’’’’’’’’’’’’’’’do ’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!•’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q•’T’’’’’’’’’’’’’’’’’’’ѕ’c’’’’’’’’’’’’’’’’’’’A–’S’’’’’’’’’’’’’’’’’’’”–’f’’’’’’’’’’’’’’’’’’’—’b’’’’’’’’’’’’’’’’’’’—’b’’’’’’’’’’’’’’’’’’’ń—’U’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q˜’(’’’’’’’’’’’’’’’’’’’˜’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”˜’S’’’’’’’’’’’’’’’’’’’™’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q™’’’’’’’’’’’’’’’’’’’’q™’E’’’’’’’’’’’’’’’’’’’Į™’O’’’’’’’’’’’’’’’’’’’!š’Q’’’’’’’’’’’’’’’’’’’š’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įš’’’’’’’’’’’’’’’’’’’’ᚒ6’’’’’’’’’’’’’’’’’’’!›’V’’’’’’’’’’’’’’’’’’’›’P’’’’’’’’’’’’’’’’’’’į›’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’œ’’’’’’’’’’’’’’’’’’’’1œ’Q’’’’’’’’’’’’’’’’’’’‘œ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įœ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’a’*’’’’’’’’’’’’’’’’’’’’’#foot# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘’Y’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ž’V’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ž’U’’’’’’’’’’’’’’’’’’’įž’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ÿ’8’’’’’’’’’’’’’’’’’’’AŸ’?’’’’’’’’’’’’’’’’’’’‘Ÿ’T’’’’’’’’’’’’’’’’’’’ńŸ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ ’+’’’’’’’’’’’’’’’’’’’Į ’Y’’’’’’’’’’’’’’’’’’’!”’T’’’’’’’’’’’’’’’’’’’”’R’’’’’’’’’’’’’’’’’’’į”’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’&’’’’’’’’’’’’’’’’’’’A¢’W’’’’’’’’’’’’’’’’’’’”¢’P’’’’’’’’’’’’’’’’’’’£’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1£’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a£’]’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į£’O’’’’’’’’’’’’’’’’’’’!¤’P’’’’’’’’’’’’’’’’’’’¤’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ѥ’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!„’X’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’„’(’’’’’’’’’’’’’’’’’’’±„’P’’’’’’’’’’’’’’’’’’’¦’Q’’’’’’’’’’’’’’’’’’’q¦’P’’’’’’’’’’’’’’’’’’’Ѧ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’§’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1§’(’’’’’’’’’’’’’’’’’’’a§’P’’’’’’’’’’’’’’’’’’’Į§’U’’’’’’’’’’’’’’’’’’’!Ø’M’’’’’’’’’’’’’’’’’’’ts) #off("b")# ’^ Vergleich von zwei Texten auf kleiner gleich ('links' kommt lexikographisch vor’’’’’’’’’’’’ oder ist gleich 'rechts'). > #on("b")#BOOL OP > (TEXT CONST links, rechts) #off("b")# ’’^ Vergleich zweier Texte auf grŚūer ('links' kommt lexikographisch nach 'rechts'). ’’’’’’’’’’> #on("b")#BOOL OP >= (TEXT CONST links, rechts) #off("b")# ’^ Vergleich zweier Texte auf grŚūer gleich ('links' kommt lexikographisch nach oder’’’’’’’’’’ ist gleich 'rechts'). ’’’’’N #on("b")#BOOL OP LEXEQUAL (TEXT CONST links, rechts) #off("b")# ’’’’’’’’’’’. PrŪfung auf lexikalische Gleichheit. ’’’’’’N #on("b")#BOOL OP LEXGREATER (TEXT CONST links, rechts) #off("b")# ’’’’’’’’’N PrŪfung ob der Text 'links' lexikalisch grŚūer als 'rechts' ist. ’’’’’’’’’’'LEXGREATEREQUAL' ’’’’’’’’’’’’N #on("b")#BOOL OP LEXGREATEREQUAL (TEXT CONST links, rechts) #off("b")# ’’’’^ PrŪfung ob der Text 'links' lexikalisch grŚūer oder gleich dem Text 'rechts' ist. ’’’’’’’’’> Die drei Operatoren prŪfen nach folgenden Regeln: ’’’’’’’’’^ - Buchstaben haben die aufsteigende Reihenfolge 'A' bis 'Z'. Dabei werden kleine’’’’’’’’’’’. und groūe Buchstaben gleich behandelt. ’’> - Umlaute werden wie Ūblich ausgeschrieben. (Ö = Ae usw.) ’> (ū = ss) ’’’’’’’’’’^ - Alle Sonderzeichen (auch Ziffern) auūer ' '(Leerzeichen) und '-' werden ignoŻ’’’’’’’’’’’’> riert, diese beiden Zeichen werden gleich behandelt. ’’’’> #on("b")#TEXT OP + (TEXT CONST links, rechts) #off("b")# ’’^ Verkettung der Texte 'links' und 'rechts' in dieser Reihenfolge. Die LŁnge des’’’’’’’’’’’’’N Resultats ergibt sich aus der Addition der LŁngen der Operanden. ’’’’’’’’’’N #on("b")#TEXT OP * (INT CONST faktor, TEXT CONST quelle) #off("b")# ’’’’’’’N 'faktor' fache Erstellung von 'quelle' und Verkettung. Dabei muū ’’’’’’’’’’ times >= 0 ’’’’’. sein, sonst wird 'niltext' geliefert. ’’’’’N #on("b")#OP CAT (TEXT VAR links, TEXT CONST rechts) #off("b")# ’’’’’’’’’’’’. hat die gleiche Wirkung wie ’’’’’’’’’’’’’’’. links := links + rechts ’’’’’’’’^ Hinweis: Der Operator 'CAT' hat eine geringere Heap-Belastung als die OperaŻ’’’’’’’’’’’’’’’. tion mit expliziter Zuweisung. ’’’N #on("b")#PROC change (TEXT VAR senke, TEXT CONST alt, neu) #off("b")# ’’’’’^ Ersetzung des (Teil-) TEXTes 'alt' in 'senke' durch 'neu' bei dem erstmaligen’’’’’’’’’’’’’’^ Auftreten. Ist 'alt' nicht in 'senke' vorhanden, so wird keine Meldung abgesetzt’’’’’’’’’’’^ (Abweichung vom Standard). Die LŁnge von 'senke' kann sich dabei verŁndern. ’’’’’’’’’’’’’’’> TEXT VAR mein text :: "EUMEL-Benutzerhandbuch"; ’’’’’’. change (mein text, "Ben", "N"); ’’’’’’> (* EUMEL-Nutzerhandbuch *) ’’’’’’’^ #on("b")#PROC change (TEXT VAR senke, INT CONST von, bis, TEXT CONST neu) #off("b")# ’’’’’’^ Der TEXT 'neu' wird in den TEXT 'senke' anstatt des TEXTes, der zwischen 'von'’’’’’’’’’’’’’^ und 'bis' steht, eingesetzt. Die LŁnge von 'senke' kann sich dabei verŁndern. ’’’’’’’’’’’’’> TEXT VAR mein text :: "EUMEL-Benutzerhandbuch"; ’’’’’’> change (mein text, 7, 9, "N"); (* wie oben *) ’’’’’’N #on("b")#PROC change all (TEXT VAR senke, TEXT CONST alt, neu) #off("b")# ’^ Der Teiltext 'alt' wird durch 'neu' in 'senke' ersetzt. Im Unterschied zur 'chanŻ’’’’’’’’’’^ ge'-Prozedur findet die Ersetzung nicht nur bei dem erstmaligen Auftreten von’’’’’’’’’’’’’’N 'alt' statt, sondern so oft, wie 'alt' in 'senke' vorhanden ist. Beispiel: . TEXT VAR x :: "Das ist ein Satz"; ’’’’> change all (x, " ", ""); (* DasisteinSatz *) ’’’’> #on("b")#TEXT PROC code (INT CONST code) #off("b")# ’’’’’’’N Wandelt einen INT-Wert 'code' in ein Zeichen um. 'code' muū ’’’’’’’’’’’’’’’ 0 <= code <= 255 ’’’’’> #on("b")#INT PROC code (TEXT CONST text) #off("b")# ’’’’’’’> Wandelt ein Zeichen 'text' in einen INT-Wert um. Ist ’’’’’’ LENGTH text <> 1 ’’’’’^ dann wird der Wert -1 geliefert (also bei mehr als ein Zeichen oder niltext). ’’’’’’’’’’’’’> (Codetabelle auf Seite 5- #topage("codetab")#) ’’’’’’’’’’’’> #on("b")#TEXT PROC compress (TEXT CONST text) #off("b")# ’’N Liefert den TEXT 'text' ohne fŪhrende und nachfolgende Leerzeichen. ’’’’’’’'delete char' ^ #on("b")#PROC delete char (TEXT VAR string, INT CONST delete pos)#off("b")# ’’’’’’’’’’’’’’’N LŚscht ein Zeichen aus dem Text 'string' an der Position 'delete pos'. FŪr  delete pos <= 0 ’’’’’’ oder ’’’’’’’’’’’’’’’. delete pos > LENGTH string ’’’’’’’’’’’. wird keine Aktion vorgenommen. ’’’’’’’’’’’’'insert char' n #on("b")#PROC insert char (TEXT VAR string, TEXT CONST char,INT CONST insert pos)#off("b")# ’’’’’’’’’’’’’’’^ FŪgt ein Zeichen 'char' in den Text 'string' an der Position 'insert pos' ein. FŪr ’’’’’’’’. insert pos > LENGTH string + 1 ’’’’’’’^ wird keine Aktion vorgenommen. Daher ist es mŚglich, mit dieser Prozedur auch’’’’’’’’’’’’’’N am Ende eines Textes (Position: LENGTH string + 1) ein Zeichen anzufŪgen. ’> #on("b")#INT PROC length (TEXT CONST text) #off("b")# ’’’’’N Anzahl von Zeichen ("LŁnge") von 'text' einschlieūlich Leerzeichen. ’’’’’’’> #on("b")#INT OP LENGTH (TEXT CONST text) #off("b")# ’’’’’’’N Anzahl von Zeichen ("LŁnge") von 'text' einschlieūlich Leerzeichen. ’’’’’’’'max text length' ’’’’’’’’’’’’> #on("b")#INT CONST max text length #off("b")# ’’’’’’’’’’’’’> Maximale Anzahl von Zeichen in einem TEXT (32 000). ’’’’’’’N #on("b")#INT PROC pos (TEXT CONST quelle, pattern) #off("b")# ’’’’’’’’’’’’’^ Liefert die erste Position des ersten Zeichens von 'pattern' in 'quelle', falls 'patŻ’’’’’’^ tern' gefunden wird. Wird 'pattern' nicht gefunden oder ist 'pattern' niltext, so wird’’’’’. der Wert '0' geliefert. Beispiel: ’’’’’’’’’. TEXT VAR t1 :: "abcdefghijk...xyz", ’’ t2 :: "cd"; ’. ... pos (t1, t2) ... (* liefert 3 *) ’. ... pos (t2, t1) ... (* liefert 0 *) ’^ #on("b")#INT PROC pos (TEXT CONST quelle, pattern, INT CONST von)#off("b")# ’’’’’’’’’’’’’’’^ Wie obige Prozedur, jedoch wird erst ab der Position 'von' ab gesucht. Dabei gilt’’’’’’’’’’ folgende EinschrŁnkung: ’’’. length (pattern) < 255 ’’’’’’’’’’’’’’’^ #on("b")#INT PROC pos (TEXT CONST quelle, low char, high char, INT CONST von#off("b")# ’’’’^ Liefert die Position des ersten Zeichens 'x' in 'quelle' ab der Position 'von', so daū ’’’’. low char <= x <= high char ’’’’’’’’’’’^ 'low char' und 'high char' mŪssen TEXTe der LŁnge 1 sein. Wird kein Zeichen in’’’’’’’’’’’’’^ 'quelle' in dem Bereich zwischen 'low char' und 'high char' gefunden, wird der’’’’’’’’’’’’’. Wert '0' geliefert. Beispiel: ’’’’’’’’’’’’’N____________________________________________________________________________ ’N (*Suche nach dem ersten Zeichen <> blank nach einer Leerspalte*) ’’’’’’’’’’’’> TEXT VAR zeile :: "BlaBla Hier gehts weiter"; ’’’’’’’> INT VAR pos erstes blank :: pos (zeile, " "), ’’’’’’’’’’’’’ ende leerspalte :: ’’’’’’’> pos (zeile, ""33"",""254"", pos erstes blank); ’’’’’’N____________________________________________________________________________ ’> #on("b")#REAL PROC real (TEXT CONST text) #off("b")# ’’’’’’^ Konvertierung eines TEXTes 'text' in einen REAL-Wert. Achtung: Zur Zeit werden’’’’’’’’’’’’’N keine ŲberprŪfungen vorgenommen, d.h. in dem TEXT muū ein REAL-Wert’’’’’’’’^ #on("b")#PROC replace (TEXT VAR senke, INT CONST position, TEXT CONST quelle)#off("b")# ’’’^ Ersetzung eines Teiltextes qØ’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ø’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃØ’+’’’’’’’’’’’’’’’’’’’©’M’’’’’’’’’’’’’’’’’’’Q©’O’’’’’’’’’’’’’’’’’’’±©’P’’’’’’’’’’’’’’’’’’’Ŗ’5’’’’’’’’’’’’’’’’’’’QŖ’e’’’’’’’’’’’’’’’’’’’ĮŖ’L’’’’’’’’’’’’’’’’’’’«’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1«’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’«’,’’’’’’’’’’’’’’’’’’’±«’M’’’’’’’’’’’’’’’’’’’¬’O’’’’’’’’’’’’’’’’’’’a¬’Q’’’’’’’’’’’’’’’’’’’Į¬’5’’’’’’’’’’’’’’’’’’’­’e’’’’’’’’’’’’’’’’’’’q­’L’’’’’’’’’’’’’’’’’’’Į­’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į­’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1®’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q®’h’’’’’’’’’’’’’’’’’’’į®’D’’’’’’’’’’’’’’’’’’’1Æ’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Æ’9’’’’’’’’’’’’’’’’’’’ĮÆ’O’’’’’’’’’’’’’’’’’’’!°’S’’’’’’’’’’’’’’’’’’’°’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į°’’’’’’’’’’’’’’’’’’’’’’#foot# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į°’j’’’’’’’’’’’’’’’’’’’Q±’l’’’’’’’’’’’’’’’’’’’Į±’W’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!²’;’’’’’’’’’’’’’’’’’’’a²’S’’’’’’’’’’’’’’’’’’’Į²’O’’’’’’’’’’’’’’’’’’’!³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A³’^’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”³’:’’’’’’’’’’’’’’’’’’’į³’U’’’’’’’’’’’’’’’’’’’A“’O’’’’’’’’’’’’’’’’’’’”“’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į“’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į“’3’’’’’’’’’’’’’’’’’’’!µ’P’’’’’’’’’’’’’’’’’’’µ’V’’’’’’’’’’’’’’’’’’’įµ’P’’’’’’’’’’’’’’’’’’’A¶’Q’’’’’’’’’’’’’’’’’’’”¶’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į¶’`’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1·’2’’’’’’’’’’’’’’’’’’’q·’O’’’’’’’’’’’’’’’’’’’Ń·’b’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aø’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ø’3’’’’’’’’’’’’’’’’’’’Įø’L’’’’’’’’’’’’’’’’’’’¹’h’’’’’’’’’’’’’’’’’’’¹’P’’’’’’’’’’’’’’’’’’’į¹’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŗ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aŗ’-’’’’’’’’’’’’’’’’’’’qŗ’L’’’’’’’’’’’’’’’’’’’Įŗ’M’’’’’’’’’’’’’’’’’’’»’S’’’’’’’’’’’’’’’’’’’q»’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘»’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń»’+’’’’’’’’’’’’’’’’’’’¼’R’’’’’’’’’’’’’’’’’’’a¼’N’’’’’’’’’’’’’’’’’’’±¼’I’’’’’’’’’’’’’’’’’’’½’P’’’’’’’’’’’’’’’’’’’a½’P’’’’’’’’’’’’’’’’’’’Į½’N’’’’’’’’’’’’’’’’’’’¾’U’’’’’’’’’’’’’’’’’’’q¾’e’’’’’’’’’’’’’’’’’’’į¾’R’’’’’’’’’’’’’’’’’’’Aæ’P’’’’’’’’’’’’’’’’’’’”æ’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńæ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ą’-’’’’’’’’’’’’’’’’’’’AĄ’a’’’’’’’’’’’’’’’’’’’±Ą’Q’’’’’’’’’’’’’’’’’’’Į’O’’’’’’’’’’’’’’’’’’’qĮ’W’’’’’’’’’’’’’’’’’’’ŃĮ’N’’’’’’’’’’’’’’’’’’’!Ā’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qĀ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ā’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĀ’>’’’’’’’’’’’’’’’’’’’Ć’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QĆ’N’’’’’’’’’’’’’’’’’’’”Ć’R’’’’’’’’’’’’’’’’’’’Ä’P’’’’’’’’’’’’’’’’’’’aÄ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ä’4’’’’’’’’’’’’’’’’’’’ŃÄ’P’’’’’’’’’’’’’’’’’’’1Å’S’’’’’’’’’’’’’’’’’’’‘Å’N’’’’’’’’’’’’’’’’’’’įÅ’Q’’’’’’’’’’’’’’’’’’’AĘ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ę’?’’’’’’’’’’’’’’’’’’’ŃĘ’M’’’’’’’’’’’’’’’’’’’!Ē’I’’’’’’’’’’’’’’’’’’’qĒ’N’’’’’’’’’’’’’’’’’’’ĮĒ’Q’’’’’’’’’’’’’’’’’’’!Č’S’’’’’’’’’’’’’’’’’’’Č’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įČ’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!É’N’’’’’’’’’’’’’’’’’’’qÉ’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃÉ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ź’R’’’’’’’’’’’’’’’’’’’aŹ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ź’*’’’’’’’’’’’’’’’’’’’ĮŹ’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŹ’’’’’’’’’’’’’’’’’’’’Ė’)’’’’’’’’’’’’’’’’’’’1Ė’)’’’’’’’’’’’’’’’’’’’aĖ’*’’’’’’’’’’’’’’’’’’’‘Ė’+’’’’’’’’’’’’’’’’’’’ĮĖ’.’’’’’’’’’’’’’’’’’’’ńĖ’+’’’’’’’’’’’’’’’’’’’!Ģ’)’’’’’’’’’’’’’’’’’’’QĢ’)’’’’’’’’’’’’’’’’’’’Ģ’/’’’’’’’’’’’’’’’’’’’ĮĢ’.’’’’’’’’’’’’’’’’’’’ńĢ’,’’’’’’’’’’’’’’’’’’’!Ķ’0’’’’’’’’’’’’’’’’’’’aĶ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ķ’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įĶ’X’’’’’’’’’’’’’’’’’’’AĪ’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ī’’’’’’’’’’’’’’’’’’’’±Ī’V’’’’’’’’’’’’’’’’’’’Ļ’’’’’’’’’’’’’’’’’’’’1Ļ’>’’’’’’’’’’’’’’’’’’’qĻ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ļ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĻ’?’’’’’’’’’’’’’’’’’’’AŠ’?’’’’’’’’’’’’’’’’’’’‘Š’?’’’’’’’’’’’’’’’’’’’įŠ’?’’’’’’’’’’’’’’’’’’’1Ń’?’’’’’’’’’’’’’’’’’’’Ń’?’’’’’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŃ’’’’’’’’’’’’’’’’’’’’ńŃ’ ’’’’’’’’’’’’’’’’’’’!Ņ’’’’’’’’’’’’’’’’’’’’QŅ’ ’’’’’’’’’’’’’’’’’’’Ņ’ ’’’’’’’’’’’’’’’’’’’±Ņ’'’’’’’’’’’’’’’’’’’’’įŅ’*’’’’’’’’’’’’’’’’’’’Ó’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AÓ’1’’’’’’’’’’’’’’’’’’’Ó’1’’’’’’’’’’’’’’’’’’’ĮÓ’1’’’’’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’Ō’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŌ’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ō’H’’’’’’’’’’’’’’’’’’’įŌ’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Õ’R’’’’’’’’’’’’’’’’’’’‘Õ’’’’’’’’’’’’’’’’’’’’ĮÕ’’’’’’’’’’’’’’’’’’’’įÕ’’’’’’’’’’’’’’’’’’’’Ö’’’’’’’’’’’’’’’’’’’’!Ö’’’’’’’’’’’’’’’’’’’’QÖ’$’’’’’’’’’’’’’’’’’’’Ö’#’’’’’’’’’’’’’’’’’’’±Ö’[’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FONT . . . ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’×’’’’’’’’’’’’’’’’’’’’1×’’’’’’’’’’’’’’’’’’’’Q×’’’’’’’’’’’’’’’’’’’’q×’>’’’’’’’’’’’’’’’’’’’±×’>’’’’’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń×’’’’’’’’’’’’’’’’’’’’Ų’I’’’’’’’’’’’’’’’’’’’aŲ’I’’’’’’’’’’’’’’’’’’’±Ų’1’’’’’’’’’’’’’’’’’’’ńŲ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ł’Y’’’’’’’’’’’’’’’’’’’‘Ł’Y’’’’’’’’’’’’’’’’’’’ńŁ’Y’’’’’’’’’’’’’’’’’’’QŚ’Y’’’’’’’’’’’’’’’’’’’±Ś’Y’’’’’’’’’’’’’’’’’’’Ū’Y’’’’’’’’’’’’’’’’’’’qŪ’Y’’’’’’’’’’’’’’’’’’’ŃŪ’Y’’’’’’’’’’’’’’’’’’’1Ü’Y’’’’’’’’’’’’’’’’’’’‘Ü’Y’’’’’’’’’’’’’’’’’’’ńÜ’Y’’’’’’’’’’’’’’’’’’’QŻ’Y’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ż’Y’’’’’’’’’’’’’’’’’’’Ž’’’’’’’’’’’’’’’’’’’’AŽ’’’’’’’’’’’’’’’’’’’’qŽ’'’’’’’’’’’’’’’’’’’’’”Ž’4’’’’’’’’’’’’’’’’’’’įŽ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ß’5’’’’’’’’’’’’’’’’’’’Aß’ ’’’’’’’’’’’’’’’’’’’qß’ ’’’’’’’’’’’’’’’’’’’”ß’(’’’’’’’’’’’’’’’’’’’Ńß’8’’’’’’’’’’’’’’’’’’’ą’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aą’’’’’’’’’’’’’’’’’’’’aą’ ’’’’’’’’’’’’’’’’’’’‘ą’ ’’’’’’’’’’’’’’’’’’’Įą’(’’’’’’’’’’’’’’’’’’’ńą’ ’’’’’’’’’’’’’’’’’’’!į’’’’’’’’’’’’’’’’’’’’Qį’_’’’’’’’’’’’’’’’’’’’Įį’X’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ā’’’’’’’’’’’’’’’’’’’’Qā’ ’’’’’’’’’’’’’’’’’’’ā’ ’’’’’’’’’’’’’’’’’’’±ā’ ’’’’’’’’’’’’’’’’’’’įā’5’’’’’’’’’’’’’’’’’’’!ć’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qć’’’’’’’’’’’’’’’’’’’’qć’’’’’’’’’’’’’’’’’’’’‘ć’’’’’’’’’’’’’’’’’’’’’’ . . . ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ć’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńć’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’in 'senke' durch 'quelle' an der Position 'position' in’’’’’’’’’ 'senke'. Es muū gelten ’’’’. 1 <= position <= LENGTH senke ’’’’’’’’^ d.h. 'position' muū innerhalb von 'senke' liegen und 'quelle' muū von der PosiŻ’’’’’’’’’’’’^ tion 'position' ab in 'senke' einsetzbar sein. Dabei bleibt die LŁnge von 'senke'’’’’’’’’’’ unverŁndert. ’’’’’’’’’’’’’’N #on("b")#TEXT OP SUB (TEXT CONST text, INT CONST pos) #off("b")# ’’’’’’’’’’N Liefert ein Zeichen aus 'text' an der Position 'pos'. Entspricht ’’’’’’’’’’. subtext (text, pos, pos) ’’’’’’’’’’’’’> Anmerkung: Effizienter als obiger Prozedur-Aufruf. FŪr ’’’’ pos <= 0 ’’’’’’’’’’’’’ pos > LENGTH text ’’’’ wird niltext geliefert. ’’’N #on("b")#TEXT PROC subtext (TEXT CONST quelle, INT CONST von) #off("b")# ’’^ Teiltext von 'quelle', der bei der Position 'von' anfŁngt. Die LŁnge des Resultats’’’’’’’’’ ergibt sich also zu ’’’’’’’. LENGTH quelle - von + 1 ’’’’’’’’’’’’’’^ d.h. von der Position 'von' bis zum Ende von 'quelle'. 'von' muū innerhalb von’’’’’’’’’’’’’^ 'quelle' liegen. Ist von < 1, dann wird 'quelle' geliefert. Falls von > LENGTH’’’’’’’’’’’’’. quelle ist, wird niltext geliefert. ’’’’’’’^ #on("b")#TEXT PROC subtext (TEXT CONST quelle, INT CONST von, bis)#off("b")# ’’’’’’’’’’’’’’^ Teiltext von 'quelle' von der Position 'von' bis einschlieūlich der Position 'bis'. Die’’’’. LŁnge des Resultats ist also ’’’’’’’’’’’’’’ bis - von + 1 ’’’’’’’ Dabei muū gelten ’’’’’’’’’’. 1 <= von <= bis <= LENGTH quelle ’’’’’^ d.h. die Positionen 'von' und 'bis' mŪssen in dieser Reihenfolge innerhalb von’’’’’’’’’’’’’ 'quelle' liegen. Ist ’’’’’’ bis >= LENGTH quelle ’^ wird 'subtext (quelle, von)' ausgefŪhrt. FŪr die Bedingungen fŪr 'von' siehe vorŻ’’’’’’’’’’. stehende Beschreibung von 'subtext'. ’’’’’’N #on("b")#TEXT PROC text (TEXT CONST quelle, INT CONST laenge) #off("b")# ’’^ Teiltext aus 'quelle' mit der LŁnge 'laenge', beginnend bei der Position 1 von’’’’’’’’’’’’’ 'quelle'. Es muū gelten ’’’. 1 <= laenge <= LENGTH quelle ’’’N d.h. der gewŪnschte Teiltext muū aus 'quelle' ausblendbar sein. ’’’’’’’’’’’ Wenn gilt: . laenge > LENGTH quelle ’’’’’’’’’’’’’’’^ wird der zu liefernde TEXT mit der an 'laenge' fehlenden Zeichen mit Leerzeichen’’’’’’’’’’’ aufgefŪllt. ’’’’’’’’’’’’’’’^ #on("b")#TEXT PROC text (TEXT CONST quelle, INT CONST laenge, von)#off("b")# ’’’’’’’’’’’’’’^ Teiltext aus 'quelle' mit der LŁnge 'laenge', beginnend an der Position 'von' in’’’’’’’’’’’. dem TEXT 'quelle'. Entspricht ’’’’’’’’’’’’’> text (subtext (quelle, von, LENGTH quelle),laenge) ’’’ laenge >= 0 ’’’’’’’’’’. 1 <= von <= LENGTH quelle ’’’’’’’’’’’’^ gelten, d.h. 'von' muū eine Position angeben, die innerhalb von 'quelle' liegt. FŪr ’’’’’’’. laenge > LENGTH quelle - von + 1 ’’’’’^ also wenn die angegebene LŁnge 'laenge' grŚūer ist als der auszublendende Text,’’’’’’’’’’’’> wird das Resultat rechts mit Leerzeichen aufgefŪllt. Wenn ’. laenge < LENGTH quelle - von + 1 ’’’’’^ d.h. wenn die angegebene LŁnge kleiner ist als der Teiltext von 'von' bis zum’’’’’’’’’’’’’N letzten Zeichen von 'quelle', wird das Resultat mit der LŁnge ’’’’’’’’’’’’. LENGTH quelle - von + 1 ’’’’’’’’’’’’’’ geliefert. ’’’’’’’’’’’’’’’programmierhandbuch.5’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.5b’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ø€’’’’’’’’’’’’’’’ü’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²ca€ė’’ĖČH’’’’HHĢM’’’’’c’ kap5ff’’’’’’a€’’’’’’’’’’’’Ė’’’’’’’’’’’’’’’’’’q€’0’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’±€’’’’’’’’’’’’’’’’’’’’ဒE’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’1’ ’’’’’’’’’’’’’’’’’’’a’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’±’E’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomodd# ’’’’’’’’’!‚’E’’’’’’’’’’’’’’’’’’’q‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‚’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į‚’T’’’’’’’’’’’’’’’’’’’!ƒ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aƒ’;’’’’’’’’’’’’’’’’’’’”ƒ’?’’’’’’’’’’’’’’’’’’’ńƒ’I’’’’’’’’’’’’’’’’’’’A„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a„’O’’’’’’’’’’’’’’’’’’’Į„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į„’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1…’A’’’’’’’’’’’’’’’’’’’…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”…’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į…’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1†’P’’’’’’’’’’’’’’’’’’’‘†’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ᆒt’’’’’’’’’’’’’’’’’’’a‡’O’’’’’’’’’’’’’’’’’’’Į‡’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ᇒ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ˆ’’’’’’’’’’’’’’’’’’’’!ˆ’c’’’’’’’’’’’’’’’’’’’‘ˆ’R’’’’’’’’’’’’’’’’’’’ńˆ’U’’’’’’’’’’’’’’’’’’’Q‰’N’’’’’’’’’’’’’’’’’’’”‰’O’’’’’’’’’’’’’’’’’’’Š’O’’’’’’’’’’’’’’’’’’’aŠ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Š’_’’’’’’’’’’’’’’’’’’’ńŠ’P’’’’’’’’’’’’’’’’’’’Q‹’X’’’’’’’’’’’’’’’’’’’±‹’W’’’’’’’’’’’’’’’’’’’Œ’B’’’’’’’’’’’’’’’’’’’aŒ’K’’’’’’’’’’’’’’’’’’’’’ tet. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Œ’"’’’’’’’’’’’’’’’’’’’ጒQ’’’’’’’’’’’’’’’’’’’A’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'input' ’’’’’’’’’’’’’a’/’’’’’’’’’’’’’’’’’’’”’T’’’’’’’’’’’’’’’’’’’Ž’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ž’5’’’’’’’’’’’’’’’’’’’qŽ’T’’’’’’’’’’’’’’’’’’’ю’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'output' ’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’Q’W’’’’’’’’’’’’’’’’’’’±’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’6’’’’’’’’’’’’’’’’’’’!’U’’’’’’’’’’’’’’’’’’’’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aä’’’’’’’’’’’’’’’’’’’’aä’0’’’’’’’’’’’’’’’’’’’”ä’T’’’’’’’’’’’’’’’’’’’å’Q’’’’’’’’’’’’’’’’’’’aå’S’’’’’’’’’’’’’’’’’’’Įå’-’’’’’’’’’’’’’’’’’’’ńå’V’’’’’’’’’’’’’’’’’’’Qę’S’’’’’’’’’’’’’’’’’’’±ę’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńę’’’’’’’’’’’’’’’’’’’’ńę’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ē’’’’’’’’’’’’’’’’’’’’Qē’’’’’’’’’’’’’’’’’’’’qē’Z’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńē’’’’’’’’’’’’’’’’’’’’ńē’’’’’’’’’’’’’’’’’’’’č’Y’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qč’1’’’’’’’’’’’’’’’’’’’±č’e’’’’’’’’’’’’’’’’’’’!é’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qé’’’’’’’’’’’’’’’’’’’’‘é’0’’’’’’’’’’’’’’’’’’’Ńé’L’’’’’’’’’’’’’’’’’’’!ź’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aź’3’’’’’’’’’’’’’’’’’’’ź’M’’’’’’’’’’’’’’’’’’’Ńź’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńź’’’’’’’’’’’’’’’’’’’’ė’0’’’’’’’’’’’’’’’’’’’Qė’L’’’’’’’’’’’’’’’’’’’”ė’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įė’3’’’’’’’’’’’’’’’’’’’ģ’M’’’’’’’’’’’’’’’’’’’Qģ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qģ’’’’’’’’’’’’’’’’’’’’‘ģ’2’’’’’’’’’’’’’’’’’’’Ńģ’Q’’’’’’’’’’’’’’’’’’’1ķ’M’’’’’’’’’’’’’’’’’’’ķ’#’’’’’’’’’’’’’’’’’’’±ķ’’’’’’’’’’’’’’’’’’’’Ńķ’!’’’’’’’’’’’’’’’’’’’ī’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ī’’’’’’’’’’’’’’’’’’’’Qī’3’’’’’’’’’’’’’’’’’’’‘ī’Q’’’’’’’’’’’’’’’’’’’ńī’N’’’’’’’’’’’’’’’’’’’Aļ’#’’’’’’’’’’’’’’’’’’’qļ’’’’’’’’’’’’’’’’’’’’‘ļ’!’’’’’’’’’’’’’’’’’’’Įļ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#font#ie# ’’’’’’’’ńļ’*’’’’’’’’’’’’’’’’’’’!š’L’’’’’’’’’’’’’’’’’’’qš’P’’’’’’’’’’’’’’’’’’’Ńš’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ń’)’’’’’’’’’’’’’’’’’’’Qń’N’’’’’’’’’’’’’’’’’’’”ń’O’’’’’’’’’’’’’’’’’’’ņ’V’’’’’’’’’’’’’’’’’’’aņ’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ņ’’’’’’’’’’’’’’’’’’’’Įņ’2’’’’’’’’’’’’’’’’’’’ó’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qó’!’’’’’’’’’’’’’’’’’’’ó’=’’’’’’’’’’’’’’’’’’’Įó’E’’’’’’’’’’’’’’’’’’’ō’O’’’’’’’’’’’’’’’’’’’qō’O’’’’’’’’’’’’’’’’’’’Ńō’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńō’ ’’’’’’’’’’’’’’’’’’’!õ’<’’’’’’’’’’’’’’’’’’’aõ’C’’’’’’’’’’’’’’’’’’’±õ’N’’’’’’’’’’’’’’’’’’’ö’O’’’’’’’’’’’’’’’’’’’aö’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ö’’’’’’’’’’’’’’’’’’’’”ö’4’’’’’’’’’’’’’’’’’’’įö’X’’’’’’’’’’’’’’’’’’’A÷’S’’’’’’’’’’’’’’’’’’’”÷’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń÷’’’’’’’’’’’’’’’’’’’’ń÷’,’’’’’’’’’’’’’’’’’’’!ų’P’’’’’’’’’’’’’’’’’’’ų’N’’’’’’’’’’’’’’’’’’’Ńų’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ł’’’’’’’’’’’’’’’’’’’’!ł’.’’’’’’’’’’’’’’’’’’’Qł’R’’’’’’’’’’’’’’’’’’’±ł’T’’’’’’’’’’’’’’’’’’’ś’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ś’’’’’’’’’’’’’’’’’’’’Qś’-’’’’’’’’’’’’’’’’’’’ś’W’’’’’’’’’’’’’’’’’’’įś’R’’’’’’’’’’’’’’’’’’’Aū’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aū’’’’’’’’’’’’’’’’’’’’ū’/’’’’’’’’’’’’’’’’’’’Įū’R’’’’’’’’’’’’’’’’’’’!ü’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qü’’’’’’’’’’’’’’’’’’’’‘ü’-’’’’’’’’’’’’’’’’’’’Įü’P’’’’’’’’’’’’’’’’’’’!ż’N’’’’’’’’’’’’’’’’’’’qż’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ż’’’’’’’’’’’’’’’’’’’’±ż’/’’’’’’’’’’’’’’’’’’’ńż’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ž’’’’’’’’’’’’’’’’’’’’Až’>’’’’’’’’’’’’’’’’’’’ž’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įž’’’’’’’’’’’’’’’’’’’’’’@’’’’’’’’’’’’’’’’’’’Q’’S’’’’’’’’’’’’’’’’’’’±’’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’’’’’’’’’’’’’’’’’’’’’’(’’’’’’’’’’’’’’’’’’’2’T’’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’Ņ’M’’’’’’’’’’’’’’’’’’’"’R’’’’’’’’’’’’’’’’’’’‚’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’ā’0’’’’’’’’’’’’’’’’’’’"’4’’’’’’’’’’’’’’’’’’’b’@’’’’’’’’’’’’’’’’’’’²’Q’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’r’S’’’’’’’’’’’’’’’’’’’Ņ’P’’’’’’’’’’’’’’’’’’’2’T’’’’’’’’’’’’’’’’’’’’’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’ņ’B’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’b’F’’’’’’’’’’’’’’’’’’’²’6’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’’ FI. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’i’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’+’’’’’’’’’’’’’’’’’’’²’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’B’Q’’’’’’’’’’’’’’’’’’’¢’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’%’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’R’[’’’’’’’’’’’’’’’’’’’²’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’"’’’’’’’’’’’’’’’’’’’ ’C’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚ ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’² ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā ’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’b’’’’’’’’’’’’’’’’’’’‚ ’Z’’’’’’’’’’’’’’’’’’’ā ’Q’’’’’’’’’’’’’’’’’’’B ’V’’’’’’’’’’’’’’’’’’’¢ ’S’’’’’’’’’’’’’’’’’’’ ’M’’’’’’’’’’’’’’’’’’’R ’Q’’’’’’’’’’’’’’’’’’’² ’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2 ’N’’’’’’’’’’’’’’’’’’’‚ ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā ’’’’’’’’’’’’’’’’’’’’ā ’=’’’’’’’’’’’’’’’’’’’"’Q’’’’’’’’’’’’’’’’’’’‚’T’’’’’’’’’’’’’’’’’’’ā’Q’’’’’’’’’’’’’’’’’’’B’P’’’’’’’’’’’’’’’’’’’¢’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’&’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’’’’’’’’’’’’’’’’’’’’’)’’’’’’’’’’’’’’’’’’’2’N’’’’’’’’’’’’’’’’’’’‚’0’’’’’’’’’’’’’’’’’’’Ā’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’"’N’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²’'’’’’’’’’’’’’’’’’’’’ā’T’’’’’’’’’’’’’’’’’’’B’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’Ā’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’B’/’’’’’’’’’’’’’’’’’’’‚’P’’’’’’’’’’’’’’’’’’’ā’P’’’’’’’’’’’’’’’’’’’B’P’’’’’’’’’’’’’’’’’’’¢’O’’’’’’’’’’’’’’’’’’’’.’’’’’’’’’’’’’’’’’’’2’O’’’’’’’’’’’’’’’’’’’’’Q’’’’’’’’’’’’’’’’’’’ņ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’"’’’’’’’’’’’’’’’’’’’R’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’Ā’-’’’’’’’’’’’’’’’’’’’ņ’K’’’’’’’’’’’’’’’’’’’B’R’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’ā’#’’’’’’’’’’’’’’’’’’’’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’‚’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’f’’’’’’’’’’’’’’’’’’’B’Q’’’’’’’’’’’’’’’’’’’¢’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’O’’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’ņ’S’’’’’’’’’’’’’’’’’’’R’O’’’’’’’’’’’’’’’’’’’²’L’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#stop#ie# ’’’’’’’’r’P’’’’’’’’’’’’’’’’’’’Ņ’O’’’’’’’’’’’’’’’’’’’2’Q’’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’ņ’P’’’’’’’’’’’’’’’’’’’R’P’’’’’’’’’’’’’’’’’’’²’Q’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2 ’P’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#halt#ie# ’’’’’’’’’ ’P’’’’’’’’’’’’’’’’’’’ņ ’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B!’’’’’’’’’’’’’’’’’’’’R!’T’’’’’’’’’’’’’’’’’’’²!’S’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'modify' ’’’’’’’’’’’’Į’0’’’’’’’’’’’’’’’’’’’‘’U’’’’’’’’’’’’’’’’’’’’’ dify'. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a‘’6’’’’’’’’’’’’’’’’’’’”‘’O’’’’’’’’’’’’’’’’’’’’’Q’’’’’’’’’’’’’’’’’’’a’’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‘’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'eof' ’’’’’’’’’’’’’’’±’’7’’’’’’’’’’’’’’’’’’’ń’’O’’’’’’’’’’’’’’’’’’’Q“’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'line no' ’’’’’’’’’’’‘“’:’’’’’’’’’’’’’’’’’’’ѓ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'lines' ’’’’’’’’’’’’’”’/’’’’’’’’’’’’’’’’’’’A”’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'headline' ’’’’’’’’’’”’9’’’’’’’’’’’’’’’’’’’Į”’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’•’K’’’’’’’’’’’’’’’’’’’Q•’@’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”•’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ѕ’V’’’’’’’’’’’’’’’’’’’1–’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q–’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’і’M’’’’’’’’’’’’’’’’’’’!—’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'get' ’’’’’’’’’’’’’’’A—’=’’’’’’’’’’’’’’’’’’’—’N’’’’’’’’’’’’’’’’’’’ї’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń—’>’’’’’’’’’’’’’’’’’’’1˜’N’’’’’’’’’’’’’’’’’’’˜’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”˜’<’’’’’’’’’’’’’’’’’’’ᘒ0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!™’Q’’’’’’’’’’’’’’’’’’’™’P’’’’’’’’’’’’’’’’’’’į™’S’’’’’’’’’’’’’’’’’’’’’ gen. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aš’P’’’’’’’’’’’’’’’’’’’”š’P’’’’’’’’’’’’’’’’’’’›’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'getline' ’’’’’’’’’’’Q›’F’’’’’’’’’’’’’’’’’’’”›’@’’’’’’’’’’’’’’’’’’’ń›’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1œ’’’’’’’’’’’’’’’’’’’’Qœ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”œ’)’’’’’’’’’’’’’’’’’’’ќ’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’*’’’’’’’’’’’’’’’’’’’Q’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ń’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ž’V’’’’’’’’’’’’’’’’’’’ž’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įž’T’’’’’’’’’’’’’’’’’’’!Ÿ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŸ’U’’’’’’’’’’’’’’’’’’’”Ÿ’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'put' ’’’’’’’’’’’’’’’្?’’’’’’’’’’’’’’’’’’’1 ’Q’’’’’’’’’’’’’’’’’’’‘ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’± ’@’’’’’’’’’’’’’’’’’’’”’O’’’’’’’’’’’’’’’’’’’a”’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘”’>’’’’’’’’’’’’’’’’’’’Ń”’S’’’’’’’’’’’’’’’’’’’1¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'putline' ’’’’’’’’’’’Q¢’G’’’’’’’’’’’’’’’’’’’”¢’Q’’’’’’’’’’’’’’’’’’’£’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'write' ’’’’’’’’’’’’’Q£’@’’’’’’’’’’’’’’’’’’’”£’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'line' ’’’’’’’’’’’’’’¤’1’’’’’’’’’’’’’’’’’’’A¤’V’’’’’’’’’’’’’’’’’’’”¤’U’’’’’’’’’’’’’’’’’’’’’ men. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’„’B’’’’’’’’’’’’’’’’’’’Q„’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”„’’’’’’’’’’’’’’’’’’’’Į„’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¦’,’’’’’’’’’’’’’’’’’’’A¦’J’’’’’’’’’’’’’’’’’’’‘¦’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±¦’R’’’’’’’’’’’’’’’’’’’§’U’’’’’’’’’’’’’’’’’’’q§’V’’’’’’’’’’’’’’’’’’’ѧ’R’’’’’’’’’’’’’’’’’’’1Ø’*’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’aØ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ø’P’’’’’’’’’’’’’’’’’’’ńØ’U’’’’’’’’’’’’’’’’’’’Q©’T’’’’’’’’’’’’’’’’’’’±©’P’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ŗ’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŖ’X’’’’’’’’’’’’’’’’’’’ĮŖ’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'col' ’’’’’’’’’’’’’’’«’A’’’’’’’’’’’’’’’’’’’Q«’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”«’3’’’’’’’’’’’’’’’’’’’į«’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'down' ’’’’’’’’’’’’’’1¬’.’’’’’’’’’’’’’’’’’’’a¬’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘¬’@’’’’’’’’’’’’’’’’’’’ᬒ.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'to line' ’’’’’’’’’’’­’C’’’’’’’’’’’’’’’’’’’a­’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'up' ’’’’’’’’’’’’’’’’‘­’,’’’’’’’’’’’’’’’’’’’Į­’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń­’>’’’’’’’’’’’’’’’’’’’1®’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’q®’’’’’’’’’’’’’’’’’’’’‘®’:’’’’’’’’’’’’’’’’’’’Ń®’X’’’’’’’’’’’’’’’’’’’’’ Satz. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Æ’’’’’’’’’’’’’’’’’’’’QÆ’8’’’’’’’’’’’’’’’’’’’‘Æ’Z’’’’’’’’’’’’’’’’’’’ńÆ’S’’’’’’’’’’’’’’’’’’’Q°’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’°’’’’’’’’’’’’’’’’’’’’‘°’K’’’’’’’’’’’’’’’’’’’į°’T’’’’’’’’’’’’’’’’’’’A±’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a±’’’’’’’’’’’’’’’’’’’’±’L’’’’’’’’’’’’’’’’’’’ѱ’T’’’’’’’’’’’’’’’’’’’1²’U’’’’’’’’’’’’’’’’’’’‘²’P’’’’’’’’’’’’’’’’’’’ń²’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’1³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q³’M’’’’’’’’’’’’’’’’’’’”³’R’’’’’’’’’’’’’’’’’’’“’<’’’’’’’’’’’’’’’’’’’A“’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q“’’’’’’’’’’’’’’’’’’’’‘“’7’’’’’’’’’’’’’’’’’’’Ń“’O’’’’’’’’’’’’’’’’’’’1µ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'reinsert' ’’’’’’’’’’Aµ’2’’’’’’’’’’’’’’’’’’’µ’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'remove' ’’’’’’’’’’’’įµ’@’’’’’’’’’’’’’’’’’’’1¶’U’’’’’’’’’’’’’’’’’’’‘¶’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'reorganize' ’’’’’’’’Į¶’9’’’’’’’’’’’’’’’’’’’·’H’’’’’’’’’’’’’’’’’’’Q·’G’’’’’’’’’’’’’’’’’’’”·’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń·’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aø’&’’’’’’’’’’’’’’’’’’’qø’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'segments' ’’’’’’’’’’±ø’2’’’’’’’’’’’’’’’’’’’ńø’P’’’’’’’’’’’’’’’’’’’Q¹’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¹’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±¹’M’’’’’’’’’’’’’’’’’’’ŗ’P’’’’’’’’’’’’’’’’’’’’’werden. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŗ’S’’’’’’’’’’’’’’’’’’’Įŗ’P’’’’’’’’’’’’’’’’’’’!»’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q»’Q’’’’’’’’’’’’’’’’’’’Ń»’S’’’’’’’’’’’’’’’’’’’1¼’L’’’’’’’’’’’’’’’’’’’¼’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±¼’L’’’’’’’’’’’’’’’’’’’½’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A½’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘½’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ѽ’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!¾’A’’’’’’’’’’’’’’’’’’’q¾’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¾’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ѿ’Q’’’’’’’’’’’’’’’’’’’1æ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aæ’T’’’’’’’’’’’’’’’’’’’Įæ’U’’’’’’’’’’’’’’’’’’’!Ą’Q’’’’’’’’’’’’’’’’’’’Ą’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’±Ą’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'+' ’’’’’’’’’’’’’’’’’2"’S’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’²"’:’’’’’’’’’’’’’’’’’’’ņ"’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2#’’’’’’’’’’’’’’’’’’’’R#’R’’’’’’’’’’’’’’’’’’’²#’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā#’’’’’’’’’’’’’’’’’’’’ņ#’P’’’’’’’’’’’’’’’’’’’R$’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚$’’’’’’’’’’’’’’’’’’’’¢$’N’’’’’’’’’’’’’’’’’’’ņ$’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’%’’’’’’’’’’’’’’’’’’’’2%’N’’’’’’’’’’’’’’’’’’’‚%’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢%’Y’’’’’’’’’’’’’’’’’’’&’S’’’’’’’’’’’’’’’’’’’b&’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#stop#ie# ’’’’’’’’‚&’"’’’’’’’’’’’’’’’’’’’²&’T’’’’’’’’’’’’’’’’’’’'’N’’’’’’’’’’’’’’’’’’’b'’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#halt#ie# ’’’’’’’’’'’"’’’’’’’’’’’’’’’’’’’Ā'’S’’’’’’’’’’’’’’’’’’’"(’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b(’’’’’’’’’’’’’’’’’’’’‚(’+’’’’’’’’’’’’’’’’’’’²(’T’’’’’’’’’’’’’’’’’’’)’O’’’’’’’’’’’’’’’’’’’r)’;’’’’’’’’’’’’’’’’’’’²)’’’’’’’’’’’’’’’’’’’’Ņ)’6’’’’’’’’’’’’’’’’’’’*’O’’’’’’’’’’’’’’’’’’’r*’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’*’’’’’’’’’’’’’’’’’’’’¢*’#’’’’’’’’’’’’’’’’’’’Ņ*’Q’’’’’’’’’’’’’’’’’’’2+’S’’’’’’’’’’’’’’’’’’’’+’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²+’’’’’’’’’’’’’’’’’’’’Ā+’#’’’’’’’’’’’’’’’’’’’ņ+’M’’’’’’’’’’’’’’’’’’’B,’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚,’’’’’’’’’’’’’’’’’’’’¢,’$’’’’’’’’’’’’’’’’’’’Ņ,’N’’’’’’’’’’’’’’’’’’’"-’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R-’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’-’R’’’’’’’’’’’’’’’’’’’ņ-’M’’’’’’’’’’’’’’’’’’’B.’N’’’’’’’’’’’’’’’’’’’’.’P’’’’’’’’’’’’’’’’’’’ņ.’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R/’’’’’’’’’’’’’’’’’’’’r/’’’’’’’’’’’’’’’’’’’’’/’<’’’’’’’’’’’’’’’’’’’Ņ/’,’’’’’’’’’’’’’’’’’’’0’’’’’’’’’’’’’’’’’’’’"0’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B0’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b0’’’’’’’’’’’’’’’’’’’’r0’’’’’’’’’’’’’’’’’’’’’0’ ’’’’’’’’’’’’’’’’’’’Ā0’&’’’’’’’’’’’’’’’’’’’ņ0’/’’’’’’’’’’’’’’’’’’’21’2’’’’’’’’’’’’’’’’’’’r1’;’’’’’’’’’’’’’’’’’’’²1’’’’’’’’’’’’’’’’’’’’Ņ1’’’’’’’’’’’’’’’’’’’’ņ1’.’’’’’’’’’’’’’’’’’’’’’ PER; ’’’’’’’’’’’’"2’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B2’’’’’’’’’’’’’’’’’’’’b2’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚2’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā2’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’3’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B3’R’’’’’’’’’’’’’’’’’’’¢3’R’’’’’’’’’’’’’’’’’’’4’O’’’’’’’’’’’’’’’’’’’b4’S’’’’’’’’’’’’’’’’’’’Ā4’h’’’’’’’’’’’’’’’’’’’25’O’’’’’’’’’’’’’’’’’’’’5’f’’’’’’’’’’’’’’’’’’’6’J’’’’’’’’’’’’’’’’’’’R6’\’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²6’’’’’’’’’’’’’’’’’’’’Ņ6’’’’’’’’’’’’’’’’’’’’ņ6’’’’’’’’’’’’’’’’’’’’7’’’’’’’’’’’’’’’’’’’’27’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’... ’’’’’’’’’’’’’’’’’R7’’’’’’’’’’’’’’’’’’’’r7’%’’’’’’’’’’’’’’’’’’’¢7’.’’’’’’’’’’’’’’’’’’’Ņ7’’’’’’’’’’’’’’’’’’’’ņ7’'’’’’’’’’’’’’’’’’’’’"8’,’’’’’’’’’’’’’’’’’’’R8’+’’’’’’’’’’’’’’’’’’’‚8’+’’’’’’’’’’’’’’’’’’’²8’=’’’’’’’’’’’’’’’’’’’ņ8’.’’’’’’’’’’’’’’’’’’’’’... ’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"9’S’’’’’’’’’’’’’’’’’’’‚9’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā9’U’’’’’’’’’’’’’’’’’’’":’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b:’*’’’’’’’’’’’’’’’’’’’’:’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā:’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’;’5’’’’’’’’’’’’’’’’’’’R;’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’;’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ;’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"<’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r<’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā<’’’’’’’’’’’’’’’’’’’’ā<’’’’’’’’’’’’’’’’’’’’=’’’’’’’’’’’’’’’’’’’’"=’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B=’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚=’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢=’P’’’’’’’’’’’’’’’’’’’>’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B>’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r>’Y’’’’’’’’’’’’’’’’’’’Ņ>’L’’’’’’’’’’’’’’’’’’’"?’S’’’’’’’’’’’’’’’’’’’‚?’W’’’’’’’’’’’’’’’’’’’ā?’N’’’’’’’’’’’’’’’’’’’2@’M’’’’’’’’’’’’’’’’’’’‚@’Q’’’’’’’’’’’’’’’’’’’ā@’Q’’’’’’’’’’’’’’’’’’’BA’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’A’M’’’’’’’’’’’’’’’’’’’āA’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"B’’’’’’’’’’’’’’’’’’’’BB’P’’’’’’’’’’’’’’’’’’’¢B’S’’’’’’’’’’’’’’’’’’’C’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’:= ’’’’’’’’’’’’’’’’’’RC’6’’’’’’’’’’’’’’’’’’’’C’R’’’’’’’’’’’’’’’’’’’ņC’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2D’’’’’’’’’’’’’’’’’’’’BD’!’’’’’’’’’’’’’’’’’’’rD’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²D’*’’’’’’’’’’’’’’’’’’’āD’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2E’’’’’’’’’’’’’’’’’’’’RE’G’’’’’’’’’’’’’’’’’’’¢E’N’’’’’’’’’’’’’’’’’’’ņE’O’’’’’’’’’’’’’’’’’’’RF’O’’’’’’’’’’’’’’’’’’’²F’L’’’’’’’’’’’’’’’’’’’G’X’’’’’’’’’’’’’’’’’’’bG’N’’’’’’’’’’’’’’’’’’’²G’N’’’’’’’’’’’’’’’’’’’H’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RH’’’’’’’’’’’’’’’’’’’’bH’J’’’’’’’’’’’’’’’’’’’²H’P’’’’’’’’’’’’’’’’’’’I’>’’’’’’’’’’’’’’’’’’’RI’:’’’’’’’’’’’’’’’’’’’’I’’’’’’’’’’’’’’’’’’’’²I’@’’’’’’’’’’’’’’’’’’’J’’’’’’’’’’’’’’’’’’’’"J’=’’’’’’’’’’’’’’’’’’’bJ’)’’’’’’’’’’’’’’’’’’’’J’O’’’’’’’’’’’’’’’’’’’ņJ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BK’’’’’’’’’’’’’’’’’’’’bK’:’’’’’’’’’’’’’’’’’’’¢K’K’’’’’’’’’’’’’’’’’’’ņK’’’’’’’’’’’’’’’’’’’’L’’’’’’’’’’’’’’’’’’’’2L’’’’’’’’’’’’’’’’’’’’RL’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rL’;’’’’’’’’’’’’’’’’’’’²L’L’’’’’’’’’’’’’’’’’’’M’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#in#ie# ’’’’’’’’’’2M’3’’’’’’’’’’’’’’’’’’’rM’U’’’’’’’’’’’’’’’’’’’ŅM’W’’’’’’’’’’’’’’’’’’’2N’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#open#ie# ’’’’’’’’RN’ ’’’’’’’’’’’’’’’’’’’‚N’O’’’’’’’’’’’’’’’’’’’āN’3’’’’’’’’’’’’’’’’’’’"O’’’’’’’’’’’’’’’’’’’’BO’!’’’’’’’’’’’’’’’’’’’rO’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#out#ie# ’’’’’’’’’¢O’3’’’’’’’’’’’’’’’’’’’āO’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #ib#save#ie# ’’’’’’’’2P’@’’’’’’’’’’’’’’’’’’’‚P’N’’’’’’’’’’’’’’’’’’’ŅP’D’’’’’’’’’’’’’’’’’’’"Q’D’’’’’’’’’’’’’’’’’’’rQ’8’’’’’’’’’’’’’’’’’’’²Q’’’’’’’’’’’’’’’’’’’’ŅQ’A’’’’’’’’’’’’’’’’’’’"R’’’’’’’’’’’’’’’’’’’’BR’B’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’²R’P’’’’’’’’’’’’’’’’’’’S’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rS’/’’’’’’’’’’’’’’’’’’’²S’’’’’’’’’’’’’’’’’’’’ŅS’’’’’’’’’’’’’’’’’’’’ņS’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’’2T’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RT’’’’’’’’’’’’’’’’’’’’’’ REP ’’’’’’’’’’’’rT’’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’’²T’’’’’’’’’’’’’’’’’’’’āT’’’’’’’’’’’’’’’’’’’’U’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"U’’’’’’’’’’’’’’’’’’’’BU’’’’’’’’’’’’’’’’’’’’bU’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ŃĄ’<’’’’’’’’’’’’’’’’’’’Į’X’’’’’’’’’’’’’’’’’’’qĮ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĮ’R’’’’’’’’’’’’’’’’’’’!Ā’M’’’’’’’’’’’’’’’’’’’qĀ’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'-' ’’’’’’’’’’’’’’’’’”Ā’7’’’’’’’’’’’’’’’’’’’įĀ’S’’’’’’’’’’’’’’’’’’’AĆ’O’’’’’’’’’’’’’’’’’’’”Ć’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'OR' ’’’’’’’’’’’’’’’’įĆ’=’’’’’’’’’’’’’’’’’’’!Ä’W’’’’’’’’’’’’’’’’’’’Ä’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'any' ’’’’’’’’’’’’’’’”Ä’L’’’’’’’’’’’’’’’’’’’ńÄ’R’’’’’’’’’’’’’’’’’’’QÅ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Å’%’’’’’’’’’’’’’’’’’’’±Å’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įÅ’8’’’’’’’’’’’’’’’’’’’!Ę’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aĘ’;’’’’’’’’’’’’’’’’’’’”Ę’S’’’’’’’’’’’’’’’’’’’Ē’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ē’M’’’’’’’’’’’’’’’’’’’qĒ’N’’’’’’’’’’’’’’’’’’’ĮĒ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĒ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AČ’A’’’’’’’’’’’’’’’’’’’‘Č’>’’’’’’’’’’’’’’’’’’’ŃČ’@’’’’’’’’’’’’’’’’’’’!É’A’’’’’’’’’’’’’’’’’’’qÉ’@’’’’’’’’’’’’’’’’’’’ĮÉ’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ź’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'bound' ’’’’’’’’’’’’’QŹ’'’’’’’’’’’’’’’’’’’’’Ź’R’’’’’’’’’’’’’’’’’’’įŹ’O’’’’’’’’’’’’’’’’’’’AĖ’R’’’’’’’’’’’’’’’’’’’”Ė’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĖ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ģ’A’’’’’’’’’’’’’’’’’’’aĢ’B’’’’’’’’’’’’’’’’’’’±Ģ’?’’’’’’’’’’’’’’’’’’’Ķ’A’’’’’’’’’’’’’’’’’’’QĶ’’’’’’’’’’’’’’’’’’’’aĶ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ķ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ī’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'notion' ’’’’’’’’’’’’1Ī’9’’’’’’’’’’’’’’’’’’’qĪ’d’’’’’’’’’’’’’’’’’’’įĪ’P’’’’’’’’’’’’’’’’’’’AĻ’Y’’’’’’’’’’’’’’’’’’’’’ chen ist. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ļ’H’’’’’’’’’’’’’’’’’’’ńĻ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’1Š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'down' ’’’’’’’’’’’’’’QŠ’A’’’’’’’’’’’’’’’’’’’”Š’S’’’’’’’’’’’’’’’’’’’Ń’U’’’’’’’’’’’’’’’’’’’aŃ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ń’L’’’’’’’’’’’’’’’’’’’įŃ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ņ’R’’’’’’’’’’’’’’’’’’’Ņ’Q’’’’’’’’’’’’’’’’’’’’’ gesucht. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'downety' ’’’’’’’’’’’įŅ’D’’’’’’’’’’’’’’’’’’’1Ó’S’’’’’’’’’’’’’’’’’’’‘Ó’R’’’’’’’’’’’’’’’’’’’ńÓ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ō’N’’’’’’’’’’’’’’’’’’’qŌ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ō’V’’’’’’’’’’’’’’’’’’’Õ’@’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'up' ’’’’’’’’’’’’’’’’aÕ’?’’’’’’’’’’’’’’’’’’’±Õ’N’’’’’’’’’’’’’’’’’’’Ö’S’’’’’’’’’’’’’’’’’’’aÖ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ö’P’’’’’’’’’’’’’’’’’’’ńÖ’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!×’P’’’’’’’’’’’’’’’’’’’×’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'uppety' ’’’’’’’’’’’’Į×’C’’’’’’’’’’’’’’’’’’’Ų’N’’’’’’’’’’’’’’’’’’’aŲ’S’’’’’’’’’’’’’’’’’’’ĮŲ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŲ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŁ’T’’’’’’’’’’’’’’’’’’’”Ł’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ńŁ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'LIKE' ’’’’’’’’’’’’’’Ś’?’’’’’’’’’’’’’’’’’’’aŚ’P’’’’’’’’’’’’’’’’’’’ĮŚ’N’’’’’’’’’’’’’’’’’’’Ū’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ū’H’’’’’’’’’’’’’’’’’’’Ū’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ū’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ü’A’’’’’’’’’’’’’’’’’’’QÜ’&’’’’’’’’’’’’’’’’’’’Ü’@’’’’’’’’’’’’’’’’’’’ŃÜ’!’’’’’’’’’’’’’’’’’’’Ż’#’’’’’’’’’’’’’’’’’’’1Ż’!’’’’’’’’’’’’’’’’’’’aŻ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ż’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ aber: ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įŻ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ž’A’’’’’’’’’’’’’’’’’’’Ž’&’’’’’’’’’’’’’’’’’’’±Ž’A’’’’’’’’’’’’’’’’’’’ß’0’’’’’’’’’’’’’’’’’’’Aß’3’’’’’’’’’’’’’’’’’’’ß’3’’’’’’’’’’’’’’’’’’’Įß’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ą’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'UNLIKE' ’’’’’’’’’’’’Qą’A’’’’’’’’’’’’’’’’’’’”ą’'’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńą’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńą’W’’’’’’’’’’’’’’’’’’’Qį’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'**' ’’’’’’’’’’’’’’’’į’I’’’’’’’’’’’’’’’’’’’Ńį’Q’’’’’’’’’’’’’’’’’’’1ā’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'match' ’’’’’’’’’’’’’ā’6’’’’’’’’’’’’’’’’’’’Įā’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'matchpos' ’’’’’’’’’’ć’<’’’’’’’’’’’’’’’’’’’Qć’O’’’’’’’’’’’’’’’’’’’±ć’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńć’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ä’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qä’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įä’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’å’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'change' ’’’’’’’’’’’’1å’^’’’’’’’’’’’’’’’’’’’‘å’V’’’’’’’’’’’’’’’’’’’ńå’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ę’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aę’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ę’A’’’’’’’’’’’’’’’’’’’įę’1’’’’’’’’’’’’’’’’’’’!ē’’’’’’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’Aē’’’’’’’’’’’’’’’’’’’’qē’+’’’’’’’’’’’’’’’’’’’”ē’ ’’’’’’’’’’’’’’’’’’’’’ . ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńē’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’!č’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'edit' ’’’’’’’’’’’’’’Ač’.’’’’’’’’’’’’’’’’’’’qč’O’’’’’’’’’’’’’’’’’’’Ńč’N’’’’’’’’’’’’’’’’’’’!é’]’’’’’’’’’’’’’’’’’’’’’ ben. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’é’’’’’’’’’’’’’’’’’’’’”é’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńé’2’’’’’’’’’’’’’’’’’’’1ź’R’’’’’’’’’’’’’’’’’’’’’ ten sind. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ź’T’’’’’’’’’’’’’’’’’’’ńź’V’’’’’’’’’’’’’’’’’’’Qė’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ė’(’’’’’’’’’’’’’’’’’’’Įė’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ģ’L’’’’’’’’’’’’’’’’’’’aģ’V’’’’’’’’’’’’’’’’’’’Įģ’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ķ’.’’’’’’’’’’’’’’’’’’’Qķ’?’’’’’’’’’’’’’’’’’’’”ķ’Y’’’’’’’’’’’’’’’’’’’ī’Q’’’’’’’’’’’’’’’’’’’aī’E’’’’’’’’’’’’’’’’’’’±ī’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'editget' ’’’’’’’’’’’įī’2’’’’’’’’’’’’’’’’’’’!ļ’Y’’’’’’’’’’’’’’’’’’’ļ’L’’’’’’’’’’’’’’’’’’’Ńļ’R’’’’’’’’’’’’’’’’’’’1š’Z’’’’’’’’’’’’’’’’’’’‘š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įš’J’’’’’’’’’’’’’’’’’’’ń’H’’’’’’’’’’’’’’’’’’’ań’Q’’’’’’’’’’’’’’’’’’’Įń’Z’’’’’’’’’’’’’’’’’’’!ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aņ’R’’’’’’’’’’’’’’’’’’’”ņ’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńņ’P’’’’’’’’’’’’’’’’’’’1ó’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aó’S’’’’’’’’’’’’’’’’’’’Įó’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńó’T’’’’’’’’’’’’’’’’’’’Qō’V’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’systemhandbuch.44.1.91 / 4’’’’#start(2.5,1.5)# ’’’’’’’’’’’’’%#center#EUMEL-Systemhandbuch .#center#7. Der Fontspeicher#right#% ’’’’’’’’’’.#ib(9)#7. Der #ib#Fontspeicher#ie##ie(9)# ’’’’.#ib(9)#7.1. #ib#Fonttabellen#ie##ie(9)# ’’’’’’^Damit die Textverarbeitung Dokumente formatieren kann, muū sie Ūber Breiten und’’’’’’’’’’’’’’’^HŚhen der einzelnen Schrifttypen (auch "#ib#Fonts#ie#" genannt) des Druckers, auf dem das’’’’’NDokument gedruckt wird, Bescheid wissen. Auch bei dem Ausdruck des Dokuments’’^wird diese Information benŚtigt. Im EUMEL-System stellt der #ib#Fontspeicher#ie# diese InforŻ’Žmation den #ib#Formatierprogramm#ie#en (#on("i")#lineform#off("i")# und #on("i")#pageform#off("i")#) und dem #ib#EUMEL-Drucker#ie#’’’’’’’’’’’’zur VerfŪgung. ’’’’’’’’’’’’’’’^Da nun der Drucker Angaben zur Positionierung in seinen #ib#Mikroschritten#ie# (kleinste’’’’’’^Schrittweite in horizontaler oder vertikalter Richtung) benŚtigt, liefert die Fonttabelle’’’’’^die Breiten- und HŚhenangaben in Mikroschritten und eine Umrechnungseinheit von’’’’’’’’’’’’’’’^Schritten in Zentimeter oder umgekehrt. So braucht der EUMEL-Drucker bei PositionieŻ’’’’’’’’’’Nrungen keine Umrechnung vorzunehmen. Allerdings mŪssen die Formatierprogramme’Nauch in Mikroschritten des jeweiligen Druckers rechnen. Dadurch werden jedoch’NUnterschiede durch Rundungsfehler zwischen dem EUMEL-Drucker und den FormaŻ’’’tierprogrammen vermieden. ’’’’^Bei diesem Konzept kŚnnen Fonts von verschiedenen Druckern nicht in einer FonttaŻ’’’’’’’’’’’’’Nbelle verwaltet werden, denn unterschiedliche Drucker haben meist verschiedene^Mikroschritte. Somit muū es fŪr jeden Drucker mindestens eine Fonttabelle geben. ’’’’’’’’’’’’’^Es gibt aber auch FŁlle, in denen Fonts auf einem Drucker nicht mit anderen Fonts des’’’’’’’’’^Druckers zusammengedruckt werden kŚnnen. Solche FŁlle liegen z.B. bei TypenradŻ’’’’’’’’’’’’’’’Ndruckern vor, die immer nur mit einem Typenrad drucken kŚnnen und dessen ZeiŻ’^chenbreite hardwaremŁūig eingestellt werden muū (z.B. beim Olivetti PR320), bei’’’’’’’’’’’’’’’^Druckern, die verschiedene Fonts fŪr LŁngs- und Querformat haben (z.B. beim Agfa’’’’’’’’’’’’’’NP400), oder bei Druckern, deren Fonts geladen werden (z.B. beim HP 2686). Eine~#on("b")##ib#Fonttabelle#ie##off("b")# enthŁlt also alle die Fonts eines Druckers, #on("b")#die auf dem Drucker kompatiŻ’’’’’’Nbel sind#off("b")#. Es kann mehrere Fonttabellen zu einem Drucker geben. ’’’’’^Die verschiedenen Fonttabellen werden von im Multi-User Betrieb von der Task "#ib#confiŻ’’’’’’^gurator#ie#" verwaltet. Sie enthŁlt alle Fonttabellen, die auf dem Rechner zur VerfŪgung’’’’’’stehen. Mit dem Kommando ’’’’’. #ib#fonttable#ie# ("Name der Fonttabelle") ’^wird in einer Task die gewŪnschte Fonttabelle eingestellt. Danach stehen die Fonts’’’’’’’’’’’’^dieser Tabelle in der Task zur VerfŪgung. Die Einstellung der Fonttabelle vererbt sich’’’’’’’’^auf die Sohntasks, d.h. wird eine Sohntask begonnen, so ist dort die Fonttabelle des’’’’’’’’’’Vaters eingestellt. ’’’’’’’’’’Dazu das folgenden Beispiel: ’^ FŪr den Agfa-Drucker P400 gibt es die Fonttabellen "agfa" und "agfaquer", in’’’’’’’’’’’’’’N denen die Fonts fŪr LŁngsdruck bzw. Querdruck enthalten sind. In der Task’~ #on("i")#PUBLIC#off("i")# wird mit dem Kommando #on("i")#fonttable ("agfa")#off("i")# die Fonttabelle "agfa" einŻ’’’’’’’’’^ gestellt. Alle neuen Sohntasks kŚnnen sofort ohne weitere Einstellung mit der’’’’’’’’’’’’’N Textformatierung im LŁngsformat beginnen. Will nun jemand im Querformat’’’n drucken, so muū er in seiner Task mit dem Kommando #on("i")#fonttable ("agfaquer")#off("i")# den’’’’’’’’’’> Fontspeicher auf die Fonts zum Querdruck umstellen. ’’’’’’ #ib#list fonts#ie# ’’’’’’’’’nlistet die Fonts der eingestellten Fontabelle ins #on("i")#notebook#off("i")# und das Kommando ’’’’’’’’’’’’’’’ #ib#list fonttables#ie# ’’’’.informiert Ūber die verfŪgbaren Fonttabellen. >#ib(9)#7.2. Erstellen einer #ib#Fonttabelle#ie##ie(9)# ’’’’’’’^Die Fonttabelle ist ein Datenraum mit einer eigenen Struktur. Somit kann sie nicht’’’’’’’’’’’’Nmehr mit dem Editor, sondern nur mit einem entsprechenden Programm bearbeitet’^werden. Solch ein Programm befindet sich in der Datei "#ib#font convertor#ie#" auf dem StanŻ’’^dardarchiv 'std.zusatz'. Diese Datei sollte in einer Systemtask (Sohntask von "SYSUR")’’’’’’’’Ninsertiert werden. Danach stehen entsprechende Kommandos zur Bearbeitung einerFonttabelle zur VerfŪgung. ’’’nUm eine Fonttabelle zu bekommen, muū zuerst eine #on("b")##ib#Fontdatei#ie##off("b")# (d.h. eine editierbare’’NDatei mit dem unten beschriebenen Aufbau) angelegt werden. Mit dem Kommando ’’> #ib#create fonttable#ie# ("Name der Fontdatei") ’’’’’’’’’’’’^werden alle in der Fontdatei spezifizierten Fonttabellen erstellt. Sie liegen als benannte’’’’nDatenrŁume in der Task vor und kŚnnen mit dem Kommando #on("i")#save#off("i")# von einer SystemŻ’’’’’’’’’’’’’’^task an die Task "configurator" gesendet werden. Danach sind diese Fonttabellen in’’’’’’’’’’’’nallen Task auf dem Rechner verfŪgbar und kŚnnen mit dem #on("i")#fonttable#off("i")# - Kommando’’’’’’’’’’’’’’’eingestellt werden. ’’’’’’’’’’^Soll dagegen eine bestehende Fonttabelle geŁndert werden, so erstellt das KommanŻ’’’’’’’’’’’’’N #ib#create fontfile#ie# ("Name der Fonttabelle", "Name der Fontdatei") ’’’’’^aus der angegebenen Fonttabelle eine Fontdatei. Die Fonttabelle muū dazu in der Task’’’’’’’’’’nals benannter Datenraum vorliegen (d.h. sie muū eventuell mit #on("i")#fetch#off("i")# von der Task’’’’’’’’’’’^"configurator" geholt werden). In der so erstellten Fontdatei kŚnnen die Önderungen’’’’’’’’’’’nmit dem Editor vorgenommen, mit #on("i")#create fonttable#off("i")# die geŁnderte Fonttabelle erstellt’’’’’’’’nund diese wiederum mit #on("i")#save#off("i")# an die Task "configurator" gesendet werden. Mit dem’’’’’’’’’’’’n#on("i")#fonttable#off("i")#-Kommando kann dann in den bestehenden Tasks die geŁnderte Fonttabelle’’’’’’’’’’’’^eingestellt werden. Alle neuen Tasks erhalten automatisch die geŁnderte Fonttabelle. ’’’’’’’’’.#ib(9)#Prozedurbeschreibung der UmwandŻ ’’’’’’lungsŻKommandos#ie(9)# ’’’’’’’^Nach der Insertierung der Datei "font convertor" stehen die folgenden Kommandos zur’’’’’’’’’’’NUmwandlung einer Fontdatei in eine Fonttabelle oder umgekehrt zur VerfŪgung. ’#ib#create fontfile#ie# ’’’’’’N PROC create fontfile (TEXT CONST fonttable name, fontfile name) ’’’’’’’’’^ Zweck: Aus Fonttabelle 'fonttable name' wird eine Fontdatei mit dem angeŻ’’’’’’’’’’’’’’’^ gebenen Name erstellt. Die Fonttabelle muū dabei in der eigenen Task’’’’’’’’’’’’’> als benannter Datenraum vorliegen. ’’’’’’’’’’’’’’#ib#create fonttable#ie# ’’’’’> PROC create fonttable (TEXT CONST fontfile name) ’’’’’’’’^ Zweck: Es werden alle Fonttabellen erzeugt, die in der Fontdatei 'fontfile name'’’’’’’’’^ angegeben sind. Die Fonttabellen liegen dann als benannte DatenrŁuŻ’’’’’’’’’’’’’’. me in der Task vor. ’’’’’’’’’’’’’ PROC create fonttable ’’’^ Zweck: Es werden alle Fonttabellen erzeugt, die in der zuletzt bearbeiteten’’’’’’’’’’’’’. Datei angegeben sind. ’’’’’’’’’’’>#ib(9)#7.3. Aufbau der #ib#Fontdatei#ie##ie(9)# ’’’’’’’’’’’’’’^In der Fontdatei kŚnnen drei Strukturen stehen und zwar Kennungen, Identifkationen’’’’’’’’’’’’.und Zeichenspezifikationen.#u##count#)#e# ’’’’^#value#) Beim formalen Aufbau bedeuten eckige Klammern, daū diese Angaben optional sind. ’’’’’.#ib(9)##ib#Ken±ō’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įō’T’’’’’’’’’’’’’’’’’’’Aõ’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qõ’G’’’’’’’’’’’’’’’’’’’Įõ’/’’’’’’’’’’’’’’’’’’’ö’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ö’R’’’’’’’’’’’’’’’’’’’‘ö’'’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Įö’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńö’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A÷’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q÷’’’’’’’’’’’’’’’’’’’’‘÷’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'sort' ’’’’’’’’’’’’’’Į÷’4’’’’’’’’’’’’’’’’’’’ų’P’’’’’’’’’’’’’’’’’’’aų’P’’’’’’’’’’’’’’’’’’’Įų’M’’’’’’’’’’’’’’’’’’’ł’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ł’H’’’’’’’’’’’’’’’’’’’ł’T’’’’’’’’’’’’’’’’’’’įł’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'lex sort' ’’’’’’’’’’1ś’8’’’’’’’’’’’’’’’’’’’qś’O’’’’’’’’’’’’’’’’’’’Ńś’=’’’’’’’’’’’’’’’’’’’ū’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aū’L’’’’’’’’’’’’’’’’’’’‘ū’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’įū’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ü’L’’’’’’’’’’’’’’’’’’’aü’Q’’’’’’’’’’’’’’’’’’’’’2.9.2). ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įü’R’’’’’’’’’’’’’’’’’’’!ż’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’':=' ’’’’’’’’’’’’’’’’Qż’F’’’’’’’’’’’’’’’’’’’”ż’R’’’’’’’’’’’’’’’’’’’ž’S’’’’’’’’’’’’’’’’’’’až’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'new' ’’’’’’’’’’’’’’’‘ž’>’’’’’’’’’’’’’’’’’’’Ńž’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a’’'’’’’’’’’’’’’’’’’’’’‘’’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń’’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'nilspace' ’’’’’’’’’’"’.’’’’’’’’’’’’’’’’’’’R’T’’’’’’’’’’’’’’’’’’’²’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'old' ’’’’’’’’’’’’’’’ņ’>’’’’’’’’’’’’’’’’’’’2’O’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'type' ’’’’’’’’’’’’’’ā’D’’’’’’’’’’’’’’’’’’’2’U’’’’’’’’’’’’’’’’’’’’’K’’’’’’’’’’’’’’’’’’’ā’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’9’’’’’’’’’’’’’’’’’’’R’P’’’’’’’’’’’’’’’’’’’²’O’’’’’’’’’’’’’’’’’’’’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'dataspaces' ’’’’’’’’B’=’’’’’’’’’’’’’’’’’’’‚’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’+’’’’’’’’’’’’’’’’’’’ņ’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'ds pages' ’’’’’’’’’’"’=’’’’’’’’’’’’’’’’’’’b’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'storage' ’’’’’’’’’’’²’<’’’’’’’’’’’’’’’’’’’ņ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'copy' ’’’’’’’’’’’’’’2’H’’’’’’’’’’’’’’’’’’’‚’U’’’’’’’’’’’’’’’’’’’ā’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'forget' ’’’’’’’’’’’’’7’’’’’’’’’’’’’’’’’’’R’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#foot# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’P’’’’’’’’’’’’’’’’’’’ā’J’’’’’’’’’’’’’’’’’’’2’'’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'fetch' ’’’’’’’’’’’’’b’@’’’’’’’’’’’’’’’’’’’²’.’’’’’’’’’’’’’’’’’’’ā’M’’’’’’’’’’’’’’’’’’’2 ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'save' ’’’’’’’’’’’’’’R ’A’’’’’’’’’’’’’’’’’’’¢ ’.’’’’’’’’’’’’’’’’’’’Ņ ’P’’’’’’’’’’’’’’’’’’’’’ kopiert. ’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2 ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R ’C’’’’’’’’’’’’’’’’’’’¢ ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ ’?’’’’’’’’’’’’’’’’’’’" ’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā ’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’I’’’’’’’’’’’’’’’’’’’b ’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢ ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā ’G’’’’’’’’’’’’’’’’’’’2 ’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚ ’J’’’’’’’’’’’’’’’’’’’Ņ ’:’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2’S’’’’’’’’’’’’’’’’’’’’’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’B’L’’’’’’’’’’’’’’’’’’’’’$’’’’’’’’’’’’’’’’’’’Ā’L’’’’’’’’’’’’’’’’’’’’<’’’’’’’’’’’’’’’’’’’R’5’’’’’’’’’’’’’’’’’’’’’-’’’’’’’’’’’’’’’’’’’Ā’-’’’’’’’’’’’’’’’’’’’ņ’I’’’’’’’’’’’’’’’’’’’B’F’’’’’’’’’’’’’’’’’’’’’)’’’’’’’’’’’’’’’’’’’Ā’;’’’’’’’’’’’’’’’’’’’’;’’’’’’’’’’’’’’’’’’’B’E’’’’’’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’Ņ’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’A’’’’’’’’’’’’’’’’’’’²’9’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'cursor' ’’’’’’’’’’’’‚’;’’’’’’’’’’’’’’’’’’’Ā’R’’’’’’’’’’’’’’’’’’’"’R’’’’’’’’’’’’’’’’’’’’’ hŁngig. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'get cursor' ’’’’’’’’‚’6’’’’’’’’’’’’’’’’’’’Ā’Q’’’’’’’’’’’’’’’’’’’"’R’’’’’’’’’’’’’’’’’’’‚’S’’’’’’’’’’’’’’’’’’’ā’T’’’’’’’’’’’’’’’’’’’B’R’’’’’’’’’’’’’’’’’’’¢’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'line' ’’’’’’’’’’’’’’ā’!’’’’’’’’’’’’’’’’’’’’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’4’’’’’’’’’’’’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'page' ’’’’’’’’’’’’’’Ņ’!’’’’’’’’’’’’’’’’’’’’V’’’’’’’’’’’’’’’’’’’b’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’ņ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'editget' ’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'getchar' ’’’’’’’’’’’b’6’’’’’’’’’’’’’’’’’’’¢’W’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'inchar' ’’’’’’’’’’’’’8’’’’’’’’’’’’’’’’’’’B’Q’’’’’’’’’’’’’’’’’’’¢’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'incharety' ’’’’’’’’’ā’+’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’ā’O’’’’’’’’’’’’’’’’’’’B’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²’O’’’’’’’’’’’’’’’’’’’ ’U’’’’’’’’’’’’’’’’’’’r ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'sysin' ’’’’’’’’’’’’’Ā ’9’’’’’’’’’’’’’’’’’’’!’K’’’’’’’’’’’’’’’’’’’R!’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r!’'’’’’’’’’’’’’’’’’’’’¢!’Q’’’’’’’’’’’’’’’’’’’’’ Terminal. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'get' ’’’’’’’’’’’’’’’nungen#ie##ie(9)# ’’’’’’’’’’’’’’^ Formaler Aufbau: <#on("i")#Kennung#off("i")#> : Name 1 [, Name 2] [ ... ] ; ’’’’’’’’^ Eine Kennung leitet eine Definition ein. FŪr die Namen der Namensliste gelten die’’’’’’’’’ folgenden Konventionen: ’’> - der Name muū als TEXT-Denoter angegeben werden, ’’’’’’N - der Name muū ungleich #on("i")#niltext#off("i")# sein, ’’’’’’’’’’’’’’’^ - Leerzeichen sind im Namen nicht signifikant (d.h. "agfa quer" wird zu "agfaŻ’’’’’’’’’’ quer"). ’’’’’’’’’’’’’’> Eine Kennung kann die folgenden Werte annehmen: ’’’’’’’’’’> <#on("i")#Kennung#off("i")#> { FONTTABLE, FONT } ’’’. - #on("b")##ib#FONTTABLE#ie##off("b")# ’’’^ Hiermit wird eine Definition einer Fonttabelle eingeleitet. Es wird nur der erste’’’’’^ Name der Namensliste ausgewertet, da die Fonttabelle eindeutig identifiziert’’’’’’’’’’^ sein muū. Alle folgenden Angaben werden dieser Fonttabelle zugeordnet, bis’’’’’’’’’’’’. eine neue Kennung FONTTABLE folgt. ’’’. - #on("b")##ib#FONT#ie##off("b")# ’’’’’’’’^ Hiermit wird eine Definition eines Schrifttyps eingeleitet. Ein Schrifttyp kann’’’’’’’^ mehrere Namen haben. Jedoch darf in einer Fonttabelle jeder Fontname nur’’’’’’’’’’’’’’. einem Font zugeordnet werden. ’’’’’’’’.#ib(9)##ib#Identifikation#ie#en#ie(9)# ’’’’’’’^ Formaler Aufbau: [ <#on("i")#Identifikation#off("i")#> = ; ] ’^ Mit den Identifikationen werden bestimmte Angaben zu den Kennungen gemacht.’’’’’’’’’’’’’’’^ Sie mŪssen unmittelbar nach der entsprechenden Kennung folgen, brauchen aber’’’’’’’’’’’’’’N nur angegeben werden, wenn sie von den Standardwerten abweichen. ’’’’’’’’’N#ib(9)#Identifikationen nach der Kennung #ib#FONTTABLE#ie##ie(9)# ’’’’’’’’’’’’^ <#on("i")#Identifikation#off("i")#> { x unit, y unit, on string, off string } ’’’’’’. - #on("b")##ib#x unit#ie##off("b")# ’’’’’’^ Hiermit wird die Anzahl der Mikroschritte des Druckers pro Zentimeter in’’’’’’’’’’’’’’^ horizontaler (x-) Richtung spezifiziert. Die Einheit muū als REAL-Denoter’’’’’’’’’’’’’^ angegeben werden. Alle weiteren Breitenangaben zu den Fonts dieses DruÜŻ’’’’’’’’’’’’’’. kers beziehen sich auf diese Einheit. . STD-Wert: 10.0 / 2.54 = 3.937008 . - #on("b")##ib#y unit#ie##off("b")# ’’’’’’^ Hiermit wird die Anzahl der Mikroschritte des Druckers pro Zentimeter in’’’’’’’’’’’’’’^ vertikaler (y-) Richtung spezifiziert. Die Einheit muū als REAL-Denoter angeŻ’’’’’’’’’N geben werden. Alle weiteren HŚhenangaben zu den Fonts dieses Druckers’. beziehen sich auf diese Einheit. ’’’’’. STD-Wert: 6.0 / 2.54 = 2.362205 . - #on("b")##ib#on string#ie##off("b")# ’’’N Hier mŪssen vier Textdenoter, durch Komma getrennt, angegeben werden.’^ Die Textdenoter enthalten die Befehlssequenzen, um beim Drucker die MoŻ’’’’’’’’’’’’’’’^ difikationen anzuschalten. Dabei ist die Reihenfolge der Modifikationen ’’’’’’’’’’’’’’> underline, bold, italics, reverse. ’’’’’’’’’n Liegt fŪr eine der Modifikationen keine Befehlssequenz vor, so muū #on("i")#niltext#off("i")#’’’’’’’’’N angegeben werden. Die Befehlssequenzen kŚnnen vom Druckertreiber abŻ’’ gefragt werden. ’’’’’’N STD-Wert: #on("i")#niltext#off("i")# fŪr alle Modifikationen ’’’’’’. - #on("b")##ib#off string#ie##off("b")# ’’N Hier mŪssen vier Textdenoter, durch Komma getrennt, angegeben werden.’^ Die Textdenoter enthalten die Befehlssequenzen, um beim Drucker die MoŻ’’’’’’’’’’’’’’’^ difikationen auszuschalten. Dabei ist die Reihenfolge der Modifikationen ’’’’’’’’’’’’’> underline, bold, italics, reverse. ’’’’’’’’’n Liegt fŪr eine der Modifikationen keine Befehlssequenz vor, so muū #on("i")#niltext#off("i")#’’’’’’’’’N angegeben werden. Die Befehlssequenzen kŚnnen vom Druckertreiber abŻ’’ gefragt werden. ’’’’’’N STD-Wert: #on("i")#niltext#off("i")# fŪr alle Modifikationen ’’’’’’>#ib(9)#Identifikationen nach der Kennung #ib#FONT#ie##ie(9)# ’n <#on("i")#Identifikation#off("i")#> { font lead, font height, font depth, indentation pitch, ’’’’’’N next larger font, next smaller font, ’’’’’’’’’’N font string, y offsets, bold offset } ’’’’’’’> - #on("b")##ib#font lead#ie##off("b")##u##count#)#e# ’’’’’^ Der Durchschuū eines Fonts gibt den Zwischenraum in vertikaler Richtung’’’’’’’’’’’’’’’^ zwischen den Zeilen bei einfachem Zeilenvorschub an. Er muū in MikroschritŻ’’’’’’’’’’’> ten der y-Richtung als INT-Denoter angegeben werden. ’ STD-Wert: 0 ’’’’’’’n#value#) FŪr spŁtere Erweiterungen des EUMEL-Druckers wurde die bisherige FonthŚhe in Durchschuū, FonthŚhe’’’’n und Fonttiefe aufgespalten. FŪr alle bis jetzt definierten Leistungen braucht nur wie bisher die FonthŚhe’’^ angegeben zu werden. Der Durchschuū und die Fonttiefe werden dann auf Null gesetzt. ’’’’’’’> - #on("b")##ib#font height#ie##off("b")##u##value#)#e# ’’’^ Die FonthŚhe ist die Distanz von der Basislinie bis zur Oberkante des hŚchŻ’’’’’’’’’’’^ sten Zeichens. Sie muū in Mikroschritten der y-Richtung als INT-Denoter’’’’’’’’’’’’’’’ angegeben werden. ’’’’^ STD-Wert: 6 Zeilen pro Inch entsprechend der definierten #on("i")#y unit#off("i")# > - #on("b")##ib#font depth#ie##off("b")##u##value#)#e# ’’’’^ Die Fonttiefe ist die Distanz von der Basislinie bis zur Unterkante des tiefŻ’’’’’’’’’^ sten Zeichens. Sie muū in Mikroschritten der y-Richtung als INT-Denoter’’’’’’’’’’’’’’’ angegeben werden. ’’’’ STD-Wert: 0 ’’’’’’’> - #on("b")##ib#indentation pitch#ie##off("b")# ’’’’’’’’’’’^ EinrŪckungen oder AufzŁhlungen werden Łquidistant berechnet, d.h. Anzahl’’’’’’’’’’’’’’^ der Zeichen mal einer festen Breite. Diese EinrŪckbreite sollte ein Mittel alŻ’’’’’’’’^ ler Zeichenbreiten sein und braucht nicht der Breite des Leerzeichens zu’’’’’’’’’’’’’’^ entsprechen. Sie muū in Mikroschritten der x-Richtung als INT-Denoter anŻ’’’’’’’’’’’’’ gegeben werden. ’’’’’’n STD-Wert: 10 Zeichen pro Inch entsprechend der definierten #on("i")#x unit#off("i")# ’’’’’’’’’’’’’’> - #on("b")##ib#next larger font#ie##off("b")# ’’’’’’’’’’’’^ Hier muū der Name des nŁchst grŚūeren Fonts als TEXT-Denoter aufgefŪhrt’’’’’’’’’’’’’’’n werden. Gibt es keinen nŁchst grŚūeren Font, so ist #on("i")#niltext#off("i")# anzugeben. ’’’’’’’’’’’’> STD-Wert: #on("i")#niltext#off("i")# ’’’’’’’’’’’’’’> - #on("b")##ib#next smaller font#ie##off("b")# ’’’’’’’’’’’N Hier muū der Name des nŁchst kleineren Fonts als TEXT-Denoter aufgeŻ’’n fŪhrt werden. Gibt es keinen nŁchst kleineren Font, so ist #on("i")#niltext#off("i")# anzugeben.’’’’’’^ Bei Indizes oder Exponenten wird automatisch auf diesen nŁchst kleineren’’’’’’’’’’’’’’ Font umgeschaltet. ’’’> STD-Wert: #on("i")#niltext#off("i")# ’’’’’’’’’’’’’’. - #on("b")##ib#font string#ie##off("b")# ’N Hier kann als TEXT-Denoter eine Befehlssequenz angegeben werden, die’’N den Drucker auf diesen Font umschaltet. Diese Befehlssequenz kann vom’^ Druckertreiber abgefragt werden. Dadurch ist es nicht nŚtig, daū er die NaŻ’’’’’’’’’’’ men der Fonts kennt. ’> STD-Wert: #on("i")#niltext#off("i")# ’’’’’’’’’’’’’’. - #on("b")##ib#y offsets#ie##off("b")# ’’’"’1’’’’’’’’’’’’’’’’’’’B"’K’’’’’’’’’’’’’’’’’’’’"’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ"’1’’’’’’’’’’’’’’’’’’’#’H’’’’’’’’’’’’’’’’’’’b#’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢#’0’’’’’’’’’’’’’’’’’’’ā#’M’’’’’’’’’’’’’’’’’’’2$’Y’’’’’’’’’’’’’’’’’’’’$’K’’’’’’’’’’’’’’’’’’’ā$’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B%’B’’’’’’’’’’’’’’’’’’’’%’Z’’’’’’’’’’’’’’’’’’’ņ%’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B&’F’’’’’’’’’’’’’’’’’’’’&’]’’’’’’’’’’’’’’’’’’’ņ&’P’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'getline' ’’’’’’’’’’’R'’5’’’’’’’’’’’’’’’’’’’’'’Y’’’’’’’’’’’’’’’’’’’ņ'’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’(’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2(’’’’’’’’’’’’’’’’’’’’R(’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'cout' ’’’’’’’’’’’’’’¢(’4’’’’’’’’’’’’’’’’’’’ā(’R’’’’’’’’’’’’’’’’’’’B)’Q’’’’’’’’’’’’’’’’’’’¢)’R’’’’’’’’’’’’’’’’’’’*’Q’’’’’’’’’’’’’’’’’’’b*’N’’’’’’’’’’’’’’’’’’’²*’M’’’’’’’’’’’’’’’’’’’+’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'out' ’’’’’’’’’’’’’’’2+’2’’’’’’’’’’’’’’’’’’’r+’M’’’’’’’’’’’’’’’’’’’Ā+’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ+’’’’’’’’’’’’’’’’’’’’,’L’’’’’’’’’’’’’’’’’’’R,’Q’’’’’’’’’’’’’’’’’’’²,’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā,’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’-’O’’’’’’’’’’’’’’’’’’’r-’W’’’’’’’’’’’’’’’’’’’’’ FŪr ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ-’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’.’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B.’M’’’’’’’’’’’’’’’’’’’’.’W’’’’’’’’’’’’’’’’’’’’’ FŪr ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ.’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"/’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'TIMESOUT' ’’’’’’’’’’b/’F’’’’’’’’’’’’’’’’’’’²/’N’’’’’’’’’’’’’’’’’’’0’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R0’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’r0’’’’’’’’’’’’’’’’’’’’’0’Q’’’’’’’’’’’’’’’’’’’ņ0’Q’’’’’’’’’’’’’’’’’’’R1’0’’’’’’’’’’’’’’’’’’’’1’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'sysout' ’’’’’’’’’’’’Ā1’:’’’’’’’’’’’’’’’’’’’2’J’’’’’’’’’’’’’’’’’’’R2’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r2’(’’’’’’’’’’’’’’’’’’’¢2’O’’’’’’’’’’’’’’’’’’’3’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'line' ’’’’’’’’’’’’’’"3’’’’’’’’’’’’’’’’’’’’B3’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚3’.’’’’’’’’’’’’’’’’’’’²3’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'put' ’’’’’’’’’’’’’’’4’3’’’’’’’’’’’’’’’’’’’B4’K’’’’’’’’’’’’’’’’’’’’4’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²4’2’’’’’’’’’’’’’’’’’’’ņ4’L’’’’’’’’’’’’’’’’’’’B5’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b5’2’’’’’’’’’’’’’’’’’’’¢5’P’’’’’’’’’’’’’’’’’’’6’O’’’’’’’’’’’’’’’’’’’b6’M’’’’’’’’’’’’’’’’’’’²6’T’’’’’’’’’’’’’’’’’’’7’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'putline' ’’’’’’’’’’’B7’6’’’’’’’’’’’’’’’’’’’‚7’N’’’’’’’’’’’’’’’’’’’Ņ7’P’’’’’’’’’’’’’’’’’’’28’N’’’’’’’’’’’’’’’’’’’‚8’Q’’’’’’’’’’’’’’’’’’’ā8’O’’’’’’’’’’’’’’’’’’’’’ gesetzt. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'write' ’’’’’’’’’’’’’B9’4’’’’’’’’’’’’’’’’’’’‚9’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā9’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'online' ’’’’’’’’’’’’ā9’(’’’’’’’’’’’’’’’’’’’:’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'pause' ’’’’’’’’’’’’’b:’9’’’’’’’’’’’’’’’’’’’¢:’P’’’’’’’’’’’’’’’’’’’;’S’’’’’’’’’’’’’’’’’’’b;’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²;’!’’’’’’’’’’’’’’’’’’’ā;’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"<’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'clock' ’’’’’’’’’’’’’B<’9’’’’’’’’’’’’’’’’’’’‚<’J’’’’’’’’’’’’’’’’’’’Ņ<’W’’’’’’’’’’’’’’’’’’’2=’O’’’’’’’’’’’’’’’’’’’’=’R’’’’’’’’’’’’’’’’’’’ņ=’O’’’’’’’’’’’’’’’’’’’R>’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢>’L’’’’’’’’’’’’’’’’’’’ņ>’M’’’’’’’’’’’’’’’’’’’B?’P’’’’’’’’’’’’’’’’’’’¢?’O’’’’’’’’’’’’’’’’’’’@’b’’’’’’’’’’’’’’’’’’’r@’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢@’F’’’’’’’’’’’’’’’’’’’ņ@’O’’’’’’’’’’’’’’’’’’’RA’`’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀA’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’A’’’’’’’’’’’’’’’’’’’bB’(’’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’²B’(’’’’’’’’’’’’’’’’’’’āB’0’’’’’’’’’’’’’’’’’’’"C’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RC’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'date' ’’’’’’’’’’’’’’¢C’’’’’’’’’’’’’’’’’’’’ĀC’8’’’’’’’’’’’’’’’’’’’D’Q’’’’’’’’’’’’’’’’’’’bD’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀD’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’E’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RE’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢E’9’’’’’’’’’’’’’’’’’’’āE’M’’’’’’’’’’’’’’’’’’’2F’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚F’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅF’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’G’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bG’%’’’’’’’’’’’’’’’’’’’’G’Y’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'day' ’’’’’’’’’’’’’’’ņG’&’’’’’’’’’’’’’’’’’’’"H’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'hour' ’’’’’’’’’’’’’’bH’'’’’’’’’’’’’’’’’’’’’’H’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'pause' ’’’’’’’’’’’’’ŅH’9’’’’’’’’’’’’’’’’’’’I’P’’’’’’’’’’’’’’’’’’’rI’S’’’’’’’’’’’’’’’’’’’ŅI’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'time' ’’’’’’’’’’’’’’"J’’’’’’’’’’’’’’’’’’’’BJ’8’’’’’’’’’’’’’’’’’’’‚J’S’’’’’’’’’’’’’’’’’’’āJ’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’K’K’’’’’’’’’’’’’’’’’’’bK’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀK’4’’’’’’’’’’’’’’’’’’’L’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BL’8’’’’’’’’’’’’’’’’’’’‚L’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅL’’’’’’’’’’’’’’’’’’’’āL’?’’’’’’’’’’’’’’’’’’’2M’=’’’’’’’’’’’’’’’’’’’rM’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀM’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’N’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bN’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²N’-’’’’’’’’’’’’’’’’’’’āN’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’O’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bO’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’O’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ 5.6 Scanner’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āO’M’’’’’’’’’’’’’’’’’’’2P’J’’’’’’’’’’’’’’’’’’’‚P’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅP’’’’’’’’’’’’’’’’’’’’ņP’#’’’’’’’’’’’’’’’’’’’"Q’*’’’’’’’’’’’’’’’’’’’RQ’’’’’’’’’’’’’’’’’’’’rQ’/’’’’’’’’’’’’’’’’’’’²Q’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āQ’K’’’’’’’’’’’’’’’’’’’2R’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rR’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’R’9’’’’’’’’’’’’’’’’’’’^ Um bei Matrixdruckern Schriften zu erzeugen, die hŚher als eine Nadelreihe’’’’’’’’’’’’N sind, mŪssen entsprechende Bitmuster des Textes an verschiedenen y-PoŻN sitionen ausgegeben werden. Um diese Anforderung durch den EUMEL-’’’’’^ Drucker zu unterstŪtzen, kann hier eine Liste von Verschiebungen von der’’’’’’’’’’’’’’^ Basislinie angegeben werden, an denen der Text ein weiteres Mal ausgegeŻ’’’’’’’’’’’’’’N ben wird. Dabei bedeuten negative Werte eine Verschiebung oberhalb und^ positive Werte eine Verschiebung unterhalb der Basislinie. Ist der Wert Null,’’’’’’’’’n so wird der Text auf der Basislinie ausgegeben. Die Modifikation #on("i")#underline#off("i")#’’’’’’’’’^ wird bei der Ausgabe des Textes nur an der ersten Verschiebung angestellt.’’’’’’’’’’’’^ Die Werte fŪr die Verschiebungen mŪssen in Mikroschritten der y-Richtung’’’’’’’’’’’’’’N als INT-Denoter angegeben und durch Komma getrennt werden. ’’’’’’’’’’’ STD-Wert: 0 ’’’’’’’. - #on("b")##ib#bold offset#ie##off("b")# ’n Falls der Drucker die Modifikation #on("i")#bold#off("i")# nicht beherrscht, versucht der’’’’’’’’’’’’’^ EUMEL-Drucker sie durch Doppeldruck zu simulieren. Der 'bold offset' gibt’’’’’’’’’’’’’^ an, ob und wieviel der zweite Durchgang in x-Richtung verschoben werden’’’’’’’’’’’’’’’^ soll. Dies ergibt insbesondere bei Laserdruckern, die nicht fŪr alle SchrifttyŻ’’’’’’’N pen einen Bold-Typ haben, einen recht guten Fettdruck. Der Wert muū inN Mikroschritten der x-Richtung als INT-Denoter angegeben werden. ’’’’’’ STD-Wert: 0 ’’’’’’’.#ib(9)##ib#Zeichenspezifikationen#ie##ie(9)# ’> Formaler Aufbau: [ [, ] N [, ] ; ] ’N Nachdem die Identifikationen zu einer Kennung angegeben wurden, kŚnnen ZeiŻ^ chenspezifikationen folgen, d.h. zu einem Zeichen kann die Breite und/oder eine’’’’’’’’’’’’^ Ersatzdarstellung spezifiziert werden. Dazu muū zuerst das Zeichen selber als’’’’’’’’’’’’’’. TEXT-Denoter angegeben werden. ’’’’’’’’’’’’> - #on("b")##ib#Breite des Zeichens#ie##off("b")# ’’’’’’’’’’^ Die Zeichenbreite muū als INT-Denoter in Mikroschritten angegeben werden.’’’’’’’’’’’’’’^ Alle Zeichenbreiten werden mit der EinrŪckbreite vorbesetzt, so daū nur solŻ’’’’’’’’’’’N che Zeichen angegeben werden mŪssen, deren Breite von der EinrŪckbreite^ abweichen. Negative Zeichenbreiten sind nicht erlaubt. Die Angabe von ZeiŻ’’’’’’’’’’’’’> chenbreiten nach der Kennung FONTTABLE wird ignoriert. N - #on("b")##ib#Ersatzdarstellung des Zeichens#ie##off("b")# ’’’’’’’’’’’’’’’N Die Ersatzdarstellung wird statt des Zeichens ausgedruckt. Sie muū als’N TEXT-Denoter angegeben werden. Werden Ersatzdarstellungen nach der’’’’’N Kennung FONTTABLE angegeben, so gelten sie global fŪr alle Fonts dieser^ Fonttabelle. Sie kŚnnen jedoch bei der Fontangabe lokal wieder ŪberschrieŻ’’’’’’’’’’’’’^ ben werden. Eine Ersatzdarstellung darf hŚchsten 255 Zeichen lang sein. Alle’’’’’’’’’’’^ Ersatzdarstellungen eines Fonts dŪrfen 32767 Zeichen nicht Ūberschreiten. ’’’’’’’’’’’’’>#ib(9)##ib#Kommentare in der Fontdatei#ie##ie(9)# ’’’’’’’’’’’’N In der Fontdatei dŪrfen Kommentare eingefŪgt werden. Sie mŪssen den KommenŻ^ taren der ELAN-Syntax entsprechen, d.h. mit '(*' beginnen und mit '*)' enden. ’’’’’’’’’’’’’.#ib(9)##ib#Deutsche Namen#ie##ie(9)# ’’’’’’’’’^ Kennungen und Identifikationen dŪrfen in der Fontdatei auch mit folgenden deutŻ’’’’’’’’’’’’. schen Namen angegeben werden. ’’’’’’’’’’’’’. FONTABLE : FONTABELLE ’’’’. FONT : FONT ’’’’’’’’’’#free (0.15)# . x unit : x einheit ’’’’’. y unit : y einheit ’’’’’. on string : on sequenz ’’’’. off string : off sequenz ’’’. indentation pitch : einrueckbreite . font lead : durchschuss ’’’. font height : fonthoehe ’’’’’. font depth : fonttiefe ’’’’’> next larger font : groesserer font ’’’’’’’’’’’’’’’. next smaller font : kleinerer font . font string : font sequenz ’’> y offsets : y verschiebungen ’’’’’’’’’’’’’’> bold offset : bold verschiebung ’’’’’’’’’’’’’>#ib(9)#7.4. Beispiel fŪr eine Fontdatei#ie(9)# ’’’’’’’’’’’’’’’^In diesem Beispiel einer Fonttdatei sind drei Fonttabellen enthalten, nŁmlich "agfa" und’’’’’’N"agfaquer" fŪr den Agfa-Drucker und "epson" fŪr einen Epson-Drucker. ’’’’’’’’’FONTTABLE : "agfa" ; ’’’’’’’^ x unit = 160.0 ; #right#(* Anzahl der Mikroschritte pro cm *) ’’’’’’’’ y unit = 160.0 ; ’’’’’> on string = "\UL1;", "\BO1;", "\IT1;", "\CFW;\CBB;" ; > off string = "\UL0;", "\BO0;", "\IT0;", "\CFT;\CBT;" ; >#right#(* globale Ersatzdarstellungen fŪr alle Agfa-Fonts *) ’N ""214"" , "\!298;" ; #right#(* AE *) ’’’’’’’’’’’’’’’N ""215"" , "\!299;" ; #right#(* OE *) ’’’’’’’’’’’’’’’N ""216"" , "\!300;" ; #right#(* UE *) ’’’’’’’’’’’’’’’N ""217"" , "\!451;" ; #right#(* ae *) ’’’’’’’’’’’’’’’N ""218"" , "\!452;" ; #right#(* oe *) ’’’’’’’’’’’’’’’N ""219"" , "\!453;" ; #right#(* ue *) ’’’’’’’’’’’’’’’ FONT : "trium10" ; ’’’’’’’. indentation pitch = 30 ; ’’’’’’’’’’’’’’. font lead = 7 ; ’’’’’’’’’’’’’’’. font heigth = 54 ; ’’’’’’’’’’’’’’. font depth = 15 ; ’’’’’’’’’’’’’’. next larger font = "trium12" ; ’’’’’’’. next smaller font = "helvetica8" ; ’’’’. font string = "\FO5;" ; ’’’’’’’’’> " " , 20 ; "!" , 16 ; ’’’’’’’’’’’’’> """" , 22 ; "Ž" , 31 ; ’’’’’’’’’’’’’> "$" , 31 ; "%" , 55 ; ’’’’’’’’’’’’’N ""217"" , 31 ; #right#(* ae *) ’’’’’’>#right#(* lokale Ersatzdarstellungen fŪr Font "trium10" *) ’’’N ""244"" , 43 , "\FO23;\!725;\FO5;" ; #right#(* ungleich *) ’’’’’’N ""245"" , 31 , "\FO23;\!405;\FO5;" ; #right#(* mal-Zeichen *) ’’’’’’^ FONT : "modern12", "elanlist" ; #right#(* Mehrere Namen fŪr einen Font *) ’’’’’’’’’’’’. indentation pitch = 33 ; ’’’’’’’’’’’’’’’ font lead = 14;  font heigth = 53;  font depth = 13; . next larger font = "" ; ’’’’’’’’’’’’’’’. next smaller font = "micro" ; ’’’’’’’’’’. font string = "\FO11;" ’’’’’’’’’’’^ #right#(* Alle Zeichen haben die gleiche Breite *) ’’’FONTTABLE : "agfaquer" ; ’’’ x unit = 160.0 ; ’’’’’ y unit = 160.0 ; ’’’’’> on string = "\UL1;", "\BO1;", "\IT1;", "\CFW;\CBB;" ; > off string = "\UL0;", "\BO0;", "\IT0;", "\CFT;\CBT;" ; FONTTABLE : "epson" ; ’’’’’’N x unit = 47.24409 ; #right#(* 120.0 / 2.54 *) ’’’’’N y unit = 85.03937 ; #right#(* 216.0 / 2.54 *) ’’’’’> on string = ""27"-"1"", "", ""27"4", ""; ’’’’’’’’’’’’’> off string = ""27"-"0"", "", ""27"5", ""; ’’’’’’’’’’’’’^ ""214"" , ""27"R"2""091""27"R"0"" ; #right#(* AE *) ’’’’’^ ""215"" , ""27"R"2""092""27"R"0"" ; #right#(* OE *) ’’’’’^ ""216"" , ’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅR’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņR’M’’’’’’’’’’’’’’’’’’’BS’R’’’’’’’’’’’’’’’’’’’¢S’R’’’’’’’’’’’’’’’’’’’T’G’’’’’’’’’’’’’’’’’’’RT’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²T’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅT’K’’’’’’’’’’’’’’’’’’’"U’O’’’’’’’’’’’’’’’’’’’‚U’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢U’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀU’>’’’’’’’’’’’’’’’’’’’V’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BV’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚V’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅV’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’ņV’3’’’’’’’’’’’’’’’’’’’2W’6’’’’’’’’’’’’’’’’’’’rW’’’’’’’’’’’’’’’’’’’’’W’’’’’’’’’’’’’’’’’’’’’’ REP ’’’’’’’’’’’’²W’&’’’’’’’’’’’’’’’’’’’āW’’’’’’’’’’’’’’’’’’’’X’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"X’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rX’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’X’’’’’’’’’’’’’’’’’’’’²X’A’’’’’’’’’’’’’’’’’’’Y’O’’’’’’’’’’’’’’’’’’’bY’O’’’’’’’’’’’’’’’’’’’ĀY’O’’’’’’’’’’’’’’’’’’’"Z’U’’’’’’’’’’’’’’’’’’’’’ werden! ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚Z’’’’’’’’’’’’’’’’’’’’’Z’H’’’’’’’’’’’’’’’’’’’āZ’O’’’’’’’’’’’’’’’’’’’B[’I’’’’’’’’’’’’’’’’’’’’[’N’’’’’’’’’’’’’’’’’’’ā[’P’’’’’’’’’’’’’’’’’’’B\’Q’’’’’’’’’’’’’’’’’’’¢\’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā\’%’’’’’’’’’’’’’’’’’’’ņ\’%’’’’’’’’’’’’’’’’’’’"]’%’’’’’’’’’’’’’’’’’’’R]’%’’’’’’’’’’’’’’’’’’’‚]’%’’’’’’’’’’’’’’’’’’’²]’%’’’’’’’’’’’’’’’’’’’ā]’%’’’’’’’’’’’’’’’’’’’^’%’’’’’’’’’’’’’’’’’’’B^’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r^’L’’’’’’’’’’’’’’’’’’’Ā^’K’’’’’’’’’’’’’’’’’’’_’U’’’’’’’’’’’’’’’’’’’’’ fert. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r_’:’’’’’’’’’’’’’’’’’’’²_’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’`’H’’’’’’’’’’’’’’’’’’’R`’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’`’U’’’’’’’’’’’’’’’’’’’ņ`’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'scan' ’’’’’’’’’’’’’’2a’8’’’’’’’’’’’’’’’’’’’ra’T’’’’’’’’’’’’’’’’’’’Ņa’N’’’’’’’’’’’’’’’’’’’"b’S’’’’’’’’’’’’’’’’’’’‚b’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Āb’.’’’’’’’’’’’’’’’’’’’ņb’R’’’’’’’’’’’’’’’’’’’Rc’>’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’>#pagenr("%",40)##setcount(1)##block##pageblock# ’’’’’’’’’’’’’’.#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’.#center#TEIL 5 : Programmierung ’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’5 - % #right#GMD ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #right#5 - % ’’’’’’’’’’’’’.5.3 Der Datentyp FILE (Textdateien) ’’’’’’’’’^Der Datentyp FILE definiert Dateien von sequentieller Struktur, die Texte enthalten.’’’’’’’’’’>Ein Objekt vom Datentyp FILE ist charakterisiert durch: ’’’’’’>1) seine Betriebsrichtung : input = nur lesender Zugriff ’’’N (TRANSPUTDIRECTION) output= nur schreibender Zugriff ’’’’’’’’’’’’’’’N modify= lesender und schreibender Zugriff. ’’’’’2) seinen Namen. ’’’’’’’’’’’’’^Betriebsrichtung und Name werden in der Assoziierungsprozedur 'sequential file'’’’’’’’’’’’’’’’(siehe Kap 2.8.2) festgelegt. N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’ TEXT VAR name := ausgabe ; ’> FILE VAR f := sequential file(output,name) ; ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’^Das Festlegen einer Betriebsrichtung impliziert eine Kontrolle der Benutzung der’’’’’’’’’’’’’’Nbetreffenden Datei, hilft somit Programmierfehler zu vermeiden. ’’’’’’’’’’’’’’~ACHTUNG : #on("b")##on("u")#Alle#off("b")##off("u")# Prozeduren, die auf FILEs zugreifen, verlangen Objekte vom Typ’’’’’’’’’’^ FILE VAR, da die Lese/Schreiboperationen als Łndernd betrachtet werŻ’’’’’’’’’’’’’’’ den (mŪssen). ’’’’’5.3.1 Assoziierung ’’’’’’’’’’'sequential file' ’’’’’’’’’’’’n #on("b")#FILE PROC sequential file (TRANSPUTDIRECTION CONST mode, DATASPACE VAR ds) #off("b")# ’’’’’’’’’’’^ Assoziierung einer sequentiellen Datei mit dem Dataspace 'ds' und der BetriebsŻ’’’’’’’’’’’’^ richtung 'mode' (vergl. 'modify', 'input' bzw. 'output'). Diese Prozedur dient zur’’’’’’’’’N Assoziierung eines temporŁren Datenraums in der Benutzer-Task, der nach der^ Beendigung des Programmlaufs nicht mehr zugriffsfŁhig ist (weil der Name des’’’’’’’’’’’’’’’^ Datenraums nicht mehr ansprechbar ist). Somit muū der Datenraum explizit vom’’’’’’’’’’’’’’’ Programm gelŚscht werden. ’n #on("b")#FILE PROC sequential file (TRANSPUTDIRECTION CONST mode,TEXT CONST name)#off("b")# ’’’’’’’’’’’’’’’^ Assoziierung einer sequentiellen Datei mit dem Namen 'name' und der BetriebsŻ’’’’’’’’’’’’’’^ richtung 'mode' (vergl. 'input' bzw. 'output'). Existiert der FILE bereits, dann wird’’’’’’^ mit 'input' auf den Anfang des FILEs, bei 'output' hinter den letzten Satz der datei’’’’’’’N positioniert. Existiert dagagen der FILE noch nicht und ist die’’’’’’’’’’’’N TRANSPUTDIRECTION 'output' oder 'modify', wird ein neuer FILE eingerichŻ’’’. FEHLER : "name" gibt es nicht" ’’’’’’’’’’’’^ Es wurde versucht, einen nicht vorhandenen FILE mit 'input' zu assoŻ’’’’’’’’’’’’’ ziieren. ’’’’’’’’> #on("b")#PROC input (FILE VAR f) #off("b")# ’’’’’’’’’’’’’’’^ Öndern der Verarbeitungsart von 'modify' oder 'output' in 'input'. Dabei wird auf’’’’’’’’’’. den ersten Satz der Datei positioniert. ’’’> #on("b")#TRANSPUTDIRECTION CONST input #off("b")# ’’’’’’’’’^ Assoziierung in Zusammenhang mit der Prozedur 'sequential file' einer sequentielŻ’’’’’’’’’’> len Datei mit der 'TRANSPUTDIRECTION' 'input' (nur lesen). > #on("b")#PROC output (FILE VAR file) #off("b")# ’’’’’’’’’’’^ Öndern der Verarbeitungsart von 'input' oder 'modify' in 'output'. Dabei wird hinter’’’’’’’. den letzten Satz der Datei positioniert. ’’> #on("b")#TRANSPUTDIRECTION CONST output #off("b")# ’’’’’’’’^ In Verbindung mit der Prozedur 'sequential file' kann eine Datei assoziiert werden’’’’’’’’’> mit der Betriebsrichtung 'output' (nur schreiben). ’’’’’’’’> #on("b")#PROC modify (FILE VAR f) #off("b")# ’’’’’’’’’’’’’’^ Öndern der Betriebsrichtung von 'input' oder 'output' in die Betriebsrichtung 'moŻ’’’’’’’’’> #on("b")#TRANSPUTDIRECTION CONST modify #off("b")# ’’’’’’’’^ Diese Betriebsrichtung erlaubt das VorwŁrts- und RŪckwŁrts-Positionieren und’’’’’’’’’’’’’’’^ das beliebige EinfŪgen und LŚschen von SŁtzen. 'modify' wird fŪr die AssoziieŻ’’’’’’’’’’’’’. rungsprozedur 'sequential file' benŚtigt. ’5.3.2 Informationsprozeduren > #on("b")#BOOL PROC eof (FILE CONST file) #off("b")# ’’’’’’’^ Informationsprozedur auf das Ende eines FILEs. Liefert den Wert TRUE, sofern’’’’’’’’’’’’’’’> hinter den letzten Satz eines FILEs positioniert wurde. ’’’> #on("b")#INT PROC line no (FILE CONST file) #off("b")# ’’’’. Liefert die aktuelle Zeilennummer. ’’’’’’’’""27"R"2""093""27"R"0"" ; #right#(* UE *) ’’’’’^ ""217"" , ""27"R"2""123""27"R"0"" ; #right#(* ae *) ’’’’’^ ""218"" , ""27"R"2""124""27"R"0"" ; #right#(* oe *) ’’’’’^ ""219"" , ""27"R"2""125""27"R"0"" ; #right#(* ue *) ’’’’’^ ""220"" , "k" ; #right#(* Trenn-k *) ’’’’’^ ""221"" , "-" ; #right#(* Trennstrich *) ’’’’’^ ""222"" , "Ž" ; #right#(* geschŪtztes Nummernkreuz *) ’’’’’^ ""223"" , " " ; #right#(* geschŪtztes Leerzeichen *) ’’’’’^ ""251"" , ""27"R"2""126""27"R"0"" ; #right#(* ss *) ’’’’’^ ""252"" , ""27"R"2""064""27"R"0"" ; #right#(* Paragraph *) ’’’’’^ FONT : "12", "elite", "elite12" ; #right#(* Mehrere Namen fŪr einen Font *) ’’’’’. font height = 36 ; ’’’’’’’’’’’’’’’. indentation pitch = 10 ; ’’’’’’’’’’’’’’’. next smaller font = "12.klein" ; ’’’’’’’> font string = ""27"!"1""27"p"0""27"T" ; ’’’’’’’’’’ bold offset = 2 ; > FONT : "12.klein", "elite.klein", "elanlist" ; ’’’’’’’’’. font height = 20 ; ’’’’’’’’’’’’’’. indentation pitch = 10 ; ’’’’’’’’’’’’’’. next smaller font = "12.klein" ; ’’’’’’> font string = ""27"!"1""27"p"0""27"S"1"" ; ’’’’’’. bold offset = 1 ; ’’’’’’’’’’’’’’’ FONT : "12.hoch" ; ’’’’’’’. font height = 96 ; ’’’’’’’’’’’’’’. indentation pitch = 10 ; ’’’’’’’’’’’’’’. next smaller font = "12.klein" ; ’’’’’’. font string = "" ; ’’’’’’’’’’’’’’. bold offset = 2 ; ’’’’’’’’’’’’’’’n y offsets = 12, -12 ;#right#(* der Text wird jeweils 12 Mikroschritte unter- ’’’’’’’’’’’’’’’^ #right# und Ūberhalb der Basislinie ausgegeben *) ’’’’’’. FONT : "prop10", "prop" ; ’’’’’’’’’’’’’’’. font height = 12 ; ’’’’’’’’’’’’’’. indentation pitch = 24 ; ’’’’’’’’’’’’’’. next smaller font = "" ; ’’’’’’’’’’’’’’> font string = ""27"!"0""27"p"1""27"T" ; ’’’’’’’’’. bold offset = 2 ; ’’’’’’’’’’’’’’’ "!" , 10 ; ’’’’’’’’’’’ """" , 16 ; ’’’’’’’’’’’ "(" , 12 ; ’’’’’’’’’’’>#ib(9)#7.5. Schnittstelle des #ib#Fontspeicher#ie#s#ie(9)# ’’’NDas Paket #on("i")#font store#off("i")# liefert die folgenden Prozeduren: ’’’’#ib#fonttable#ie# ’’’’’’’’’’’’> PROC fonttable (TEXT CONST fonttable name) ’’’’’’’’’’’’’’^ Zweck: Stellt die angegebene Fonttabelle in der Task ein. Dabei wird zuerst in’’’’’’’’’’^ der eigenen Task nach der angegebenen Fonttabelle gesucht. Existiert’’’’’’’’’’’’’^ die Fonttabelle in der eigenen Task nicht, so wird die Fonttabelle von’’’’’’’’’’’. der Task "configurator" geholt. ’^ Wenn die Fonttabelle eingestellt ist, sind in der Task nur noch die Fonts’’’’’’’’^ dieser Fonttabelle bekannt. Die Einstellung vererbt sich auf die SohnŻ’’’’’’’’’’’ tasks. ’’’’’’’’’’ TEXT PROC fonttable ’’’’’> Zweck: Liefert den Name der eingestellten Fonttabelle. ’#ib#list fonttables#ie# ’’’’’’ PROC list fonttables ’’’’^ Zweck: Zeigt die Liste der verfŪgbaren Fonttabellen im #on("i")#notebook#off("i")#. ’’’’#ib#list fonts#ie# ’’’’’’’’’’’ PROC list fonts ’’’’’’’’’^ Zweck: Listet die Fonts der eingestellten Tabelle ins #on("i")#notebook#off("i")#. ’’’’’> PROC list fonts (TEXT CONST fonttable name) ’’’’’’’’’’’’’n Zweck: Listet die Fonts der angegebenen Fonttabelle ins #on("i")#notebook#off("i")#. Die vorher’’’’’’’’’N eingestellte Fonttabelle bleibt jedoch weiter eingestellt. ’’’’’’#ib#x step conversion#ie# ’’’’> INT PROC x step conversion (REAL CONST cm) ’’’’’’’’’’’’’’N Zweck: Rechnet die in Zentimeter angegebene LŁnge in Mikroschritte der’’ x-Richtung um. ’’> REAL PROC x step conversion (INT CONST steps) ’’’’’’’’’’’N Zweck: Rechnet die in Mikroschritten der x-Richtung angegebene LŁnge in’ Zentimeter um. ’’#ib#y step conversion#ie# ’’’’> INT PROC y step conversion (REAL CONST cm) ’’’’’’’’’’’’’’N Zweck: Rechnet die in Zentimeter angegebene LŁnge in Mikroschritte der’’ y-Richtung um. ’’> REAL PROC y step conversion (INT CONST steps) ’’’’’’’’’’’N Zweck: Rechnet die in Mikroschritten der y-Richtung angegebene LŁnge in’ Zentimeter um. ’’#ib#on string#ie# ’’’’’’’’’’’’> TEXT PROC on string (INT CONST modification) ’’’’’’’’’’’’^ Zweck: Liefert die in der Fonttabelle spezifizierte Befehlssequenz, um eine’’’’’’’’’’’’’N Modifikation anzuschalten. Es gibt die folgenden Modifikationen ’. 1 underline ’’’’’’’’’’’ 2 bold . 4 italics ’’’’’’’’’’’’’. 8 reverse ’’’’’’’’’’’’’#ib#off string#ie# ’’’’’’’’’’’> TEXT PROC off string (INT CONST modification) ’’’’’’’’’’’^ Zweck: Liefert die in der Fonttabelle spezifizierte Befehlssequenz, um eine’’’’’’’’’’’’’N Modifikation auszuschalten. Es gibt die folgenden Modifikationen . 1 underline ’’’’’’’’’’’ 2 bold . 4 italics ’’’’’’’’’’’’’. 8 reverse ’’’’’’’’’’’’’. INT PROC font (TEXT CONST font name) ’’’’N Zweck: Liefert die interne Fontnummer des Fonts. Mit dieser Fontnummer’’^ kŚnnen die weiteren Informationen Ūber den Font angefordert werden.’’’’’’’’’’’’’’N Existiert kein Font mit diesem Namen, so wird Null geliefert. ’’’. TEXT PROC font (TEXT CONST font nr) ’’’’’N Zweck: Liefert den Fontnamen des Fonts mit der angegeben Fontnummer. Hat^ der Font mehrere Namen, so wird der erste Name der Namensliste aus’’’’’’’’’’’’’’’^ der Fontdatei geliefert. Existiert kein Font unter dieser Nummer, so wird’’’’’’’’> #on("i")#niltext#off("i")# geliefert. ’’’’’’’’’’’#ib#font exists#ie# ’’’’’’’’’’> BOOL PROC font exists (TEXT CONST font name) ’’’’’’’’’’’’N Zweck: Informationsprozedur zur Abfrage der Existenz eines Fonts. ’’’’’’.#ib#next smaller font exists#ie# ’’’’’’’’’’’’’> BOOL PROC next smaller font exists (INT CONST font nr, ’N INT VAR next smaller font) ’’’’’’’’’^ Zweck: Informationsprozedur zur Abfrage der Existenz des nŁchst kleineren’’’’’’’’’’’’’’’^ Fonts. Wenn er existiert, wird die Fontnummer dieses Fonts zurŪckŻ’’’’’’’’’’’’’’’ geliefert. ’’’’’’.#ib#next larger font exists#ie# ’’’’’’’’’’’’’’> BOOL PROC next larger font exists (INT CONST font nr, ’’N INT VAR next larger font) ’’’’’’’’’’’N Zweck: Informationsprozedur zur Abfrage der Existenz des nŁchst grŚūeren^ Fonts. Wenn er existiert, wird die Fontnummer dieses Fonts zurŪckŻ’’’’’’’’’’’’’’’ geliefert. ’’’’’’#ib#indentation pitch#ie# ’’’’> INT PROC indentation pitch (INT CONST font nr) ’’’’’’’’’’^ Zweck: Liefert die EinrŪckbreite in Mikroschritten der x-Richtung. Sie sollte eine’’’’’’^ mittlere Breite der Zeichen sein, denn mit ihr werden die EinrŪckungen’’’’’’’’’’’. und AufzŁhlungen berechnet. ’’’’’#ib#font lead#ie# ’’’’’’’’’’’’. INT PROC > #on("b")#PROC lines (FILE VAR f) #off("b")# ’’’’’’’’’’’’’’’> Liefert die Anzahl der Zeilen der Datei 'f'. ’’’’’’’’’’’’’’> #on("b")#TEXT PROC headline (FILE CONST f) #off("b")# ’’’’’> Liefert den Inhalt der Kopfzeile der Datei 'f'. ’’’’’’’’’’’N #on("b")#PROC headline (FILE VAR f, TEXT CONST ueberschrift) #off("b")# ’’’N Setzt #ib#'ueberschrift' in die Kopfzeile#ie# der Datei 'f'. ’’’’’’’’’’’’’’.5.3.3 Betriebsrichtung INPUT ’’’’’’’’’’’’’’’^In der Betriebsrichtung 'input' sind nur Leseoperationen auf der Datei zugelassen. Die’’’’’’’’>Assoziierungsprozedur 'sequential file' bewirkt: ’’’’’’’’’’’’’^1) Falls die Eingabedatei noch nicht existiert, wird eine Fehlermeldung ausgegeben. ’’’’’’’’’’N2) Falls es eine Datei des Namens gibt, wird auf das erste Zeichen des ersten’ Satzes positioniert. ’’’’’’> #on("b")#PROC get (FILE VAR f, INT VAR number) #off("b")# ’N Lesen des nŁchsten Wortes aus der Datei 'f' und Konvertierung des Wortes zu einem Integer-Objekt. ’’’’’> #on("b")#PROC get (FILE VAR f, REAL VAR number) #off("b")# N Lesen des nŁchsten Wortes aus der Datei 'f' und Konvertierung des Wortes zu einem Real-Objekt. ’’’’’’’’> #on("b")#PROC get (FILE VAR f, TEXT VAR text) #off("b")# ’’> Lesen des nŁchsten Wortes aus der Datei 'f'. ’’’’’’’’’’’’’’^ #on("b")#PROC get (FILE VAR f, TEXT VAR text, TEXT CONST delimiter)#off("b")# ’’’’’’’’’’’’’^ Lesen eines TEXT-Wertes 'text' von der Datei 'f', bis das Zeichen 'delimiter'’’’’’’’’’’’’’’^ angetroffen wird. Ein eventueller Zeilenwechsel in der Datei wird dabei ŪberganŻ’’’’’’’’’’’^ #on("b")#PROC get (FILE VAR f, TEXT VAR text, INT CONST maxlength)#off("b")# ’’’’’’’’’’’’’’^ Lesen eines TEXT-Wertes 'text' von der Datei 'f' mit 'maxlength' Zeichen. Ein’’’’’’’’’’’’’’N eventueller Zeilenwechsel in der Datei wird dabei nicht Ūbergangen. ’’’’’’’N #on("b")#PROC get line (FILE VAR file, TEXT VAR record) #off("b")# ’’’’’’’’N Lesen der nŁchsten Zeile aus der sequentiellen Datei 'file'. ’’’’’’’’’’’’’’> MŚgliche Fehler bei Betriebsrichtung 'input': ’’’’’’’’’’’’’ "Datei zu" ’’’’’’’N Die Datei 'file' ist gegenwŁrtig nicht assoziiert. ’’’’’’’’’’’’’’. "Leseversuch nach Dateiende" ’’’’’N Es wurde versucht, Ūber die letzte Zeile einer Datei zu lesen. ’’. "Leseversuch auf output file" ’’’’^ Es wurde versucht, von einem mit 'output' assoziierten FILE zu lesen. ’’’’’’’’’’’> "UnzulŁssiger Zugriff auf modify-FILE" ’’’’’’’’’’’.5.3.4 Betriebsrichtung OUTPUT ’’’’’’’’’’’’’’^In der Betriebsrichtung 'output' sind nur Schreiboperationen auf der Datei zugelassen.’’’’’’’’>Die Assoziierungsprozedur 'sequential file' bewirkt: ’’’’’’’’’^1) Falls die Ausgabedatei noch nicht existiert, wird sie angelegt und auf den ersten’’’’’’’’’’ Satz positioniert. ’’’’’’’’^2) Falls es bereits eine Datei des Namens gibt, wird hinter den letzten Satz positioŻ’’’’’’’’’> niert, die Datei wird also fortgeschrieben. ’’’’’’’’’’’’’’’N #on("b")#PROC put (FILE VAR f, INT CONST number) #off("b")# ’’’’’’’’’’’’’’’^ Ausgabe eines INT-Wertes 'number' in die Datei 'f'. Dabei wird ein Leerzeichen’’’’’’’’’’’’’ an die Ausgabe angefŪgt. ’’N #on("b")#PROC put (FILE VAR f, REAL CONST number) #off("b")# ’’’’’’’’’’’’’’^ Ausgabe eines REAL-Wertes 'number' in die Datei 'f'. Dabei wird ein LeerzeiŻ’’’’’’’’’’’’’’’. chen an die Ausgabe angefŪgt. ’’’’’’’’’’’’’> #on("b")#PROC put (FILE VAR f, TEXT CONST text) #off("b")# ^ Ausgabe eines TEXT-Wertes 'text' in die Datei 'f'. Dabei wird ein Leerzeichen an’’’’’’’’’’’ die Ausgabe angefŪgt. ’’’’’N #on("b")#PROC putline (FILE VAR file, TEXT CONST record) #off("b")# ’’’’’’’^ Ausgabe eines TEXTes 'record' in die Datei 'file'. Danach wird auf die nŁchste’’’’’’’’’’’’’N Zeile positioniert. 'file' muū mit 'output' assoziiert sein. ’’’’’’’’’’’’’’N #on("b")#PROC write (FILE VAR f, TEXT CONST text) #off("b")# ’’’’’’’’’’’’’’^ Schreibt 'text' in die Datei 'f' (analog 'put (f, text)'), aber ohne Trennblank. ’’’’’’’’’’> #on("b")#PROC line (FILE VAR file) #off("b")# ’’’’’’’’’’’’’^ Positionierung auf die nŁchste Zeile der Datei 'file'. Wird versucht, Ūber das Ende’’’’’’’’^ eines mit 'input' assoziierten FILEs zu positionieren, wird keine Aktion vorgenomŻ’’’’’’’’’N #on("b")#PROC line (FILE VAR file, INT CONST lines) #off("b")# ’’’’’’’’’’’’N Positionierung mit 'lines' Zeilen Vorschub in der Datei 'file'. ’’’’’’’’’’’ FEHLER: "Datei zu!" ’’’’’’N Die Datei 'file' ist gegenwŁrtig nicht assoziiert. ’’’’’’’’’’’’’’. "Schreibversuch auf input-File" ’’N Es wurde versucht, auf einen mit 'input' assoziierten FILE zu’’’’ schreiben. ’’’’’’^ Bei Textdateien, die mit dem Editor weiterbearbeitet werden sollen, ist also zu’’’’’’’’’’’’^ beachten: ine Ausgabe mit 'put' setzt ein 'blank' hinter die Ausgabe. Falls dieses’’’’’’’’’^ Leerzeichen das letzte Zeichen in der Zeile ist, wird eine Absatzmarke in der Zeile’’’’’’’’^ gesetzt. Wird mit 'write' oder 'putline' ausgegeben, steht kein Leerzeichen und’’’’’’’’’’’’. somit keine Absatzmarke am Zeilenende. ’’’’.5.3.5 Betriebsrichtung MODIFY ’’’’’’’’’’’’’’^In der Betriebsrichtung 'modify' sind Lese- und Schreiboperationen auf der Datei’’’’’’’’’’’’’’^zugelassen. Desweiteren ist beliebiges Positionieren in der Datei erlaubt. Neue SŁtze’’’’’’’’’^kŚnnen an beliebiger Stelle in die Datei eingefŪgt werden, die sequentielle Struktur’’’’’’’’’’^der Datei bleibt erhalten. Die Assoziierungsprozedur 'sequential file' bewirkt: ’’’’’’’’’’’’’’N1) Falls die Ausgabedatei noch nicht existiert, wird sie angelegt. ’’’’’’’’’’’^2) Falls es bereits eine Datei des Namens gibt, ist undefiniert wo positioniert ist. Die’’’’’’> erste Positionierung muū explizit vorgenommen werden! ’’’’’N #on("b")#PROC col (FILE VAR f, INT CONST position) #off("b")# ’’’’’’’’’’’’’N Positionierung auf die Spalte 'position' innerhalb der aktuellen Zeile. ’’’> #on("b")#INT PROC col (FILE CONST f) #off("b")# ’’’’’’’’’’’N Liefert die aktuelle Position innerhalb der aktuellen Zeile. ’’’’’’’’’’’’’’. #on("b")#PROC down (FILE VAR f) #off("b")# . Positionieren um eine Zeile vorwŁrts. ’’’’’N #on("b")#PROC down (FILE VAR f, INT CONST number) #off("b")# ’’’’’’’’’’’’’’. Positionieren um 'number' Zeilen vorwŁrts. N #on("b")#PROC to line (FILE VAR f, INT CONST number) #off("b")# ’’’’’’’’’’’. Positionierung auf die Zeile 'number'. ’’’’. #on("b")#PROC up (FILE VAR f) #off("b")# ’’. Positionieren um eine Zeile rŪckwŁrts. ’’’’> #on("b")#PROC up (FILE VAR f, INT CONST number) #off("b")# > Positionieren um 'number' Zeilen rŪckwŁrts. ’’’’’’’’’’’’’’’'delete record' ’’’’’’’’’’’’’’> #on("b")#PROC delete record (FILE VAR file) #off("b")# ’’’’^ Der aktuelle Satz der Datei 'file' wird gelŚscht. Der folgende Satz wird der aktuelle’’’’’’'insert record' ’’’’’’’’’’’’’’> #on("b'PROC insert record (FILE VAR file) #off("b")# ’’’’’’^ Es wird ein leerer Satz in die Datei 'file' vor die aktuelle Position eingefŪgt. Dieser’’’’^ Satz kann anschlieūend mit 'write record' beschrieben werden (d.h. der neue Satz’’’’’’’’’’’. ist jetzt der aktuelle Satz). ’’’’’’’’’’’’’'read record' N #on("b")#PROC read record (FILE CONST file, TEXT VAR record) #off("b")# ’’’^ Liest den aktuellen Satz der Datei 'file' in den TEXT 'record'. Die Position wird’’’’’’’’’’ dabei nicht verŁndert. ’’’’'write record' ’’’’’’’’’’’’’’’N #on("b")#PROC write record (FILE VAR file, TEXT CONST record) #off("b")# ’’^ Schreibt einen Satz in die Datei 'file' an font lead (INT CONST font nr) ’’^ Zweck: Liefert den Durchschuss des Fonts in Mikroschritten der y-Richtung.’’’’’’’’’’’’’’N Der Druchschuū ist der Zwischenraum zwischen den einzelnen Zeilen. bei einfachem Zeilenvorschub. ’’’#ib#font height#ie# ’’’’’’’’’’. INT PROC font height (INT CONST font nr) ^ Zweck: Liefert die HŚhe des Fonts in Mikroschritten der y-Richtung. Die FonŻ’’’’’’’’’’’’^ thŚhe ist die Distanz von der Basislinie bis zur Oberkante des hŚchsten’’’’’’’’’’ Zeichens. ’’’’’’’#ib#font depth#ie# ’’’’’’’’’’’. INT PROC font depth (INT CONST font nr) ’^ Zweck: Liefert die Tiefe des Fonts in Mikroschritten der y-Richtung. Die FonttieŻ’’’’’’’^ fe ist die Distanz von der Basislinie bis zur Unterkante des tiefsten’’’’’’’’’’’’ Zeichens. ’’’’’’’#ib#font string#ie# ’’’’’’’’’’> TEXT PROC font string (INT CONST font nr) ’’’’’’’’’’’’’’’^ Zweck: Liefert den Fontstring des Fonts. Der Fontstring enthŁlt die BefehlsŻ’’’’’’’’’’’’N sequenz, um den Drucker auf diesen Font umzuschalten. ’’’’’’’’’’’#ib#y offsets#ie# ’’’’’’’’’’’’. TEXT PROC y offsets (INT CONST font nr) ’^ Zweck: Liefert einen Text mit den y-Verschiebungen von der Basislinie. Die’’’’’’’’’’’’’’N einzelnen Verschiebungen kŚnnen mit dem Operator 'ISUB' abgefragt werden. ’’’’’’’’’#ib#bold offsets#ie# ’’’’’’’’’> INT PROC bold offsets (INT CONST font nr) ’’’’’’’’’’’’’’’. Zweck: Liefert die 'bold'-Verschiebung. #ib#char pitch#ie# ’’’’’’’’’’’> INT PROC char pitch (INT CONST font nr, TEXT CONST char) ^ Zweck: Liefert die Breite des Zeichens in Mikroschritten der x-Richtung. ’’’’’’’’’’’’’’’#ib#replacement#ie# ’’’’’’’’’’N TEXT PROC replacement (INT CONST font nr, TEXT CONST char) ’’’’’’’’’’’’’’^ Zweck: Falls das Zeichen eine Ersatzdarstellung hat, so wird diese geliefert,’’’’’’’’’’’. anderfalls das Zeichen selbst. ’’#ib#get font#ie# ’’’’’’’’’’’’’. PROC get font (INT CONST font nr, ’’’’’’^ INT VAR indentation pitch, font lead, font height, font depth, ’’’’’’’’’’> ROW 256 INT VAR pitch table) ’’’’’’’’’’’’N Zweck: Die Variablen liefern die entsprechenden Informantionen Ūber den’^ Font. Der Eintrag des Codewerts eines Zeichens plus eins in der BreiŻ’’’’’’’’’’’’> tentabelle liefert die Breite dieses Zeichens. ’’#ib#get replacements#ie# ’’’’’> PROC get replacements (INT CONST font nr, ’’’’’’’’’’’’’’> TEXT VAR replacements, ’’’’’’’’’’N ROW 256 INT VAR replacement table) ’’’’’’’’’’’’’’^ Zweck: In der Fonttabelle kann fŪr jedes Zeichen eine Ersatzdarstellung anŻ’’’’’’’’’’’’’^ gegeben werden. Diese Ersatzdarstellungen werden mit dieser ProzeŻ’’’’’’’’’’’’’’’^ dur geliefert. Dabei stehen in der Textvariablen 'replacement' die geŻ’’’’’’’’’’’^ samten Ersatzdarstellungen des Fonts. Die Ersatzdarstellungstabelle’’’’’’’’’’’’’’^ enthŁlt Zeiger auf den Text der Ersatzdarstellungen. Die ErsatzdarstelŻ’’’’’’’’’’> lung eines Zeichnes bestimmt sich wie folgt: ’’’’ ersatzdarstellung : ’’’’’N INT CONST wert := replacement table (code( zeichen ) + 1); ’’’’’’’’’’’’ IF wert > 0 ’’’’’’’’’’’N THEN INT CONST ende := wert + code (replacements SUB wert); ’’’’’’’’> subtext (replacements, wert + 1, ende) ’’’’’’’’ ELSE zeichen ’’’’’’’nBei den Prozeduren des Packets #on("i")#font store#off("i")# kŚnnen die folgenden FehlerfŁlle auftreten: ’’’’’. - Fonttabelle noch nicht eingestellt ’’’N Es wurde noch keine Fonttabelle in der Task eingestellt. ’’’’’’’’’’’> - Fonttabelle "fonttable name" gibt es nicht ’’’’’’’’’’’^ Die angegebene Fonttabelle wurde weder in der eigenen Task, noch in der’’’’’’’’’’’’’. Task 'configurator' gefunden. ’’’’’’. - Font 'font nr' gibt es nicht ’’’’’’’’’N Unter der angegebenen Fontnummer gibt es in der eingestellten FontŻ’^ tabelle keinen Font. Speziell ist das fŪr 'font nr' = 0 der Fall, falls ein FontŻ’’’. name nicht gefunden wurde. ’’’’’’’’’. - unzulaessige Modifikation ’’’’’’’’’’’’N Die angegebene Modifikation ist ungleich 1, 2, 4 oder 8. ’’’’’’’’’’’%#center#EUMEL-Systemhandbuch .#center#8. Verschiedenes#right#% ’’’’’’’’’’’’’.#ib(9)#8. Verschiedenes#ie(9)# ’’’’’’’’’’’’’’’.#ib(9)#8.1. Der Spoolmanager#ie(9)# ’’’’’’’’’’nDer "#ib#Spoolmanager#ie#" verwaltet eine #ib#Warteschlange von DatenrŁumen#ie# (Dateien), die von’’’’’’’’’’’’^einem "#ib#Server#ie#" abgearbeitet werden sollen. Dabei puffert der Spoolmanager Dateien,’’’’^die von beliebigen Tasks geschickt werden kŚnnen, in einer Warteschlange und gibt’’’’’’’’’’’’’^sie der Reihe nach dem Server zur eigentlichen Verarbeitung. Ein typischer Einsatzfall’’’’’’’’^(aber nicht der einzige) fŪr ein solches System ist der Druck von Dateien in Multi-’’’’’’’’’’’NUser-Systemen. UnabhŁngig davon, ob der Drucker gerade aktiv ist und wieviele’^Dateien noch auf den Ausdruck warten, kann jeder seine Datei dem Druckerspool (in’’’’’’’’’’’’’Nder Regel die Task "PRINTER") senden und sofort danach weiterarbeiten. ’’’’’’’.#ib(9)#Prozeduren des Spoolmanagers#ie(9)# ’’’NIm privilegierten Ast des Taskbaumes (SŚhne von "SYSUR"), stehen die folgenden>Prozeduren zur Einrichtung eines Spoolmanagers zur VerfŪgung. #ib#spool manager#ie# ’’’’’’’’> PROC spool manager (PROC server, BOOL CONST with start) ’^ Zweck: Die Task, in der die Prozedur aufgerufen wird, wird zum Spoolmanager.’’’’’’’’’’’’’^ Wenn 'with start' auf TRUE gesetzt ist, wird eine Server-Task als unbeŻ’’’’’’’’’’^ nannter Sohn ("-") eingerichtet und mit der Ūbergebenen 'PROC server'’’’’’’’’’’’’’^ gestartet. Anderfalls muū der Spool durch den Benutzer mit Hilfe der’’’’’’’’’’’’’’> Spoolkommandos (siehe dort) gestartet werden. ’’’’. PROC spool manager (PROC server) ’’’’’’’’^ Zweck: Diese Prozedur ruft die Prozedur 'spool manager' mit 'with start' gleich’’’’’’’’’’ TRUE auf. ’’’’’’’’NMit Hilfe der folgenden Prozeduren kann der Spool eingestellt werden. ’’’’’’’’#ib#station only#ie# ’’’’’’’’’. PROC station only (BOOL CONST flag) ’’’’’N Zweck: Wenn flag auf TRUE gesetzt ist, nimmt der Spooler nur AuftrŁge von> Tasks der eigenen Station entgegen. ’’’’’’’’’’’’’’> Voreinstellung: 'station only (FALSE)'. ’’’’’’’’’’ BOOL PROC station only ’’N Zweck: liefert TRUE, wenn der Spooler nur von der eigenen Station benutzt werden darf. ’’’’’#ib#spool duty#ie# ’’’’’’’’’’’. PROC spool duty (TEXT CONST duty) ’’’’’’’^ Zweck: Mit dieser Prozedur kann ein Text im Spooler eingestellt werden, der die’’’’’’’’’’^ Aufgabe des Spoolers beschreibt. Dieser wird beim 'list' gemeldet. ’’’’’’’’’’’’’’’ TEXT PROC spool duty ’’’’^ Zweck: Liefert die eingestellte Text-Beschreibung der Aufgabe des Spools. ’’’’’’’’’’’’’’’#ib#spool control task#ie# ’’’> PROC spool control task (TASK CONST task) ’’’’’’’’’’’’’’’^ Zweck: Diese Prozedur gibt der Task 'task' und ihrer SŚhne die Berechtigung’’’’’’’’’’’’’’^ Spoolkommandos (z.B. 'stop' oder 'start') an den Spoolmanager zusenŻ’’’’’’’’’’’’’’^ den. Dabei muū die Task auf derselben Station wie der Spool sein und’’’’’’’’’’’’’’^ in der Task muū die Datei "spool cmd", die sich auf dem StandardarŻ’’’’’’’’’’’’’’’die aktuelle Position. Dieser Satz muū’’’’’’’’’’^ bereits vorhanden sein, d.h. mit 'write record' kann keine leere Datei beschrieben’’’’’’’’’^ werden, sondern es wird der Satz an der aktuellen Position Ūberschrieben. Die’’’’’’’’’’’’’’> Position in der Datei wird nicht verŁndert. ’’’’’’’’’’’’’’’5.3.6 FILE -Ausschnitte ’’’’’NÖhnlich den Editorfunktionen 'ESC RUBOUT' und 'ESC RUBIN', die erlauben ganze’^Abschnitte einer Datei zu lŚschen und das GelŚschte an anderer Stelle wiedereinzuŻ’’’’’’’’’’’’>fŪgen, gibt es die MŚglichkeit per Programm solche Segmente ’’.eines 'modify-FILEs' zu verschieben. ’’’’’’’’’'clear removed' ’’’’’’’’’’’’’’> #on("b")#PROC clear removed (FILE VAR f) #off("b")# ’’’’’’’^ Das mit 'remove' entfernte Segment wird gelŚscht und nicht an anderer Stelle’’’’’’’’’’’’’’’ eingefŪgt. > #on("b")#PROC reinsert (FILE VAR f) #off("b")# ’’’’’’’’’’’’^ Das mit 'remove' entfernte Segment wird vor die aktuelle Zeile wiedereingefŪgt. ’’’’’’’’’’’N #on("b")#PROC remove (FILE VAR f, INT CONST size) #off("b")# ’’’’’’’’’’’’’’^ LŚscht 'size' Zeilen vor der aktuellen Position aus 'f'. Das Segment wird in einen’’’’’’’’’. internen Puffer geschrieben. ’’’’’’’’’’’’’’> #on("b")#PROC reorganize (TEXT CONST datei)#off("b")# ’’’’’N Reorganisation von 'datei'. Die durch LŚschen und EinfŪgen aus vielen’’’’’’N Segmenten bestehende Datei wird zu einem Segment zusammengefŪgt, die’’’’’’’N aktuelle Position ist danach das erste Zeichen der ersten Zeile. ’’’’’’’’’’N Durch diese Prozedur kann ggf. Speicherplatz gespart werden. ’’’’’’’’’’’’’’. #on("b")#PROC reorganize#off("b")# ’’’’’’’’> Reorganisation der zuletzt bearbeiteten Datei. ’’’’’’’’’’’’> #on("b")#PROC segments (FILE VAR f) #off("b")# ’’’’’’’’’’’’^ Liefert die Anzahl der Segmente von 'f'. Eine groūe Anzahl von Segmenten kann’’’’’’’’’’’’’’. langsamere Zugriffe zur Folge haben. ’’’’’’.5.4 Suchen und Ersetzen in Textdateien ’’’’’’NSuch- und Ersetzungsprozeduren kŚnnen sowohl interaktiv beim Editieren (siehe’^dazu 3.3), als auch in Prozeduren, die auf FILEs (siehe 5.3) arbeiten, angewandt’’’’’’’’’’’’’’^Die dazu dienenden Prozeduren sind im Paket 'pattern match' enthalten. Mit 'Pattern’’’’’’’’’’’^Matching' (Muster treffen) wird ein Verfahren bezeichnet Gleichheit von Objekten’’’’’’’’’’’’’’Nanhand von Regeln, denen diese Objekte genŪgen, zu ŪberprŪfen. ’’’’’’’’’’’’’’’^Da oft nach Texten gesucht werden muū, deren genaue AusprŁgung nicht bekannt ist,’’’’’’’’’’’’’^oder deren Auftreten nur in einem bestimmten Zusammenhang interessiert, gibt es die’’’’’’’’’’’NMŚglichkeit feststehende Textelemente mit Elementen ungewisser AusprŁgung zu’’.kombinieren, also Textmuster zu erzeugen. ’’’’NUm einen Text zu suchen, muū die Suchrichtung und der gesuchte Text oder ein’’>Muster, welches diesen Text beschreibt, angegeben werden. ’’’’N- Aufbauen von Textmustern : + , - , OR , any , bound , notion ’’’’’’’’’’’’’’>- Suchen nach Textmustern : down , downety , up , uppety ’’’N- Treffer registrieren : LIKE , UNLIKE , at , pattern found ’’’’’’’’’’’’’N- Treffer herausnehmen : ** , match , matchend , matchpos , ’’’’’’’’’’’’’. somefix , word ’.- Öndern in Dateien : change ’’’’’’’’’^Nach einem erfolgreichen Suchvorgang ist stets auf das erste Zeichen der zu suchŻ’’’’’’’’’’’’’.enden Zeichenkette positioniert. ’’’’’’’’’’’’’^Eine besondere Funktion kommt dem 'joker' zu: Dieses Symbol (Defaultwert: '*') steht’’’’’’’’’’^fŪr eine beliebige Zeichenkette beliebiger LŁnge. Insbesondere bei Ersetzungsaktionen’’’’’’’’’^in denen dieses Zeichen zur Musterbeschreibung verwendet wird, ist daher Vorsicht’’’’’’’’’’’’’.geboten und sorgfŁltig zu testen. ’’’’’’’’’’’’5.4.1 Aufbau von Textmustern > #on("b")#TEXT OP + (TEXT CONST links, rechts) #off("b")# ’’^ Verkettung der Texte 'links' und 'rechts' zu 'linksrechts'. Falls das Ergebnis lŁnger’’’’’’N als die maximal zulŁssige TextlŁnge ist, ist es undefiniert. ’’’’’’’’’’’’’’^ Wenn 'muster1' einen beliebigen Text finden sollte, ( Siehe: PROC any) wird das’’’’’’’’’’’’N Ende des von 'muster1' erkannten Textes durch den Anfang des von 'muster2'’. erkannten Textes im Nachhinein definiert. ’> #on("b")#TEXT OP - (TEXT CONST alphabet) #off("b")# ’’’’’’’^ Der Operator liefert das zu 'alphabet' komplementŁre Alphabet, also alle Zeichen’’’’’’’’’’’^ gemŁū der EUMEL Codetabelle (5.2.4), die nicht in 'alphabet' enthalten sind.’’’’’’’’’’’’’’’> Sinnvoll im Zusammenhang mit der Textprozedur 'any'. ’’’’’’> #on("b")#TEXT OP OR (TEXT CONST links, rechts) #off("b")# ’^ Liefert die Alternative von 'links' und 'rechts'. Die Reihenfolge spielt beim Suchen’’’’’’’ keine Rolle. ’’’’’’’’’’’’’’N Die Textprozedur 'any' liefert einen unbekannten Text unbestimmter LŁnge.’’^ Dieser Text sollte entweder durch festen Text sinnvoll eingegrenzt werden, oder’’’’’’’’’’’’. direkt eingeschrŁnkt werden. ’’’’’’’’’’’’’’. #on("b")#TEXT PROC any #off("b")# ’’’’’’’’’. Beschreibt einen beliebigen Text. ’’’’’’’’’> #on("b")#TEXT PROC any (INT CONST laenge) #off("b")# ’’’’’’> Beschreibt einen beliebigen Text der angebenen LŁnge. ’’’’’> #on("b")#TEXT PROC any (TEXT CONST alphabet) #off("b")# ’’’^ Beschreibt einen beliebigen Text, der nur aus Zeichen besteht, die in 'alphabet'’’’’’’’’’’’ enthalten sind. ’’’’’’’’’’’N #on("b")#TEXT PROC any (INT CONST laenge, TEXT CONST alphabet) #off("b")# ’N Beschreibt einen Text der vorgegebenen LŁnge, der nur aus den in 'alphabet'. vorgegebenen Zeichen besteht. ’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’> Die Textprozedur 'any' liefert einen unbekannten Text unbeŻ N stimmter LŁnge. Dieser Text sollte entweder durch festen Text ’’’’’’’’’’’’’’N sinnvoll eingegrenzt werden, oder direkt eingeschrŁnkt werden. ’’’’’’’’’’’’’Ngib kommando: D("D" OR "d" + any (2,"aeirs") ’’’’’’’’’’’’’’> Sucht nach bestimmten Artikeln: 'der', 'die', 'das' etc. ’’N____________________________________________________________________________ ’. #on("b")#TEXT PROC bound #off("b")# ’’’’’’’^ Bezeichnet ein Muster der LŁnge null, das nur am Zeilenanfang oder am ZeilenenŻ’’’’’’’’’’’’^ de gefunden wird. Ein PrŁfix 'bound' fordert, daū das gesuchte Muster in der’’’’’’’’’’’’’’’^ ersten Spalte beginnen muū, ein Postfix 'bound' fordert, daū das Muster mit dem’’’’’’’’’’’’ Zeilenende abschlieūt. ’’’’N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’N Die Textprozedur 'any' liefert einen unbekannten Text unbeŻ ’’’’’’’’’’’’N stimmter LŁnge. Dieser Text sollte entweder durch festen ’’’’’’’’’’’’’’’N Textsinnvoll eingegrenzt werden, oder direkt eingeschrŁnkt ’’’’’’’’’’’’’ werden. Ngib kommando: U(bound + any (" ")) ’’’’’’’’’’’’’’N____________________________________________________________________________ ’. liefert Treffer bei eingerŪckten Zeilen. ’’’> #on("b")#PROC notion (TEXT CONST suchwort) #off("b")# ’’’’’n Mit dieser Prozedur kann ein #on("u")#Wort#off("u")# spezifiziert werden, nach dem gesucht werden’’’’’’’’’’^ soll. Bei der Suche nach 'suchwort' wird nur dann ein Treffer geliefert, wenn’’’’’’’’’’’’’’^ 'suchwort' als Wort, also begrenzt von ' ' (blank), '.' , ',' oder anderen SonderzeiŻ’’’’’N #on("b")#PROC notion (TEXT CONST suchwort, INT CONST reg) #off("b")# ’’’’’’> Wie oben, d. chiv befindet, insertiert werden. ^ Wird "SUPERVISOR" als Spoolkontrolltask eingestellt, so kŚnnen alle’’’’’’’’’’’’’’’^ Tasks der Station, in denen die Datei "spool cmd" insertiert ist, die’’’’’’’’’’’’’. Spoolkommandos geben. ’’’’’’’’’’’’. TASK PROC spool control task ’’’’’’’’’’’’N Zweck: Liefert die Taskidentifikation der Spoolkontrolltask. ’’’’’’’’’’’’#ib#server channel#ie# ’’’’’’’. PROC server channel (INT CONST channel) ’N Zweck: Mit Hilfe dieser Prozedur wird im Spoolmanager eine Kanalnummer’’’^ eingestellt, die der Server mit der Prozedur 'server channel' abfragen’’’’’’’’’’’’ kann. ’’’’’’’’’’’’ Fehlerfall: ’’’’’’’’’’’’’. * falsche Kanalangabe ’’’’’’’’’’’N Der angegebene Kanal ist kleiner als 1 oder grŚūerer als 32.  INT PROC serverchannel ’’N Zweck: Liefert die Nummer des Kanals, der im Spool eingestellt ist. ’’’’’n#on("b")#Anmerkung:#off("b")# Soll im nicht-privilegierten Ast des Taskbaums (SŚhne von "PUBLIC") ein’’’’’’’’^ Spool eingerichtet werden, so muū dort die Datei "spool manager", die’’’’’’’’’’’’’^ sich auf dem Standardarchiv "std.zusatz" befindet, insertiert werden. ’’’’’’’’’’’’.#ib(9)##ib#Spoolkommandos#ie##ie(9)# ’’’’’’’’’^Ein Spool kann zur Verwaltung der Warteschlange wie jede andere Task ans TermiŻ’’’’’’’’’’’’’’’^nal gekoppelt werden. Danach stehen die folgenden Spoolkommandos zur VerfŪgung.’’’’’’’’’’’’’’’^Diese Kommandos sind keine Prozeduren, sondern werden nur interpretiert. Sie dŪrfen’’’’’’’’’’’^also nur alleine eingegeben werden. Nach Beendigung der Verwaltungsaufgaben muū’’’’’’’’’’’’’’’Nder Spool mit dem Kommando 'break' verlassen werden, da sonst keine weiteren’’NAuftrŁge an den Spool gesendet werden kŚnnen und auch die Warteschlange nicht’weiter abgearbeitet wird. ’’’’^ Zweck: Die Server-Task wird gelŚscht und dadurch der Spool deaktiviert. Der’’’’’’’’’’’’’’^ Spool empfŁngt zwar noch weitere AuftrŁge und sortiert diese in die’’’’’’’’’’’’’’’^ Warteschlange ein. Die Warteschlange wird aber nicht weiterabgearbeiŻ’’’’’’’’’’’’’^ tet. Ein eventuell von der Server-Task belegter Kanal wird freigegeben. ’’’’’’’’’’^ Ist bei einem 'stop' noch ein Auftrag in Bearbeitung, so wird dieser’’’’’’’’’’’’’’^ Auftrag abrupt abgebrochen. Es wird jedoch angefragt, ob der Auftrag’’’’’’’’’’’’’’^ nochmal neu an die erste Stelle in der Warteschlange eingetragen werŻ’’’’’’’’’’’’’ den soll. ’’’’’’’’^ Ist ein Spool deaktiviert, so wird dies bei einem 'list' angezeigt, ’’’’’’’’’’’’’’^ Zweck: Der Spool deaktiviert sich nach Abarbeitung des Auftrags, der gerade’’’’’’’’’’’’’’N bearbeitet wird. Bei einem 'list' wird dies vermerkt. ’’’’’’’’’’’’#ib#start#ie# ^ Zweck: Der Spool wird aktiviert, indem eine neue Server-Task begonnen wird. Ist’’’’’’’’’’^ der Spool zuvor nicht gestoppt worden, so wird zuerst ein 'stop' durchŻ’’’’’’’’’’’ gefŪhrt. ’’’’’’’’’^ Wurde mit der Prozedur 'server channel' kein Kanal eingestellt, so wird’’’’’’’’’’’ die Warnung ’’’’’’> WARNUNG : Serverkanal nicht eingestellt ’’’’> ausgeben. Der Spool wird trotzdem gestartet. ’’’’’start (kanal nummer) ’’’’’’’’’^ Zweck: Vor dem Start des Spools wird zuerst mit der Prozedur 'server channel'’’’’’’’’’’’’. der angegebene Kanal eingestellt. #ib#first#ie# ^ Zweck: Im Dialog kann ein Auftrag in der Warteschlange auf den ersten Platz’’’’’’’’’’’’’’. vorgezogen werden. ’’’’’’’’’’’’’’’#ib#killer#ie# ’’’’’’’’’’’’’’’N Zweck: Im Dialog werden alle AuftrŁge der Warteschlange zum LŚschen angeŻ boten. ’’’’’’’’’’’#ib#list spool#ie# ’’’’’’’’’’’N Zweck: Der aktuelle Zustand des Spools und die Warteschlange werden geliŻ stet. ’’’’’’’’’’’’^Ist nun eine Spoolkontrolltask eingestellt worden (siehe 'spool control task'), so muū in’’’’’^ihr die Datei "spool cmd" insertiert werden. Danach stehen die folgenden Prozeduren’’’’’’’’’’’zur VerfŪgung. ’’’’’’’’’’’’’’’. PROC stop (TASK CONST spool) ’’’’’’’’’’’’^ Zweck: Dem Spool 'spool' wird ein 'stop' zugestellt, was den Spool deaktiviert.’’’’’’’’’’N Wird noch ein Auftrag bearbeitet, so wird angefragt, ob dieser neu. eingetragen werden soll. ’’’’’’’’’. PROC halt (TASK CONST spool) ’’’’’’’’’’’’^ Zweck: Dem Spool 'spool' wird ein 'halt' zugestellt, d.h der Spool deaktiviert’’’’’’’’’’’> sich nach Beendigung des aktuellen Auftrags. ’’’’’#ib#wait for halt#ie# ’’’’’’’’. PROC wait for halt (TASK CONST spool) ’’’^ Zweck: Dem Spool 'spool' wird ein 'halt' zugestellt. Die Task wartet jedoch auf’’’’’’’’’’^ eine RŪckantwort, die ihr der Spool sendet, wenn er sich nach BeenŻ’’’’’’’’’’’’’’’> digung des aktuellen Auftrags deaktiviert hat. ’’’ Fehlerfall: ’’’’’’’’’’’’’> * Task "task name" wartet schon auf halt ’’’’’’’’^ Die angegebene Task wartet schon auf eine RŪckantwort des Spools’’’’’’’’’’’’’’’ 'spool'. ’’’’’’#ib#start#ie# . PROC start (TASK CONST spool) ’’’’’’’’’’’^ Zweck: Dem Spool 'spool' wird ein 'start' zugestellt, wodurch der Spool sich’’’’’’’’’’’’’^ aktiviert. War der Spool zuvor nicht deaktiviert, so wird er zuerst geŻ’’’’’’’’’’’ stoppt. ’’’’’’’’’’#ib#first#ie# . PROC first (TASK CONST spool) ’’’’’’’’’’’N Zweck: Im Dialog kann einer der AuftrŁge in der Warteschlange des Spools’> 'spool' auf den ersten Platz vorgezogen werden. ’’#ib#killer#ie# ’’’’’’’’’’’’’’’. PROC killer (TASK CONST spool) ’’’’’’’’’’N Zweck: Im Dialog werden die AuftrŁge der Warteschlange des Spools 'spool'. zum LŚschen angeboten. ’’’’’’’’’’’>#ib(9)#Arbeitsweise des #ib#Servers#ie##ie(9)# ’’’’’’’’’’’’’’’^Der Server wird vom Spoolmanager mit einer Prozedur gestartet, die die Abarbeitung’’’’’’’’’’’’Nder Warteschlange vornimmt. Dabei muū diese Prozedur zuerst den Datenraum mit’Ndem 'fetch code' (= 11) holen. Danach kann der Server sich noch mit dem 'fetch^param code' (= 21) die Dateiparameter (Dateiname, Schreib- und Lesepaūwort, SenŻ’’’’’’’’’’’’’’^dername und Senderstation) abholen und mit der Bearbeitung des Auftrags beginnen. ’’’’’’’’’’’’LET fetch code = 11, ’’’ param fetch code = 21; ’’’>BOUND STRUCT (TEXT name, write pass, read pass, sendername, ’’. INT senderstation ) VAR msg; ’’DATASPACE VAR ds, param ds; ’’INT VAR reply; ’’’’’’’’’’’’’’’spool manager (PROC server); ’PROC server :  disable stop; ’’’’’’’’’’’. continue (server channel); ’’’’’’’’’’’’’’. REP forget (ds); ds := nilspace; ’’’’’’’’> call (father, fetch code, ds, reply); ’’’’’’’’’’’’’’’> forget (param ds); param ds := nilspace; ’’’’’’’’’’’’> call (father, param fetch code, param ds, reply); ’’’ msg := param ds; ’’’’ execute spool; ’’’’’’. IF is error THEN error treatment FI; END PROC server; ’’’’’’’’’’’’’PROC execute spool : ’’’’’’’’’ enable stop; ’’’’’’’’’’’’>#ib(9)#Senden eines Auftrags an den Spool#ie(9)# ’’’’’’’’’’’’’NJede Task kann jedem Spool durch Aufruf von '#ib#save#ie#' eine Datei senden. . save ("datei name", task ("spool name")) ’’^Dieses 'save'-Kommando funktioniert zweiphasig. Dabei wird in der ersten Phase dem’’’’’’’’’’’’^Spool die Dateiparameter zugesendet. In der zweiten Phase folgt dann der Datenraum’’’’’’’’’’’’er Treffer wird im Register 'reg' gespeichert. ’5.4.2 Suche nach Textmustern N #on("b")#PROC down (FILE VAR f, TEXT CONST muster) #off("b")# ’’’’’’’’’’’’’^ Suche nach 'muster' in der Datei 'f' in Richtung Dateiende. Wird 'muster' gefunŻ’’’’’’’’’’’^ den, ist die Position das erste Zeichen von 'muster'. Andernfalls steht man hinter’’’’’’’’’. dem letzten Zeichen der Datei. ’’’’’’’’’’’’N Achtung: 'down' sucht vom nŁchsten Zeichen rechts ab, so daū wiederholtes’’> Suchen keine Endlosschleife ergibt. ’’’’’’’’’’’’’’^ #on("b")#PROC down (FILE VAR f, TEXT CONST muster, INT CONST number)#off("b")# ’’’’’’’’’’’’^ Wie obiges 'down', es wird aber maximal nur 'number'-Zeilen weit nach 'muster'’’’’’’’’’’’’’N #on("b")#PROC downety (FILE VAR f, TEXT CONST muster) #off("b")# ’’’’’’’’’’^ Suche nach 'muster' in der Datei 'f' in Richtung Dateiende. Wird 'muster' gefunŻ’’’’’’’’’’’^ den, ist die Position das erste Zeichen von 'muster'. Andernfalls steht man auf’’’’’’’’’’’’. dem letzten Zeichen der Datei. ’’’’’’’’’’’’N Achtung: 'downety' sucht (im Gegensatz zu 'down') vom aktuellen Zeichen an.> Daher muū explizit vorwŁrts positioniert werden. ’^ #on("b")#PROC downety (FILE VAR f, TEXT CONST muster, INT CONST number) #off("b")# ’’’’’’’’N Wie obiges 'downety', aber maximal nur 'number'-Zeilen weit. ’’’’’’’’’’’’’’N #on("b")#PROC up (FILE VAR f, TEXT CONST muster) #off("b")# ’’’’’’’’’’’’’’’N Suche nach 'muster' in der Datei 'f' in Richtung Dateianfang. Wird 'muster'^ gefunden, ist die Position das erste Zeichen von 'muster'. Andernfalls steht man’’’’’’’’’’’. auf dem ersten Zeichen der Datei. ’’’’’’’’’^ Achtung: 'up' sucht vom nŁchsten Zeichen links ab, so daū wiederholtes Suchen’’’’’’’’’’’’’’. keine Endlosschleife ergibt. ’’’’’^ #on("b")#PROC up (FILE VAR f, TEXT CONST muster, INT CONST number)#off("b")# ’’’’’’’’’’’’’’> Wie obiges 'up', aber maximal nur 'number'-Zeilen weit. ’’’N #on("b")#PROC uppety (FILE VAR f, TEXT CONST muster) #off("b")# ’’’’’’’’’’’N Suche nach 'muster' in der Datei 'f' in Richtung Dateianfang. Wird 'muster'^ gefunden, ist die Position das erste Zeichen von 'muster'. Andernfalls steht man’’’’’’’’’’’. auf dem ersten Zeichen der Datei. ’’’’’’’’’N Achtung: 'uppety' sucht (im Gegensatz zu 'up') vom aktuellen Zeichen. ’’’’’^ #on("b")#PROC uppety (FILE VAR f, TEXT CONST muster, INT CONST number)#off("b")# ’’’’’’’’’’N Wie obiges 'uppety', aber maximal nur 'number'-Zeilen weit. ’’’’’’’’’’’’’’’5.4.3 Treffer registrieren ’’N #on("b")#BOOL OP LIKE (TEXT CONST text , muster) #off("b")# ’’’’’’’’’’’’’’’^ Liefert TRUE, falls der Text 'text' 'muster' entspricht. In 'muster' kann das’’’’’’’’’’’’’’N Spezialzeichen '*' verwandt werden, das abkŪrzend fŪr die Konkatenation mit 'any' steht. ’’’’’’’’’’’’’’N Daraus folgt, daū das Suchen oder Ersetzen des Zeichens '*' nur durch’’’’’’. any (1,"*") zu bewerkstelligen ist. ’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’. ŽDruckdateien aus Thesaurus lŚschenŽ ’’’’’’’’N gib kommando:"*.p" C "" ’’’’’’’’’’’’’’. 16.04.87 "Handbuch teil1" ’’’’’’’’’’’’’. 04.05.87 "Handbuch teil1.p" ’’’’’’’’’’’. 16.04.87 "Handbuch teil2" ’’’’’’’’’’’’’. 06.05.87 "Handbuch teil2.p" ’’’’’’’’’’’N____________________________________________________________________________ ’N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’. ŽVordere Kommentarklammern lŚschen Ž ’’’’’’’’N gib kommando:"(" + any(1,"*") C "" ’’’’’’’’’’’’’> lernsequenz auf taste legen("a" , "archive") ; ’’’’’’’’’’’’’’> (* lernsequenz auf taste legen("(" , ""91"") ; *) ’’’’’’’’’’’> (* lernsequenz auf taste legen(")" , ""93"") ; *) ’’’’’’’’’’’> kommando auf taste legen("P" , "print("""")"8""8""11"") . N____________________________________________________________________________ ’N #on("b")#BOOL OP UNLIKE (TEXT CONST text , muster) #off("b")# ’’’’’’’’’’’’’. Wirkt wie: '(NOT text LIKE muster)' ’’’’’’’5.4.4 Treffer herausnehmen ’’^Mit Hilfe der 'Register' ist es mŚglich identifizierte Texte zwischenzuspeichern und in’’’’’’’.weiteren Aktionen weiterzuverwenden. ’’’’’’’’’N #on("b")#TEXT OP ** (TEXT CONST muster, INT CONST register)#off("b")# ’’’’’^ Der als 'muster' erkannte Text wird einem 'Register' mit der Nummer 'register'’’’’’’’’’’’’’N zugeordnet. Es kŚnnen 256 Register (1 bis 256) benutzt werden. ’’’’’’’’’’’’> #on("b")#TEXT PROC match (INT CONST nr) #off("b")# ’’’’’’’’N Liefert den Text der dem Register 'nr' zuletzt zugeordnet wurde. ’’’’’’’’’’> #on("b")#INT PROC matchpos (INT CONST nummer) #off("b")# ’’^ Liefert die Spaltennummer, auf der das dem Register 'nummer' zugeordnete MuŻ’’’’’’’’’’’’’’’ ster in der Zeile beginnt. N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’N gib kommando:D("file"+any+"("+(any ** (1)... ’’’’’’’’’’’’’N____________________________________________________________________________ ’5.4.5 Öndern in Dateien ’’’’^ #on("b")#PROC change (FILE VAR datei, INT CONST von, bis , TEXT CONST neuertext)#off("b")# ^ In der Datei wird in der aktuellen Zeile in den Ausschnitt zwischen 'von' und 'bis'’’’’’’’’. der Text 'neuertext' eingesetzt. ’’’’’’’’’’ entspricht: ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’> FILE VAR file := sequential file (modify, name) ’’’’’’’’’’’’’ TEXT VAR zeile; ’’’’’’’’’’’’’. read record (file ,zeile); ’’’’’’’’’’’’’’’. change (zeile, von, bis ,"neuertext"); ’’’. write record (file, zeile); ’’’’’’’’’’’’’’N____________________________________________________________________________ ’5.4.6 Editor-Prozeduren ’’’’’. #on("b")#edit (TEXT CONST datei)#off("b")# ^ Editieren der Datei 'datei'. Das Editorfenster ist maximal groū (von 1,1 bis’’’’’’’’’’’’’’’N max,max). Der Standard-Kommandointerpreter ist gŪltig, so daū Eingaben, die^ mit #schl("ESC")# beginnen, interpretiert werden, wie in 3.4 'Vorbelegte Tasten' beschrieŻ’ #on("b")#edit#off("b")# ’’’N Wie oben, editiert wird die Datei mit dem zuletzt benutzten Namen. ’’’’’’’’> #on("b")#edit (THESAURUS CONST thes)#off("b")# ’’’’’’’’’’’’^ Wie oben, editiert werden alle Dateien, deren Namen im Thesaurus 'thes' enthalŻ’’’’’’’’’’’’^ #on("b")#edit (TEXT CONST datei, INT CONST von x, von y, bis x, bis y)#off("b")# ’’’’’’’’’’^ Editieren der Datei 'datei'. Das Editorfenster hat die linke obere Ecke bei 'von x,’’’’’’’’> von y' und die rechte untere Ecke bei 'bis x, bis y'. ’’’’’. #on("b")#edit (FILE VAR f)#off("b")# ’’’’’’N Editieren der als 'sequential file' assoziierten Textdatei 'f'. ’’’’’’’’’’’N #on("b")#edit (FILE VAR, INT CONST von x, von y, bis x, bis y)#off("b")# ’’^ Editieren der als 'sequential file' assoziierten Textdatei in einem Fenster mit der’’’’’’’’^ linken, oberen Ecke 'von x, von y' und der rechten, unteren Ecke 'bis x, bis y'. ’’’’’’’’’’. #on("b")#edit (FILE VAR f, TEXT CONST res, N PROC (TEXT CONST) kdo interpreter)#off("b")# ’’’’’’’’’’’’’’’^ Editieren der als 'sequential file' assoziierten Textdatei 'f'. In 'res' werden reserŻ’’’’’^selber. Bei NetzŪbertragung zu einem Spool ist dieses zweiphasige 'save' jedoch’’’’’’’’’’’’’’’^nachteilig. Deshalb kŚnnen Dateien vom Typ 'FILE' auch mit einem einphasigen 'save'’’’’’’’’’’’nunter dem 'file save code' (= 22) an den Spool gesendet werden. Die #on("i")#'headline'#off("i")# dieser’’’’’’^Dateien muū jedoch dann auf eine bestimmte Art und Weise aufbereitet werden, so’’’’’’’’’’’’’’’ndaū sie die Dateiparameter enthŁlt. Beim Aufbau der #on("i")#'headline'#off("i")# muū eine Information’’’’’’’’Nmuū mit dem Code 0 beginnen und dem Code 1 enden. Die Dateiparamter mŪssen’’’’^dann mit der folgenden Reihenfolge in die #on("i")#'headline'#off("i")# eingetragen werden. ’’ - Dateiname ’’’’’’’’’’’’’’ - Schreibepaūwort ’’’’’’’’ - Lesepaūwort ’’’’’’’’’’’’ - Name des Senders ’’’’’’’ - Station des Senders ’’’’LET file save code = 22; ’’’’’.DATASPACE VAR ds := old (file name); ’’’’’’’’’.FILE VAR file := sequential file (input, ds); INT VAR reply; ’’’’’’’’’’’’’’’.headline (file, ""0"" + file name + ’’’’’’’. ""1""0"" + write password + ’’. ""1""0"" + read password + ’’’. ""1""0"" + name (myself) + ’’’> ""1""0"" + text (station (myself)) + ""1""); ’.call (spool task, file save code, ds, reply); ^Der Spoolmanager setzt bei Dateien, die mit dem 'file save code' angeliefert werden’’’’’’’’’’’>die #on("i")#'headline'#off("i")# wieder auf den Dateinamen. ’^Den Benutzer stehen neben dem '#ib#save#ie#'-Kommando zur Ųbertragung einer Datei zum’’’’’’’’’>Spool noch die folgenden Kommandos zur VerfŪgung. ’’’’’’’’’’’’. save (ALL myself, task ("spool name")) ’’’’. save (SOME myself, task ("spool name")) ’’’N Ūbertragung aller bzw. einiger Dateien der eigenen Task zum Spool. ’’’’> #ib#erase#ie# ("datei name", task ("spool name")) ’’’’’’’’’> erase (ALL task ("spool name"), task ("spool name")) ’’’’’’^ LŚschen eines bzw. aller eigenen AuftrŁge in der Warteschlange des Spools ’’’’’’’’’’’’’. #ib#list#ie# (task ("spool name")) ’’’’’’’’N Liste des Spools Ūber den aktuellen Zustand und die Warteschlange. ’’’’NExistiert ein Spool "PRINTER", so gibt es noch die folgenden Befehle. ’’’’’’’’ #ib#print#ie# ’’’’’’’’’’’’’ print ("datei name") ’’’’’’ print (ALL myself) ’’’’’’’’ print (SOME myself) ’’’’’’’> Sie entsprechen einem 'save' an die Task "PRINTER" ’’’’ #ib#printer#ie# ’’’’’’’’’’’^ Liefert den internen Taskbezeichner der Task "PRINTER", d.h. diese ProzeŻ’’’’’’’’’’’’’’> dur entspricht dem Aufruf von 'task ("PRINTER")'. ’’’’’.#ib(9)#8.2. #ib#Freie KanŁle#ie(9)##ie# ’’’’’’^Das Paket '#ib#free channel#ie#' ermŚglicht in Multi-User-Systemen die Einrichtung freier’’’’’NKanŁle. Freie KanŁle kann man zusŁtzlich zu dem Terminalkanal, der einem vom’’^Supervisor zugeordnet wurde, benutzen. Jeder freie Kanal wird durch eine (benannte)’’’’’’’’’’’^Task - dem #ib#Kanalmanager#ie# - implementiert. Er wird danach mit dem Tasknamen angeŻ’’’’’’’Nsprochen und kann von jeder Task belegt und wieder freigegeben werden. WŁhrendNeiner Belegung kŚnnen andere Tasks den Kanal nicht benutzen. Der Kanalmanager’^koppelt sich fŪr jede Belegung an den physikalischen Kanal an und gibt ihn danach’’’’’’’’’’’’’^auch wieder frei. Ein physischer Kanal kann also im Wechsel von mehreren KanalmaŻ’’’’’’’’’’’’’Nnagern oder einem Kanalmanager und "normalen" Tasks belegt werden. ’’’’’’’’’’’NDas Paket 'free channel' muū beim Kanalmanager und allen Benutzern des Kanals’>bzw. bei einem gemeinsamen Vater insertiert sein. ’’’’’’’’’’’’#ib#FCHANNEL#ie# ’’’’’’’’’’’’’^ Zweck: Der Datentyp FCHANNEL spezifiziert einen freien Kanal. Die AssoziieŻ’’’’’’’’’’’’’’^ rung mit einem realen freien Kanal erfolgt mit der Prozedur 'free chanŻ’’’’’’’’’’’N nel' und der Zuweisung ':=' (Łhnlich wie beim Datentyp FILE). ’’’’> OP := (FCHANNEL VAR dest, FCHANNEL CONST source) ’’’’’’’’^ Zweck: Zuweisung. Wird insbesondere bei der Assoziation (Assoziation: VerbinŻ’’’’’’’’’’’’> dung zwischen FCHANNEL VAR und Kanal) benŚtigt. ’’#ib#close#ie# . PROC close (FCHANNEL VAR f) ’’’’’’’’’’’’’> Zweck: Der belegte FCHANNEL wird freigeben. ’’’’’’’’’’’’’. PROC close (TEXT CONST channel name) ’’’’N Zweck: Der namentlich spezifizierte Kanal wird freigegeben. ’’’’’’’’’’’’’#ib#dialogue#ie# ’’’’’’’’’’’’’N PROC dialogue (FCHANNEL CONST f, TEXT CONST end of dialogue char) ’’’’’’’N Zweck: Der Terminalkanal wird direkt mit dem angegebenen freien Kanal geŻ^ koppelt. (Das Benutzerterminal wird "durchgeschaltet".) Eingaben am’’’’’’’’’’’’’’’^ Terminal werden auf 'f' ausgegeben, auf 'f' ankommende Daten werden’’’’’’’’’’’’’’’N auf dem Benutzerterminal ausgegeben. Der Datenverkehr erfolgt im’’^ #ib#Vollduplexmodus#ie#, d.h. der Datenverkehr beider Richtungen lŁuft unabŻ’’’’’’N hŁngig voneinander parallel. Hiermit kŚnnen Terminals dynamisch anN andere Rechner gekoppelt werden. Der Dialogzustand wird durch EinŻN gabe des 'end of dialogue char' am Benutzerterminal beendet. ’’’’’#ib#fetch#ie# N PROC fetch (FCHANNEL VAR channel, TEXT CONST filename, controlchars) ’’’’^ Zweck: Die angegebene datei wird Ūber den Kanal 'channel' eingelesen. Dabei’’’’’’’’’’’’’’> besteht 'control chars' aus zwei bis vier Zeichen > (eof + eol + handshake + handshake prompt) ’’’’ eof: ’’’’’’’’’’’’’N Dieses Zeichen wird als Dateiabschluū erwartet. ’’’’’’’’’’’’’’ eol: ’’’’’’’’’’’’’> Dieses Zeichen wird als Zeilenende erwartet. ’. handshake, handshake prompt: ’’’’’^ Falls 'handshake prompt <> "" ' ist, wird bei dem Empfang eines’’’’’’’’’’’’’’’N PromptŻZeichen eine Quittung (HandshakeŻZeichen) ausgegeben. ’#ib#free channel#ie# ’’’’’’’’’> FCHANNEL PROC free channel (TEXT CONST channel name) ’’’’N Zweck: Der namentlich spezifizierte Kanal wird belegt und als FCHANNEL’’’ geliefert. ’’’’’’’ FehlerfŁlle: ’’’’’’’’’’’’ * task not existing  * channel not free ’> PROC free channel (INT CONST physical channel number) ’’’N Zweck: Installiert die eigene Task als Kanalmanager fŪr den angegebenen’’. physikalischen Kanal. ’’’’’’’’’’’’> PROC in (FCHANNEL CONST f, TEXT VAR response) ’’’’’’’’’’’^ Zweck: Es werden die Daten geliefert, die seit dem letzten 'in'ŻAufruf bzw. seit’’’’’’’’’^ der Assoziierung eingetroffenen Daten geliefert. Bei 'niltext' liegen keine’’’’’’’ Eingabedaten vor. . PROC open (FCHANNEL VAR f) ’’’’’’’’’’’’’’^ Zweck: Der Kanal wird neu belegt. Die Assoziation erfolgt mit dem gleichen’’’’’’’’’’’’’’’> Kanal wie bei der letzten Assoziation. ’’’’’’’’’’’ FehlerfŁlle: ’’’’’’’’’’’’. * "task" gibt es nicht ’’’’’’’’’’’’’. * Kanal ist nicht frei ’’’’’’’’’’’’’> PROC out (FCHANNEL VAR f, TEXT CONST message) ’’’’’’’’’’’N Zweck: Der Ūbergebene Text wird auf dem Kanal 'f' ausgegeben. ’’’’’’’’’’’N PROC save (FCHANNEL VAR f, TEXT CONST name, control chars) ’’’’’’’’’’’’’’N Zweck: Die Ūbergebene Datei muū eine Textdatei sein (Struktur eines FILEsN haben). Sie wird komplett auf dem Kanal 'f' ausgegeben. ’’’’’’’’’’N Dabei bestehen 'control chars' aus bis zu drei Zeichen: ’’’’’’’’’’> (eof char + eol char + handshake option) ’’’’’’ eof char: ’’’’’’’’N Dieses Zeichen wird als Dateia^ vierte Zeichen Ūbergeben, die von der Prozedur 'kdo interpreter' als Kommandos’’’’’’’’’’’’’N interpretiert werden, wenn sie als ESC-Sequenz eingegeben werden. ’’’’’’’’’. Beispiel : #schl("ESC ")# #schl("e")# ’’’’’> #on("b")#editget (TEXT VAR ausgabe) #off("b")# ’’’’’’’’’’’’^ Aufruf des Zeileneditor. An der aktuellen Cursorposition wird eine Zeile ausgegeben in’’’’’N der 'ausgabe' steht. FŪr diese Zeile stehen alle EditiermŚglichkeiten zur’’^ VerfŪgung, 'ausgabe' kann also beliebig Ūberschrieben, ergŁnzt etc. werden. Die’’’’’’’’’’’’^ Eingabe wird durch #schl("CR")# abgeschlossen. Im Gegensatz zur Prozedur 'get' ist auch’’’’. eine leere Eingabe mŚglich. ’’’’’’’’’’’’’’’N #on("b")#editget (TEXT VAR ausgabe, INT CONST zeile, INT CONST scroll, ’’’’N TEXT CONST sep, TEXT CONST res, TEXT VAR exit) #off("b")# ’’’’’’^ Wie oben, die ZeilenlŁnge ist jedoch auf 'zeile' Zeichen begrenzt. Die Eingabe’’’’’’’’’’’’’^ wird durch #schl("CR")# oder durch eine Cursorbewegung Ūber die Position 'zeile' hinaus’’’’ abgeschlossen. ’’’’’’’’’’’’^ Die Angabe 'scroll' setzt die Breite des Zeilenfensters fest, wird diese Breite’’’’’’’’’’’’. Ūberschritten, so wird 'ausgabe' gerollt. ’^ In 'sep' (Separator) kŚnnen Zeichen festgesetzt werden, mit denen die Eingabe’’’’’’’’’’’’’’. beendet wird (zusŁtzlich zu CR !). ’’’’’’’’^ In 'res' (reservierte Tasten) kŚnnen Tasten festgelegt werden, die in Verbindung’’’’’’’’’’’. mit die Eingabe beenden. ’’’’’’’’’’’’^ Wurde der Zeileneditor durch einen Separator verlassen, so steht in 'exit' dieses’’’’’’’’’’^ Zeichen. Falls der Zeileneditor durch eine reservierte Taste verlassen, so enthŁlt ’’’’’’’’. 'exit' 'ESC' und die Taste. ’’’’’’’’’’’’’’’^ #on("b")#editget (TEXT VAR ausgabe, INT CONST zeile, INT CONST scroll)#off("b")# ’’’’’’’’’’. Bedeutung der Parameter siehe oben. ’’’’’’’N #on("b")#editget (TEXT VAR ausgabe, TEXT CONST sep, TEXT CONST res, ’’’’’’’> TEXT VAR exit) #off("b")# ’’’’’’’’’’’’’’’. Bedeutung der Parameter siehe oben. ’’’’’’’^ #on("b")#editget (TEXT VAR ausgabe, INT CONST zeile, TEXT VAR exit) #off("b")# ’’’’’’’’’’’’. Bedeutung der Parameter siehe oben. ’’’’’’’.5.4.7 Sortierung von Textdateien ’’’’’’’’’’’’NFŪr die Sortierung von Textdateien gibt es zwei Sortierprogramme: ’’’’’’’’’’’’.- Sortierung nach ASCII : sort ’’’’’’’’’’’- Sortierung nach ’’’’’’’’’’’’. deutschem Alphabet : lexsort ’’’’’’’’> #on("b")#PROC sort (TEXT CONST datei) #off("b")# ’’’’’’’’’’^ Diese Prozedur sortiert die Datei 'datei' zeilenweise gemŁū der von der EUMEL’’’’’’’’’’’’’’^ Codetabelle (siehe 5.2.4) vorgegebenen Reihenfolge. Zur Sortierung werden die’’’’’’’’’’’’’’N Zeilen vom ersten Zeichen der Zeile beginnend, zeichenweise verglichen und’ dementsprechend sortiert. ’N #on("b")#PROC sort (TEXT CONST datei, INT CONST position) #off("b")# ’’’’’’^ Sortierkriterien wie oben, jedoch wird bei Vergleich und Sortierung der Satz erst’’’’’’’’’’N ab der Position 'position' beachtet. Sortiert wird der ganze Satz! ’’’’’’’’> #on("b")#PROC lex sort (TEXT CONST datei) #off("b")# ’’’’’’^ Zeilenweise Sortierung nach lexikographischer Reihenfolge gemŁū DIN 5007. Zu’’’’’’’’’’’’’’’> den Vergleichen werden die Operatoren LEXEQUAL, LEXGRATER,’. LEXGRATEREQUAL benutzt (siehe 5.2.4). ’’’’’N #on("b")#PROC lex sort (TEXT CONST datei, INT CONST position) #off("b")# ’’N Lexikalische Sortierung durch Vergleich ab Position 'position'. ’’’’’’’’’’’.5.4.8 Prozeduren auf DatenrŁumen ’’’’’’’’’’’’NNeben den Textdateien gibt es im EUMEL-System den Typ Datenraum, der Objekte’’^jeglichen Typs aufnehmen kann und direkten Zugriff auf die Objekte gewŁhrt (siehe’’’’’’’’’’’’’^FŪr Objekte von Type Datenraum (nicht fŪr die in DatenrŁumen enthaltenen Objekte!)’’’’’’’’’’’’.existieren folgende Standardprozeduren: ’’’’’’N #on("b")#OP := ( DATASPACE VAR ds1, DATASPACE CONST ds2)#off("b")# ’’’’’’’’^ Der Datenraum 'ds1' wird als Kopie von 'ds2' angelegt. Es handelt sich zunŁchst’’’’’’’’’’’’^ um eine logische Kopie, eine physische Kopie wird erst nach einem Schreibzugriff’’’’’’’’’’’. auf 'ds1' oder 'ds2' nŚtig. ’’’’’’’’’’’’’’’> #on("b")#DATASPACE PROC new (TEXT CONST dsname) #off("b")# > Liefert einen neuen Datenraum namens 'dsname'. ’’’’’’’’’’’’N____________________________________________________________________________ ’. DATASPACE VAR ds := new ("datenraum") ’’’’’’’> (* ergibt zwei DatenrŁume 'ds' und 'datenraum'! *) ’’’’’’’’’’N____________________________________________________________________________ ’. #on("b")#DATASPACE PROC nilspace#off("b")# ^ Der 'nilspace' ist ein leerer Datenraum, der ausschlieūlich als Quelle zum KopieŻ’’’’’’’’’’> ren bei der Initialisierung Verwendung finden darf. ’’’’’’’> #on("b")#DATASPACE PROC old (TEXT CONST dsname) #off("b")# ^ Liefert einen bereits existierenden Datenraum (oder auch eine Datei) mit dem’’’’’’’’’’’’’’’ Namen 'dsname'. ’’’’’’’’’’’. FEHLER : "dsname" gibt es nicht ’’’’’’’’’’N #on("b")#PROC type (DATASPACE CONST ds, INT CONST typ)#off("b")# ’’’’’’’’’’^ Der Datenraum 'ds' erhŁlt den frei wŁhlbaren SchlŪssel 'typ'. Es muū eine positive’’’’’’’’’N Zahl gewŁhlt werden. Der Datenraum muū zum Zeitpunkt der Typzuweisung an’’’. ein BOUND Objekt gekoppelt (gewesen) sein. > #on("b")#INT PROC type (DATASPACE CONST ds)#off("b")# ’’’’’^ Liefert den SchlŪssel des Datenraums 'ds'. Falls 'ds' nie an ein BOUND Objekt’’’’’’’’’’’’’’^ gekoppelt war, liefert die Prozedur einen Wert < 0, sonst 0 (keine Zuweisung’’’’’’’’’’’’’’’. erfolgt) oder die zugewiesene Typnummer. ’’> #on("b")#INT PROC dataspaces (TASK CONST task) #off("b")# ’> Liefert die Anzahl der DatenrŁume der Task 'task'. ’’’’’’’’. #on("b")#INT PROC dataspaces #off("b")# ’’’. Anzahl der DatenrŁume von 'myself'. ’’’’’’’> #on("b")#INT PROC ds pages (DATASPACE CONST ds)#off("b")# ’N Liefert die Anzahl der durch 'ds' belegten Seiten (je 512 Byte). ’’’’’’’’’’> #on("b")#INT PROC storage (DATASPACE CONST ds)#off("b")# ’’> Liefert den von 'ds' belegten Speicherplatz in KB. ’’’’’’’’N #on("b")#PROC copy (DATASPACE CONST ds, TEXT CONST datei) #off("b")# ’’’’’’^ Eine neue Datei mit dem Namen 'datei' wird angelegt. Der Inhalt der Datei ist eine’’’’’’’’’. Kopie des Inhalts des Datenraumes 'ds'. ’’’> #on("b")#PROC forget (DATASPACE CONST ds)#off("b")# ’’’’’’’. Der Datenraum 'ds' wird gelŚscht#u#1)#e#. ’^ 1) Durch diese Prozedur steht nicht unmittelbar mehr freier Speicherplatz zur’’’’’’’’’’’’’’N VerfŪgung. Die physische RŁumung von Speicherplatz erfolgt durch die’’’’. 'MŪllabfuhr' bei einem Fixpunkt. ’’’’’’’N #on("b")#PROC fetch (DATASPACE CONST ziel, TEXT CONST datei, ’’’’’’’’’’’’’’. TASK CONST manager) #off("b")# N Aus der Task 'manager' wird der Datenraum der Datei 'datei' in den eigenen’ Datenraum 'ziel' kopiert. ’N #on("b")#PROC save (DATASPACE CONST quelle, TEXT CONST datei, ’’’’’’’’’’’’’. TASK CONST manager) #off("b")# ^ Der eigene Datenraum 'quelle' wird in die Datei 'datei' in der Task 'manager'’’’’’’’’’’’’’’5.5 Eingabe/Ausgabe ’’’’’’’’’N- Eingabesteuerzeichen : HOP , ģ ī ķ ļ , TAB , RUBIN , RUBOUT ’’’’’’’’’’’. CR , MARK , ESC N- Ausgabesteuerzeichen : HOME , ģ ī ķ ļ , CL EOP , CL EOL ’’’’’’’’’’’’’’’N CPOS , BELL , CR , ENDMARK , BEGINMARK ’’’’’’’’’N- Positionierung : cursor , get cursor , line , page ’’’’’’’’’’’’’’N- Eingabe : get , getline , inchar , incharebschluū geschickt. ’’’’’’’’’’’’’ eol char: ’’’’’’’’N Dieses zeichen wird als Zeilenabschluū geschickt. ’’’’’’’’’’’’ handshake option: ^ Falls die 'control chars' drei Zeichen umfassen, wird nach jeder’’’’’’’’’’’’’’^ Zeile auf das als drittes definierte HandshakeŻZeichen gewartet. ’’’’’’’’’’’’’> a) FCHANNEL VAR f := free channel ("otto") ; ’’’’’’’’’’’’’’’ TEXT VAR antwort ; ’’’’’’ out (f, "hallo") ; ’’’’’’ in (f, antwort) ; ’’’’’’’ put (antwort) ; ’’’’’’’’’ close (f) ; ’’’’’’’’’’’’’ b) open (f) ; ’’’’’’’’’’’’’’ out (f, "hallo ") ; ’’’ in (f, antwort) ’’’’’’’. UNTIL antwort <> "" PER ; ’’’’’’’’’’’’’’’ put (antwort) ; ’’’’’’’’’ close (f) ; ’’’’’’’’’’’’’ c) open (f) ; ’’’’’’’’’’’’’’ dialogue (f, "@") ; ’’’’’ close (f) ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.titel’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’į’’’’’’’’’’’’’’’’’’’’’’’ü’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Įƒa€ė’’53<’’’’A6A <<CM’’’’a€’’’’’’’’’’’’66’’’’’’’’’’’’’’’’BB5’’’’’’’’’’’’’’’’’’€’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’р’’’’’’’’’’’’’’’’’’’’ń€’!’’’’’’’’’’’’’’’’’’’’’ #off ("u")# ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #off("b")# ’’’’’’’’’’A’!’’’’’’’’’’’’’’’’’’’’’ #on ("b")# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q’?’’’’’’’’’’’’’’’’’’’Į’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #off("b")# ’’’’’’’’’’ၒL’’’’’’’’’’’’’’’’’’’A‚’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q‚’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±‚’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’ƒ’’’’’’’’’’’’’’’’’’’’!ƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ #lpos(3.0)# ’’’’’’’’’’’#table# ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ƒ’’’’’’’’’’’’A’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.titel’’’’’N____________________________________________________________________________ ’#on("b")##on ("u")# ’’’’’’’’’’.#center#Betriebssystem E U M E L ’’’’’’’’’’’’’#center#Programmierhandbuch ’’.#center#Lizenzfreie Software der ’’’’’’’’’’’’’N#center#Gesellschaft fŪr Mathematik und Datenverarbeitung mbH, ’’’’’’’’’’’’’’’#center#5205 Sankt Augustin ’’^#center#Die Nutzung der Software ist nur im Schul- und Hochschulbereich fŪr ’’’’’’’’’’’’’’.#center#nichtkommerzielle Zwecke gestattet. ’’>#center#GewŁhrleistung und Haftung werden ausgeschlossen ’’’’’N____________________________________________________________________________ ’#block##pageblock# ’’’’’’’’’’’#start(5.0,1.5)# ’’’’’’’’’’’’’Benutzerhandbuch ’’’’’’’’’’’’’Programmierung ’’’’’’’’’’’’’’’Stand: 1.7.87 ’’’’’’’’’’’’’’’#tableend##page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.inhalt’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’$ą’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Æa€ė’’ūųl’’’’llüM’’’’į®’halt’’’’’’’’’’’’’’’’’’’’’’’ū’’’’’’’’’’’’’’’’’’a€’’’’’’’’’’’’’’’’’’’’€’’’’’’’’’’’’’’’’’’’’”€’’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’Į€’’’’’’’’’’’’’’’’’’’’ń€’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’A’’’’’’’’’’’’’’’’’’’’a’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’’’ ’’’’’’’’’’’’ty ’’’’’’’’’’’’’N- Ausgabe : cout , out , out subtext , put , putline , ’’’’’> TIMESOUT , write ’’’’’’’’’’’’’’’>- Kontrolle : online , pause , sysin , sysout N- Zeitmessung : clock , date , day , hour , pause , time ’’’’’’’. time of day ’’’’5.5.1 E/A auf Bildschirm ’’’NSteuerzeichen und Standardprozeduren zur Ein- Ausgabe am Bildschirm werden’’’’>zur Steuerung des Dialogverhaltens von Prozeduren benutzt.’’’’5.5.1.1 Eingabesteuerzeichen ^Eingabesteuerzeichen werden durch die Funktionstasten (s. 3.2) erzeugt. Die Wirkung’’’’’’’’’’’>der Tasten ist ebenfalls an dieser Stelle beschrieben. ’’’’’’’>Durch die Tasten werden folgende Codes an Programme gegeben: ’Codierung I Bezeichnung ’’’-----------+-------------- ’’’HOP I 1 ’’’’’’’’’’’RECHTS I 2 ’’’’’’’’’’’OBEN I 3 ’’’’’’’’’’’LINKS I 8 ’’’’’’’’’’’TAB I 9 ’’’’’’’’’’’UNTEN I 10 ’’’’’’’’’’’RUBIN I 11 ’’’’’’’’’’’RUBOUT I 12 ’’’’’’’’’’’CR I 13 ’’’’’’’’’’’MARK I 16 ’’’’’’’’’’’ESC I 27 ’’’’’’’’’’’5.5.1.2 Ausgabesteuerzeichen NDie Ausgabe dieser Zeichen bewirkt folgendes Verhalten der Bildschirmausgabe. Code I Name I Wirkung N-----+-------------+------------------------------------------------------- ’’. 0 I NUL I keine Wirkung ’’’’’’’’’’N 1 I HOME I Cursor in die linke obere Ecke setzen (Position 0,0!) ’’> 2 I RECHTS I Cursor eine Stelle nach rechts setzen ’’> 3 I OBEN I Cursor eine Zeile hŚher setzen ’’’’’’’’’. 4 I CL EOP I Rest der Seite lŚschen ’. 5 I CL EOL I Rest der Zeile lŚschen ’N 6 I CPOS I Cursor setzen, nŁchstes Ausgabezeichen bestimmt die’’’’’N I I y-Position, das darauf folgende die x-Position. ’’’’’’’’. 7 I BELL I akustisches Signal ’’’’’> 8 I LINKS I Cursor eine Stelle nach links setzen ’’’>10 I UNTEN I Cursor eine Stelle nach unten setzen ’’’N13 I CR I Cursor an den Anfang der nŁchsten Zeile setzen ’’’’’’’’’>14 I ENDMARK I Ende des markierten Bereichs ’’’’’’’’’’’>15 I BEGINMARK I Anfang des markierten Bereichs ’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’> TEXT VAR ausgabe := (""7""15"V O R S I C H T"14"7""); ’’’’’ out(ausgabe); ’’’’’’’’’N____________________________________________________________________________ ’5.5.1.3 Positionierung ’’’’’’> #on("b")#PROC cursor (INT CONST column, row) #off("b")# ’’’^ Positioniert den Cursor auf dem Bildschirm, wobei 'column' die Spalte und 'row'’’’’’’’’’’’’^ die Zeile angibt. Die zulŁssigen Bereiche von 'column' und 'row' sind gerŁteabŻ’’’’’’’’’’’’> #on("b")#PROC get cursor (INT VAR x, y) #off("b")# ’’’’’’’’^ Erfragung der aktuellen Cursor-Position. Die Koordinaten des Cursors werden in’’’’’’’’’’’’’^ 'x' und 'y' geliefert. Die aktuelle Cursor-Position ist nach Ausgabe von 'HOME'’’’’’’’’’’’’^ (Code = 1) oder einer Positionierung des Cursors mit der Prozedur 'cursor' stets’’’’’’’’’’’^ definiert. Die Prozedur 'get cursor' liefert jedoch undefinierte Werte, wenn Ūber’’’’’’’’’’^ den rechten Rand einer Zeile hinausgeschrieben wurde (die Wirkung einer solchen’’’’’’’’’’’’> Operation hŁngt von der Hardware eines Terminals ab). ’’’’’. #on("b")#PROC line #off("b")# ’’’’’’’’’’’’’> Es wird zum Anfang einer neuen Zeile positioniert. ’’’’’’’’> #on("b")#PROC line (INT CONST number) #off("b")# ’’’’’’’’’’> Es werden 'number' Zeilenwechsel vorgenommen. ’’’’’’’’’’’’’. #on("b")#PROC page #off("b")# ’’’’’’’’’’’’’^ Es wird zum Anfang einer neuen Seite positioniert (hier: linke obere Ecke (Position’’’’’’’’N 1,1 !) des Bildschirms, wobei der Bildschirm gelŚscht wird). ’’’’’’’’’’’’’’5.5.1.4 Eingabe ’’’’’’’’’’’’’Grundlegende Prozeduren’’’’’’’NDie folgenden Prozeduren dienen ausschlieūlich der Eingabe vom Terminal. ’’’’’ Siehe 5.4.6 ’’’’’’’’’’’’’’’> #on("b")#PROC getchar (TEXT VAR zeichen)#off("b")# ’’’’’’’’^ Liest genau ein Zeichen von der Tastatur und schreibt es in die Variable 'zeichen'. ’’’’’’’> #on("b")#PROC inchar (TEXT VAR character) #off("b")# ’’’’’’^ Wartet solange, bis ein Zeichen von der Tastatur eingegeben wird, und schreibt’’’’’’’’’’’’’> dieses Zeichen in die Variable 'character'. ’’’’’’’’’’’’’’’. #on("b")#TEXT PROC incharety #off("b")# ’’’^ Versucht, ein Zeichen von der Tastatur zu lesen. Wurde kein Zeichen eingegeben,’’’’’’’’’’’’ wird niltext geliefert. ’’’N #on("b")#TEXT PROC incharety (INT CONST time limit) #off("b")# ’’’’’’’’’’’’^ Versucht, ein Zeichen vom Bildschirm zu lesen. Dabei wird maximal eine 'time’’’’’’’’’’’’’’’N limit' lange Zeit auf das Zeichen gewartet (gemessen in Zehntel-Sekunden). Umleitbare Eingabeprozeduren’’^Die folgenden Eingabeprozeduren lesen ebenfalls vom Terminal, die Eingabequelle’’’’’’’’’’’’’’’^kann jedoch durch die Prozedur 'sysin' umgestellt werden. Falls in 'sysin' eine Datei’’’’’’’’’Nangegeben wird wird die Eingabe statt vom Terminal aus dieser Datei gelesen. ’> #on("b")#PROC sysin (TEXT CONST file name) #off("b")# ’’’’’N Eingabe-Routinen lesen nicht mehr vom Benutzer-Terminal, sondern aus der’’’ Datei 'file name'. ’’’’’’’’. #on("b")#TEXT PROC sysin #off("b")# ’’’’’’’^ Liefert den Namen der eingestellten 'sysin'-Datei. "" bezeichnet das Benutzer-’’’’’’’’’’’’’> #on("b")#PROC get (INT VAR number) #off("b")# ’’’’’’’’’’’’’N Einlesen eines INT-Wertes vom Bildschirm. Der einzulesende INT-Wert kann’’’> bei der Eingabe vom Terminal editiert werden. ’’’’’’’’’’’’’> #on("b")#PROC get (REAL VAR value) #off("b")# ’’’’’’’’’’’’’N Einlesen eines REAL-Wertes vom Bildschirm. Der einzulesende REAL-Wert’’’’’’> kann bei der Eingabe vom Terminal editiert werden. ’’’’’’’’> #on("b")#PROC get (TEXT VAR word) #off("b")# ’’’’’’’’’’’’’’N Liest einen Text in die Variable 'word' mit maximal 255 Zeichen. Es werden’^ solange Zeichen vom Terminal gelesen, bis ein Leerzeichen oder #schl("CR")# eingegeben’’’’’N wird. Dabei werden fŪhrende Leerzeichen Ūbergeben. Der einzulesende Text’’’^ kann bei der Eingabe editiert werden. Eine leere Eingabe ist nicht erlaubt. ’’’’’’’’’’’’’’’N #on("b")#PROC get (TEXT VAR word, INT CONST laenge) #off("b")# ’’’’’’’’’’’’^ Liest einen Text vom Bildschirm mit der LŁnge 'laenge' oder bis #schl("CR")# eingegeben’’’’N wird. Der einzulesende Wert kann bei der Eingabe editiert werden. ’’’’’’’’’N #on("b")#PROC get (TEXT VAR word, TEXT CONST separator) #off("b")# ’’’’’’’’^ Liest einen Text vom Bildschirm, bis ein Zeichen 'separator' angetroffen oder #schl("CR")#’^ eingegeben wird. Der einzulesende Text kann bei der Eingabe editiert werden. ’’’’’’’’’’’’’’> #on("b")#PROC get line (TEXT VAR line) #off("b")# ’’’’’’’’’^ Das System wartet auf eine Zeile vom Bildschirm (max. 255 Zeichen). #schl("CR")# beenŻ’’’’’ det die Eingabe. ’’’’’’’’’’5.5.1.5 Ausgabe ’’’’’’’’’’’’’Grundlegende Prozeduren’’’’’’’NDie folgenden Prozeduren dienen ausschlieūlich der Ausgabe auf das Terminal. ’> #on("b")#PROC cout (INT CONST number) #off("b")# ’’’’’’’’’’^ Schreibt 'number' an die aktuelle Cursor-Position auf den Bildschirm. AnschlieŻ’’’’’’’’’’’’^ ūend wird an diese Position wieder zurŪck positioniert. 'number' muū > 0 sein.’’’’’’’’’’’’’^ Paūt 'number' nicht mehr auf die Zeile, so ist die Wirkung von 'cout' nicht deŻ’’’’’’’’’’’’’’’’’’’’±’E’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomodd# ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!‚’E’’’’’’’’’’’’’’’’’’’q‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‚’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į‚’’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’į‚’6’’’’’’’’’’’’’’’’’’’!ƒ’6’’’’’’’’’’’’’’’’’’’aƒ’6’’’’’’’’’’’’’’’’’’’”ƒ’6’’’’’’’’’’’’’’’’’’’გ6’’’’’’’’’’’’’’’’’’’!„’6’’’’’’’’’’’’’’’’’’’a„’6’’’’’’’’’’’’’’’’’’’”„’6’’’’’’’’’’’’’’’’’’’į„’6’’’’’’’’’’’’’’’’’’’!…’7’’’’’’’’’’’’’’’’’’’a…’7’’’’’’’’’’’’’’’’’’’”…’7’’’’’’’’’’’’’’’’’’’’’ #tableend# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į…’’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’ń…’6’’’’’’’’’’’’’’’’’’’1†’6’’’’’’’’’’’’’’’’’’’q†’6’’’’’’’’’’’’’’’’’’’±†’6’’’’’’’’’’’’’’’’’’’ń†’6’’’’’’’’’’’’’’’’’’’1‡’6’’’’’’’’’’’’’’’’’’’q‡’6’’’’’’’’’’’’’’’’’’’±‡’6’’’’’’’’’’’’’’’’’’’ń‡’6’’’’’’’’’’’’’’’’’’’1ˆ’6’’’’’’’’’’’’’’’’’’’qˆ’6’’’’’’’’’’’’’’’’’’’±ˆ’6’’’’’’’’’’’’’’’’’’’ńˆ’6’’’’’’’’’’’’’’’’’’’1‰’7’’’’’’’’’’’’’’’’’’’q‰’7’’’’’’’’’’’’’’’’’’’±‰’7’’’’’’’’’’’’’’’’’’’ń‰’7’’’’’’’’’’’’’’’’’’’1Š’7’’’’’’’’’’’’’’’’’’’qŠ’7’’’’’’’’’’’’’’’’’’’±Š’7’’’’’’’’’’’’’’’’’’’ńŠ’7’’’’’’’’’’’’’’’’’’’1‹’7’’’’’’’’’’’’’’’’’’’q‹’7’’’’’’’’’’’’’’’’’’’±‹’7’’’’’’’’’’’’’’’’’’’ń‹’7’’’’’’’’’’’’’’’’’’’1Œ’7’’’’’’’’’’’’’’’’’’’qŒ’7’’’’’’’’’’’’’’’’’’’±Œ’7’’’’’’’’’’’’’’’’’’’ńŒ’7’’’’’’’’’’’’’’’’’’’1’5’’’’’’’’’’’’’’’’’’’q’7’’’’’’’’’’’’’’’’’’’±’7’’’’’’’’’’’’’’’’’’’ń’7’’’’’’’’’’’’’’’’’’’1Ž’7’’’’’’’’’’’’’’’’’’’qŽ’7’’’’’’’’’’’’’’’’’’’±Ž’7’’’’’’’’’’’’’’’’’’’ńŽ’7’’’’’’’’’’’’’’’’’’’1’7’’’’’’’’’’’’’’’’’’’q’7’’’’’’’’’’’’’’’’’’’±’7’’’’’’’’’’’’’’’’’’’ń’7’’’’’’’’’’’’’’’’’’’1’7’’’’’’’’’’’’’’’’’’’q’7’’’’’’’’’’’’’’’’’’’±’7’’’’’’’’’’’’’’’’’’’ń’7’’’’’’’’’’’’’’’’’’’1‘’7’’’’’’’’’’’’’’’’’’’q‘’7’’’’’’’’’’’’’’’’’’’±‘’7’’’’’’’’’’’’’’’’’’’ń‘’7’’’’’’’’’’’’’’’’’’’1’’7’’’’’’’’’’’’’’’’’’’q’’7’’’’’’’’’’’’’’’’’’’±’’4’’’’’’’’’’’’’’’’’’’ń’’3’’’’’’’’’’’’’’’’’’’1“’7’’’’’’’’’’’’’’’’’’’q“’1’’’’’’’’’’’’’’’’’’’±“’7’’’’’’’’’’’’’’’’’’’ń“’9’’’’’’’’’’’’’’’’’’’1”’7’’’’’’’’’’’’’’’’’’’q”’6’’’’’’’’’’’’’’’’’’’±”’7’’’’’’’’’’’’’’’’’’’ń”’7’’’’’’’’’’’’’’’’’’’1•’7’’’’’’’’’’’’’’’’’’’q•’7’’’’’’’’’’’’’’’’’’’±•’0’’’’’’’’’’’’’’’’’’’ń•’+’’’’’’’’’’’’’’’’’’’!–’(’’’’’’’’’’’’’’’’’’’Q–’(’’’’’’’’’’’’’’’’’’’–’7’’’’’’’’’’’’’’’’’’’Į–’7’’’’’’’’’’’’’’’’’’’—’7’’’’’’’’’’’’’’’’’’’A—’>’’’’’’’’’’’’’’’’’’’—’7’’’’’’’’’’’’’’’’’’’Į—’7’’’’’’’’’’’’’’’’’’’˜’7’’’’’’’’’’’’’’’’’’’A˜’7’’’’’’’’’’’’’’’’’’’˜’7’’’’’’’’’’’’’’’’’’’Į˜’7’’’’’’’’’’’’’’’’’’’™’7’’’’’’’’’’’’’’’’’’’A™’7’’’’’’’’’’’’’’’’’’’™’6’’’’’’’’’’’’’’’’’’’Į™’7’’’’’’’’’’’’’’’’’’’š’7’’’’’’’’’’’’’’’’’’’Aš’7’’’’’’’’’’’’’’’’’’’š’7’’’’’’’’’’’’’’’’’’’Įš’7’’’’’’’’’’’’’’’’’’’›’9’’’’’’’’’’’’’’’’’’’A›’7’’’’’’’’’’’’’’’’’’’›’7’’’’’’’’’’’’’’’’’’’’’ #tableend# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į›’’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’į›’6’’’’’’’’’’’’’’’’’’’!œ’6’’’’’’’’’’’’’’’’’’’aœ’6’’’’’’’’’’’’’’’’’’’”œ’7’’’’’’’’’’’’’’’’’’’ᜒ7’’’’’’’’’’’’’’’’’’’!’7’’’’’’’’’’’’’’’’’’’a’7’’’’’’’’’’’’’’’’’’’”’7’’’’’’’’’’’’’’’’’’’į’7’’’’’’’’’’’’’’’’’’’!ž’.’’’’’’’’’’’’’’’’’’’Qž’3’’’’’’’’’’’’’’’’’’’‘ž’7’’’’’’’’’’’’’’’’’’’’’ #tableend# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ў’’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’ńž’6’’’’’’’’’’’’’’’’’’’1Ÿ’6’’’’’’’’’’’’’’’’’’’qŸ’6’’’’’’’’’’’’’’’’’’’±Ÿ’7’’’’’’’’’’’’’’’’’’’ńŸ’7’’’’’’’’’’’’’’’’’’’1 ’7’’’’’’’’’’’’’’’’’’’q ’7’’’’’’’’’’’’’’’’’’’± ’7’’’’’’’’’’’’’’’’’’’ń ’7’’’’’’’’’’’’’’’’’’’1”’7’’’’’’’’’’’’’’’’’’’q”’7’’’’’’’’’’’’’’’’’’’±”’7’’’’’’’’’’’’’’’’’’’’’ #tableend# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń”’’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’¢’6’’’’’’’’’’’’’’’’’’’Q¢’6’’’’’’’’’’’’’’’’’’’‘¢’6’’’’’’’’’’’’’’’’’’’Ń¢’6’’’’’’’’’’’’’’’’’’’£’6’’’’’’’’’’’’’’’’’’’Q£’7’’’’’’’’’’’’’’’’’’’‘£’7’’’’’’’’’’’’’’’’’’’Ń£’7’’’’’’’’’’’’’’’’’’’¤’7’’’’’’’’’’’’’’’’’’’Q¤’7’’’’’’’’’’’’’’’’’’’‘¤’7’’’’’’’’’’’’’’’’’’’Ѥ’7’’’’’’’’’’’’’’’’’’’„’7’’’’’’’’’’’’’’’’’’’Q„’7’’’’’’’’’’’’’’’’’’’‘„’7’’’’’’’’’’’’’’’’’’’Ń„’7’’’’’’’’’’’’’’’’’’’¦’7’’’’’’’’’’’’’’’’’’’Q¦’7’’’’’’’’’’’’’’’’’’’‘¦’7’’’’’’’’’’’’’’’’’’’Ѧ’7’’’’’’’’’’’’’’’’’’’§’7’’’’’’’’’’’’’’’’’’’Q§’7’’’’’’’’’’’’’’’’’’’‘§’7’’’’’’’’’’’’’’’’’’’ѧ’7’’’’’’’’’’’’’’’’’’’Ø’7’’’’’’’’’’’’’’’’’’’QØ’7’’’’’’’’’’’’’’’’’’’‘Ø’7’’’’’’’’’’’’’’’’’’’ŃØ’7’’’’’’’’’’’’’’’’’’’©’7’’’’’’’’’’’’’’’’’’’Q©’7’’’’’’’’’’’’’’’’’’’‘©’7’’’’’’’’’’’’’’’’’’’Ń©’7’’’’’’’’’’’’’’’’’’’Ŗ’7’’’’’’’’’’’’’’’’’’’QŖ’7’’’’’’’’’’’’’’’’’’’‘Ŗ’7’’’’’’’’’’’’’’’’’’’ŃŖ’7’’’’’’’’’’’’’’’’’’’«’7’’’’’’’’’’’’’’’’’’’Q«’7’’’’’’’’’’’’’’’’’’’’’ #tableend# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘«’!’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’Į«’8’’’’’’’’’’’’’’’’’’’¬’6’’’’’’’’’’’’’’’’’’’A¬’6’’’’’’’’’’’’’’’’’’’¬’7’’’’’’’’’’’’’’’’’’’Į¬’7’’’’’’’’’’’’’’’’’’’­’7’’’’’’’’’’’’’’’’’’’A­’7’’’’’’’’’’’’’’’’’’’­’7’’’’’’’’’’’’’’’’’’’Į­’7’’’’’’’’’’’’’’’’’’’®’7’’’’’’’’’’’’’’’’’’’A®’7’’’’’’’’’’’’’’’’’’’®’7’’’’’’’’’’’’’’’’’’’’’ #tableend# ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į®’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’INDEX ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’#setcount (1)# ’’’’’’’’’’’’’’’#block##pageblock# ’’’’’’’’’’’#pagenr ("%", 1)# ’’’’’’’’’’’’.#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’#center#Inhalt ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’I - % #right#GMD ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #right# I - % ’’’’’’’’’’’’.#lpos(0.2)##lpos(1.8)##lpos(9.0)# ’’’’’’’’’’’’TEIL 1 : Einleitung ’’’’’’’’’’>1.1 Allgemeines Ūber EUMEL 1 ’’’’’’’’>1.2 Struktur des Betriebssystems EUMEL 2 ’’’’’’’’>1.3 Eigenschaften des Betriebssystems 4 ’’’’’’’’> Multi-Tasking-/Multi-User-Betrieb 5 ’’’’’’’’> Prozeūkommunikation und NetzwerkfŁhigkeit 6 ’’’’’’’’> Erweiterbarkeit 6 ’’’’’’’’> Virtuelle Speicherverwaltung 7 ’’’’’’’’> Datensicherheit 8 ’’’’’’’’>1.4 Wichtige Begriffe 9 ’’’’’’’’>1.5 Die Notation in diesem Buch 10 ’’’’’’’>1.6 Die Funktionstasten des EUMEL-Systems 11 ’’’’’’’>1.7 Eine Beispielsitzung 12 ’’’’’’’TEIL 2 : ELAN >2.1 Besondere Eigenschaften von ELAN 1 ’’’’’’’’>2.2 Lexikalische Elemente 2 ’’’’’’’’>2.2.1 SchlŪsselwŚrter 2 ’’’’’’’’>2.2.2 Bezeichner 3 ’’’’’’’’>2.2.3 Sonderzeichen 4 ’’’’’’’’>2.2.4 Kommentare 5 ’’’’’’’’>2.3 Datenobjekte 6 ’’’’’’’’>2.3.1 Elementare Datentypen 6 ’’’’’’’’>2.3.1.1 Denot^ finiert. 'cout' gibt den Wert von 'number' nur aus, wenn genŪgend freie Kanal-’’’’’’’’’’’’’N KapazitŁt fŪr diese Ausgabe vorhanden ist. Das hat zur Folge, daū ProgrammeN nicht auf die Beendigung einer Ausgabe von 'number' warten mŪssen und ggf.’. Ausgaben Ūberschlagen werden. ’’’’’’’’’’’’’> #on("b")#PROC out (TEXT CONST text) #off("b")# ’’’’’’’’’’’’N Ausgabe eines Textes auf dem Bildschirm. Im Unterschied zu 'put' wird kein’. Blank an den ausgegebenen Text angefŪgt. ’’'out subtext' N #on("b")#PROC out subtext (TEXT CONST source, INT CONST from) #off("b")# ’’^ Ausgabe eines Teiltextes von 'source' von der Position 'from' bis Textende. Es’’’’’’’’’’’’’. wird keine Aktion vorgenommen fŪr ’’’’’’’’’. from > LENGTH source ’’’’’’’’’’’^ #on("b")#PROC out subtext (TEXT CONST source, INT CONST from, to)#off("b")# ’’’’’’’’’’’’’’’^ Ausgabe eines Teiltextes von 'source' von der Position 'from' bis zur Position 'to'.’’’’’’’. to > LENGTH source ’’’’’’’’’’’’’> wird out subtext (source, from) ausgefŪhrt. ’’’’’’’’’’’’’’’N #on("b")#PROC out text (TEXT CONST source, INT CONST from, to) #off("b")# ’^ Ausgabe eines Teiltextes von 'source' von der Position 'from' bis zur Position 'to'.’’’’’’’. to > LENGTH source ’’’’’’’’’’’’’> wird fŪr die fehlenden Zeichen Blanks ausgegeben. ’’’’’’’’’N #on("b")#OP TIMESOUT (INT CONST times, TEXT CONST text) #off("b")# ’’’’’’’’N Ausgabe eines TEXTes 'text' 'times'mal. An die Ausgabe wird im Gegensatz zuN 'put' kein Leerzeichen angefŪgt. Es wird kein Text ausgegeben fŪr ’’’’’’’’’ times < 1 ’’’’’’Umleitbare Ausgabeprozeduren’’^Die folgenden Ausgabeprozeduren schreiben ebenfalls auf das Terminal, die Ausgabe’’’’’’’’’’’’’^kann jedoch durch die Prozedur 'sysout' umgeleitet werden. Falls in 'sysout' eine’’’’’’’’’’’’’>Datei angegeben wird wird die Ausgabe statt zum ’’’’’’’’’’’’’’.Terminal in die angegebene Datei geleitet. ’’’> #on("b")#PROC sysout (TEXT CONST file name) #off("b")# ’’’’N Ausgabe-Routinen gehen nicht mehr zum Benutzer-Terminal, sondern in die’’’’ Datei 'file name'. ’’’’’’’’. #on("b")#TEXT PROC sysout #off("b")# ’’’’’’^ Liefert den Namen der eingestellten 'sysout'-Datei. "" bezeichnet das BenutŻ’’’’’’’’’’’’’’’ zer-Terminal. ’’’’’’’’’’’’’ #on("b")#line#off("b")# ’’’> Positionierung auf den Anfang einer neuen Ausgabezeile. ’’’. #on("b")#line (INT CONST faktor)#off("b")# N NŁchste Ausgabezeile um 'faktor' Zeilen weiter positionieren. ’’’’’’’’’’’’’> #on("b")#PROC put (INT CONST number) #off("b")# ’’’’’’’’’’’N Ausgabe eines INT-Wertes auf dem Bildschirm. Anschlieūend wird ein LeerŻ’’’ zeichen ausgegeben. ’’’’’’’> #on("b")#PROC put (REAL CONST real) #off("b")# ’’’’’’’’’’’’N Ausgabe eines REAL-Wertes auf dem Bildschirm. Anschlieūend wird ein LeerŻ’’ zeichen ausgegeben. ’’’’’’’> #on("b")#PROC put (TEXT CONST text) #off("b")# ’’’’’’’’’’’’^ Ausgabe eines Textes auf dem Bildschirm. Nach der Ausgabe von 'text' wird ein’’’’’’’’’’’’’’^ Blank ausgegeben, um nachfolgenden Ausgaben auf der gleichen Zeile voneinanŻ’’’’’’’’’’’’’’’N der zu trennen. HardwareabhŁngig sind die Aktionen, wenn eine Ausgabe Ūber’^ eine Zeilengrenze (hier: Bildschirmzeile) vorgenommen wird. Meist wird die AusgaŻ’’’’’’’’’’. be auf der nŁchsten Zeile fortgesetzt. ’’’’> #on("b")#PROC putline (TEXT CONST text) #off("b")# ’’’’’’’’N Ausgabe von 'text' auf dem Bildschirm. Nach der Ausgabe wird auf den Anfang^ der nŁchsten Zeile positioniert. Gibt man TEXTe nur mit 'putline' aus, so ist’’’’’’’’’’’’’’N gesichert, daū jede Ausgabe auf einer neuen Zeile beginnt. HardwareabhŁngig^ sind die Aktionen, wenn eine Ausgabe Ūber eine Zeilengrenze (hier: BildschirmŻ’’’’’’’’’’’’’^ zeile) vorgenommen wird. Meist wird die Ausgabe auf der nŁchsten Zeile fortŻ’’’’’’’’’’’’’’’> #on("b")#PROC write (TEXT CONST text) #off("b")# ’’’’’’’’’’> Gibt 'text' ohne Trennblank aus ('put' mit Trennblank). ’’’5.5.1.6 Kontrolle ’’’’’’’’’’’. #on("b")#BOOL PROC online #off("b")# ’’’’’’N Liefert TRUE, wenn die Task mit einem Terminal gekoppelt ist. ’’’’’’’’’’’’’> #on("b")#PROC pause (INT CONST time limit) #off("b")# ’’’’’^ Wartet 'time limit' in Zehntel-Sekunden. Bei negativen Werten ist die Wirkung’’’’’’’’’’’’’’^ nicht definiert. Die Wartezeit wird nicht nur durch das Erreichen der Grenze abŻ’’’’’’’’’’’N gebrochen, sondern auch durch die Eingabe eines beliebigen Zeichens. ’’’’’’. #on("b")#PROC pause#off("b")# ’’’’’’’’’’’’’> Wartet bis zur Eingabe eines beliebigen Zeichens. ’’’’’’’’’5.5.2 Zeitmessung ’’’’’’’’’’’> #on("b")#REAL PROC clock (INT CONST index) #off("b")# ’’’’’N Datum und Uhrzeit werden vom EUMEL-System fŪr alle Tasks gefŪhrt. Neben’’’’^ einer Uhr ('Realzeituhr'), die das Datum und die aktuelle Uhrzeit enthŁlt, wird eine’’’’’’’^ Uhr fŪr die von der Task verbrauchte CPU-Zeit gefŪhrt ('CPU-Zeituhr'). Beide’’’’’’’’’’’’’’’^ Zeiten werden vom System als REALs realisiert. Die Prozedur 'clock' liefert die’’’’’’’’’’’’^ aktuellen Werte dieser Uhren. Bei 'index = 0' wird die akkumulierte CPU-Zeit’’’’’’’’’’’’’’’N der Task, bei 'index = 1' der Wert der Realzeituhr geliefert. ’’’’’’’’’’’’’N Mit den REAL-Werten der Uhren kann ohne weiteres gerechnet werden, jedoch’’N sind nur Werte > 0 definiert. Die REAL-Werte der Realzeituhr beginnen beim’^ 1.1.1900 um 0 Uhr. Es sind nur Werte fŪr dieses Jahrhundert zugelassen. Werte’’’’’’’’’’’’’’^ der Realzeituhr in lesbarer Form kann man durch die Konvertierungsprozeduren’’’’’’’’’’’’’’’n 'date' (vergl. 5- #topage("date")# ) (fŪr den aktuellen Tag) und 'time of day' (Uhrzeit, vergl.’’’’’’’’’’’’. 5-#topage("time")#) erhalten. ’’’’’’’’’’’’’N Um die benŚtigte CPU-Zeit eines Programms zu berechnen, muū man die’’’’’’’’^ CPU-Zeituhr zweimal abfragen. Um solche Zeiten in lesbarer Form zu erhalten,’’’’’’’’’’’’’’’n kann man die Konvertierungsprozedur 'time' (vergl. 5- #topage("time")#) verwenden. Beispiel: ’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel .......................... ’’’’’’’’’’’’’. REAL CONST anfang :: clock (0); ’’’’’’ berechnungen; ’’. REAL CONST ende :: clock (0); ’’’’’’> put ("benoetigte CPU-Zeit in Sek:"); ’’’’’’’’’’’’’’. put (time (ende - anfang)) ’’’’’’’’N____________________________________________________________________________ ’#goalpage("date")# ’’’’’’’’’’’> #on("b")#TEXT PROC date (REAL CONST time) #off("b")# ’’’’’’^ Konvertierungsprozedur fŪr das Datum, welches sich aus dem Aufruf der Prozedur’’’’’’’’’’’’’^ 'clock (1)' ergibt. Das Datum wird in der Form 'tt.mm.jj' geliefert. Beispiel: ’’’’’’’’’’’’N____________________________________________________________________________ ’> put (date (clock (1))) (* z.B.: 24.12.87 *) ’’’’’’N____________________________________________________________________________ ’> #on("b")#REAL PROC date (TEXT CONST datum) #off("b")# ’’’’’N Konvertierungsprozedur fŪr ein Datum in der Form 'tt.mm.jj'. Liefert einen’N REAL-Wert, wie ihn die Prozedur 'clock (1)' liefern wŪrde. Beispiel: ’’’’’’N____________________________________________________________________________ ’> put (date ("24.12.87")) (* 6.273539e10 *) ’’’’’’N____________________________________________________________________________ ’. #on("b")#TEXT PROC date#off("b")# ’’’’’’’’’^ Liefert das Tagesdatum. Wirkt wie 'date (clock (1))', ist jedoch erheblich schneller. ’’’’’. #on("b")#REer fŪr elementare Datentypen 7 ’’’’’’’’> INT-Denoter: 7 ’’’’’’’’> REAL-Denoter: 8 ’’’’’’’’> TEXT-Denoter: 9 ’’’’’’’’> BOOL-Denoter: 9 ’’’’’’’’>2.3.1.2 LET-Konstrukt fŪr Denoter 10 ’’’’’’’>2.3.2 Zugriffsrecht 11 ’’’’’’’>2.3.3 Deklaration 11 ’’’’’’’>2.3.4 Initialisierung 12 ’’’’’’’>2.4 Programmeinheiten 13 ’’’’’’’>2.4.1 Elementare Programmeinheiten 14 ’’’’’’’>2.4.1.1 Ausdruck 14 ’’’’’’’> Operatoren 14 ’’’’’’’> PrioritŁt von Operatoren 16 ’’’’’’’>2.4.1.2 Zuweisung 18 ’’’’’’’>2.4.1.3 Refinementanwendung 19 ’’’’’’’>2.4.1.4 Prozeduraufruf 20 ’’’’’’’>2.4.2 Zusammengesetzte Programmeinheiten 22 ’’’’’’’>2.4.2.1 Folge 22 ’’’’’’’>2.4.2.2 Abfrage 23 ’’’’’’’>2.4.2.3 Auswahl 26 ’’’’’’’>2.4.2.4 Wertliefernde Abfrage ’’’’’’’’’> und wertliefernde Auswahl 27 ’’’’’’’>2.4.2.5 Wiederholung 27 ’’’’’’’> Abfragekette 25 ’’’’’’’> Endlosschleife 28 ’’’’’’’> Abweisende Schleife 29 ’’’’’’’> Nicht abweisende Schleife 29 ’’’’’’’> ZŁhlschleife 30 ’’’’’’’>2.4.3 Abstrahierende Programmeinheiten 32 ’’’’’’’>2.4.3.1 Refinementvereinbarung 32 ’’’’’’’> Vorteile der Refinementanwendung 33 ’’’’’’’> Wertliefernde Refinements 34 ’’’’’’’>2.4.3.2 Prozedurvereinbarung 35 ’’’’’’’>2.4.3.3 Operatorvereinbarung 41 ’’’’’’’> Verwendung von Prozeduren 35 ’’’’’’’> Prozeduren mit Parametern 38 ’’’’’’’> Prozeduren als Parameter 39 ’’’’’’’> Wertliefernde Prozeduren 40 ’’’’’’’> Vereinbarung eines monadischen Operators 42 ’’’’’’’> Vereinbarung eines dyadischen Operators 42 ’’’’’’’>2.4.3.4 Paketvereinbarung 43 ’’’’’’’> Spracherweiterung 44 ’’’’’’’> Schutz vor fehlerhaftem Zugriff ’’’’’’’’’’> auf Datenobjekte 45 ’’’’’’’’’’’> Realisierung von abstrakten Datentypen 47 ’’’’’’’>2.4.4 Terminatoren fŪr Refinements, ’’’’’’’’’’’’’> Prozeduren und Operatoren 48 ’’’’’’’>2.4.5 GenerizitŁt von Prozeduren und Operatoren 49 ’’’’’> PrioritŁt von generischen Operatoren 49 ’’’’’’’>2.4.6 Rekursive Prozeduren und Operatoren 50 ’’’’’’’’>2.5 Programmstruktur 52 ’’’’’’’>2.6 Zusammengesetzte Datentypen 56 ’’’’’’’>2.6.1 Reihung 56 ’’’’’’’>2.6.2 Struktur 61 ’’’’’’’>2.6.3 LET-Konstrukt fŪr ’’’’’’’’’’’’’’. zusammengesetzte Datentypen 64 ’’’.2.6.4 Denoter fŪr zusammengesetzte ’’’’’’. Datentypen (Konstruktor) 65 ’’’’’’>2.7 Abstrakte Datentypen 67 ’’’’’’’>2.7.1 Definition neuer Datentypen 67 ’’’’’’’>2.7.2 Konkretisierung 69 ’’’’’’’>2.7.3 Denoter fŪr abstrakte Datentypen (Konstruktor) 70 >2.8 Dateien 73 ’’’’’’’>2.8.1 Datentypen FILE und DIRFILE 73 ’’’’’’’> FILE: 73 ’’’’’’’> DIRFILE: 73 ’’’’’’’>2.8.2 Deklaration und Assoziierung 74 ’’’’’’’> input: 75 ’’’’’’’> output: 75 ’’’’’’’> modify: 75 ’’’’’’’>2.9 Abstrakte Datentypen im EUMEL-System 77 ’’’’’’’’>2.9.1 Datentyp TASK 77 ’’’’’’’>2.9.2 Datentyp THESAURUS 79 ’’’’’’’>2.9.3 DatenrŁume 81 ’’’’’’’>2.9.3.1 Datentyp DATASPACE 82 ’’’’’’’>2.9.3.2 BOUND-Objekte 83 ’’’’’’’> HŁufige Fehler bei der Benutzung von DatenrŁume 85 ’’’’’>2.9.3.3 Definition neuer Dateitypen 88 ’’’’’’’>2.9.4 Datentyp INITFLAG 91 ’’’’’’’TEIL 3 : Der Editor ’’’’’’’’’’>3.1 Ein- und Ausschalten des Editors 1 ’’’’’’’’>3.2 Die Funktionstasten 3 ’’’’’’’’>3.3 Die Wirkung der Funktionstasten 4 ’’’’’’’’>3.4 ESC Kommandos 11 ’’’’’’’> Operationen auf Markierungen 15 ’’’’’’’> Zeichen schreiben 16 ’’’’’’’> Kommando auf Taste legen 16 ’’’’’’’> Vorbelegte Tasten 17 ’’’’’’’> Der Lernmodus 17 ’’’’’’’.3.5 Positionieren, Suchen, Ersetzen > im Kommandodialog 21 ’’’’’’’’’’’> Weitere Hilfen 23 ’’’’’’’TEIL 4 : Kommandosprache ’’’’’>4.1 Supervisor 2 ’’’’’’’’>4.2 Monitor 6 ’’’’’’’’>4.2.1 Hilfsprozeduren 8 ’’’’’’’’> Informationsprozeduren 11 ’’’’’’’>4.2.2 Thesaurus 16 ’’’’’’’>4.2.3 Tasks 21 ’’’’’’’>4.2.4 Handhabung von Dateien 26 ’’’’’’’>4.2.5 Editor-Prozeduren 29 ’’’’’’’>4.2.6 Dateitransfer 33 ’’’’’’’>4.2.7 Passwortschutz 39 ’’’’’’’>4.2.8 Das Archiv 44 ’’’’’’’> Fehlermeldungen des Archivs 52 ’’’’’’’TEIL 5 : Programmierung ’’’’’’>5.1 Der ELAN-Compiler 1 ’’’’’’’’>5.1.1 Fehlermeldungen des ELAN-Compilers 5 ’’’’’’’’>5.2 Standardtypen 7 ’’’’’’’’>5.2.1 Bool 7 ’’’’’’’’>5.2.2 Integer-Arithmetik 9 ’’’’’’’’>5.2.3 Real-Arithmetik 16 ’’’’’’’>5.2.4 Text 26 ’’’’’’’> Der EUMEL-Zeichensatz 29 ’’’’’’’>5.3.1 Assoziierung 41 ’’’’’’’>5.3.2 Informationsprozeduren 43 ’’’’’’’>5.3.3 Betriebsrichtung INPUT 44 ’’’’’’’>5.3.4 Betriebsrichtung OUTPUT 46 ’’’’’’’>5.3.5 Betriebsrichtung MODIFY 48 ’’’’’’’>5.3.6 FILE -Ausschnitte 51 ’’’’’’’>5.4 Suchen und Ersetzen in Textdateien 53 ’’’’’’’>5.4.1 Aufbau von Textmustern AL CONST day #off("b")# ’’’’’’’’> Liefert die Anzahl der Sekunden eines Tages (86 400.0). ’’’. #on("b")#REAL CONST hour #off("b")# ’’’’’’’> Liefert die Anzahl der Sekunden einer Stunde (3600.0). ’’’’> #on("b")#PROC pause (INT CONST time limit) #off("b")# ’’’’’^ Wartet 'time limit' in Zehntel-Sekunden. Bei negativen Werten ist die Wirkung’’’’’’’’’’’’’’^ nicht definiert. Die Wartezeit wird nicht nur durch das Erreichen der Grenze abŻ’’’’’’’’’’’N gebrochen, sondern auch durch die Eingabe eines beliebigen Zeichens. ’’’’’’#goalpage("time")# ’’’’’’’’’’’> #on("b")#TEXT PROC time (REAL CONST time) #off("b")# ’’’’’’^ Konvertierungsprozedur fŪr die Zeiten der CPU-Zeituhr. Liefert die Zeiten in der’’’’’’’’’’’. Form 'hh:mm:ss.s'. Vergl. dazu 'clock'. ’’’N #on("b")#TEXT PROC time (REAL CONST value, INT CONST laenge) #off("b")# ’’’^ Konvertiert die Zeit in externe Darstellung. FŪr die 'laenge'-Werte ergibt sich: ’’’’’’’’’’> laenge = 10 (* hh:mm:ss.s *) ’’’’’’’’’’> laenge = 12 (* hhhh:mm:ss.s *) ’’’’’’’’’’> #on("b")#REAL PROC time (TEXT CONST time) #off("b")# ’’’’’’N Konvertierungsprozedur fŪr Texte der CPU-Zeituhr in REAL-Werte. ’’’’’’’’’’’'time of day' N #on("b")#TEXT PROC time of day (REAL CONST time) #off("b")# ’’’’’’’’’’’’’’’> Konvertierungsprozedur fŪr REALs, wie sie die Realzeituhr ’N liefert. Es wird die Tageszeit in der Form 'hh:mm' geliefert. Beispiel: ’’’N____________________________________________________________________________ ’N put (time of day (clock (1))) (* z.B.: 17:25 *) ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’. #on("b")#TEXT PROC time of day #off("b")# ’. Liefert die aktuelle Tageszeit. Entspricht N____________________________________________________________________________ ’. time of day (clock (1)) ’’’’’’’’N____________________________________________________________________________ ’NDer Scanner kann benutzt werden, um festzustellen, welche Art von Symbolen in’Neinem TEXT enthalten sind. Die ReprŁsentation der Symbole mŪssen dabei der’’’’NELAN-Syntax entsprechen. Folgende #ib#Symbole#ie# kann der Scanner erkennen: ’ - "tags", d.h. Namen, ’’’’’. - "bolds", d.h. SchlŪsselworte, ’’’’’’’’’’’. - "number", d.h. INT oder REAL Zahlen, ’’’’ - Operatoren, ’’’’’’’’’’’’’> - "delimiter", d.h. Begrenzer wie z.B. ";", ’’’’’’’’’’’’’’’. - und das Ende des Scan-Textes. ’’’’’’’’’’’NDer Scanner Ūberliest Kommentare und Leerzeichen zwischen den Symbolen. Der’’’>(erste) zu verarbeitende Text muū mit der Prozedur ’’’’’’’’’’’ #ib#scan#ie# ’’’’’’’’’’’’>in den Scanner "hineingesteckt" werden. Mit der Prozedur ’’’’’ #ib#next symbol#ie# ’’’’’Nwird das jeweils nŁchste Symbol des TEXTes geholt. Am Ende wird "end of scan"’^und als Symbol 'niltext' geliefert. Falls innerhalb eines TEXT-Denoters oder eines’’’’’’’’’’’’^Kommentars "end of scan" auftritt, wird "within text" bzw. "within comment" gemelŻ’’’’’’’’’’’’Ndet. Der Scan-Prozeū kann dann mit dem nŁchsten zu scannenden TEXT (der’’’’’’’^nŁchsten Zeile) fortgesetzt werden. DafŪr wird nicht die Prozedur 'scan', sondern ’’’’’’’’’’’’ #ib#continue scan#ie# ’’’Nverwandt. Sie setzt im letzten Scan-Zustand (z.B. Kommentar oder TEXT-DenoŻ’’’^ter) wieder auf, so daū auch Folgen von TEXTen (Zeilen) wie z.B. Dateien leicht’’’’’’’’’’’’’’’gescannt werden kŚnnen. ’’’’’’Mit den Prozeduren ’’’’’’’’’’’> scan (* meldet eine Datei zum scannen an *) > next symbol (* holt die Symbole *) >kann man auch eine Datei nach ELAN-Symbolen untersuchen. ’’’’’N____________________________________________________________________________ ’ FILE VAR f :: ... ’’’’’’’> scan (f); (* beginnt das Scanning in ’’’’’’’’’’’> der nŁchsten Zeile *) ’’’’’’’’ TEXT VAR symbol; ’’’’’’’’ INT VAR type; ’’’’’’’’’’’. next symbol (f, symbol, type); ’’’’’’’’ verarbeite symbol ’’’’’ UNTIL type >= 7 END REP. N____________________________________________________________________________ ’Scanner-Kommandos ’’’’’’’’’’’’'continue scan' ’’’’’’’’’’’’’’N #on("b")#PROC continue scan (TEXT CONST scan text) #off("b")# ’’’’’’’’’’’’’^ Das Scanning soll mit 'scan text' fortgesetzt werden. Falls der Scan-Vorgang’’’’’’’’’’’’’’’^ beim vorigen 'scan text' innerhalb eines TEXT-Denoters oder eines Kommentars’’’’’’’’’’’’’’’^ abgebrochen wurde, wird er jetzt entsprechend mit dem nŁchsten 'next symbol'’’’’’’’’’’’’’’’^ fortgesetzt. Der erste Teil-Scan einer Folge muū aber stets mit 'scan' eingeleitet’’’’’’’’’'next symbol' N #on("b")#PROC next symbol (TEXT VAR symbol, INT VAR type) #off("b")# ’’’’’’^ Holt das nŁchste Symbol. In "symbol" steht der TEXT des Symbols, so z.B. die’’’’’’’’’’’’’’’N Ziffern eines INT-Denoters. Bei TEXT-Denotern werden die fŪhrenden und’’’’’N abschlieūenden AnfŪhrungsstriche abgeschnitten. Leerzeichen oder Kommentare^ spielen in "tags" oder "numbers" keine Rolle. Zwischen Symbolen spielen LeerŻ’’’’’’’’’’’’’’^ zeichen oder Kommentare keine Rolle. In "type" steht eine Kennzeichung fŪr den’’’’’’’’’’’’’ Typ des Symbols: ’’’’’’’’’’. tag = 1 , ’’’’’’’’’. bold = 2 , ’’’’’’’’’. number = 3 , ’’’’’’’’’. text = 4 , ’’’’’’’’’. operator = 5 , ’’’’’’’’’. delimiter = 6 , ’’’’’’’’’. end of file = 7 , ’’’’’’’’’. within comment = 8 , ’’’’’’’’’. within text = 9 . ’’’’’’’’’N Wird Scan-Ende innerhalb eines Kommentars gefunden, so wird 'niltext' und’’N 'within comment' geliefert. Wird Scan-Ende innerhalb eines TEXT-Denoters’’’^ gefunden, so wird der schon analysierte Teil des Denoters und 'within text' gelieŻ’’’’’’’’’> #on("b")#PROC next symbol (TEXT VAR symbol) #off("b")# ’’’’N s.o. Es wird aber nur der Text des Symbols (ohne Typ) geliefert. ’’’’’’’’’’N #on("b")#PROC next symbol (FILE VAR f, TEXT CONST symbol) #off("b")# ’’’’’’> Arbeitet wie obige Prozeduren, jedoch auf einen FILE. ’’’’’^ #on("b")#PROC next symbol (FILE VAR f, TEXT CONST symbol, INT VAR type)#off("b")# ’’’’’’’’’> Arbeitet wie obige Prozeduren, jedoch auf einen FILE. ’’’’’> #on("b")#PROC scan (TEXT CONST scan text) #off("b")# ’’’’’’^ Meldet einen 'scan text' fŪr den Scanner zur Verarbeitung an. Die Prozedur 'scan'’’’’’’’’’’N muū vor dem ersten Aufruf von 'next symbol' gegeben werden. Im Gegensatz zu^ 'continue scan' normiert 'scan' den inneren Zustand des Scanners, d.h. vorherige’’’’’’’’’’’> Scan-VorgŁnge haben keinen Einfluū mehr auf das Scanning. ’. #on("b")#PROC scan (FILE VAR f) #off("b")# ^ Wie obige Prozedur, jedoch auf einen FILE. Die zu scannende Zeile ist die nŁchŻ’’’’’’’’’’’’> ste Zeile im FILE 'f' ('scan' macht zuerst ein 'getline'). programmierhandbuch.5b’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ 54 ’’’’’’’>5.4.2 Suche nach Textmustern 57 ’’’’’’’>5.4.3 Treffer registrieren 59 ’’’’’’’>5.4.4 Treffer herausnehmen 60 ’’’’’’’>5.4.5 Öndern in Dateien 61 ’’’’’’’>5.4.6 Editor-Prozeduren 62 ’’’’’’’>5.4.7 Sortierung von Textdateien 64 ’’’’’’’>5.4.8 Prozeduren auf DatenrŁumen 65 ’’’’’’’>5.5 Eingabe/Ausgabe 68 ’’’’’’’>5.5.1 E/A auf Bildschirm 69 ’’’’’’’>5.5.1.1 Eingabesteuerzeichen 69 ’’’’’’’>5.5.1.2 Ausgabesteuerzeichen 70 ’’’’’’’>5.5.1.3 Positionierung 71 ’’’’’’’> Grundlegende Prozeduren 72 ’’’’’’’> Umleitbare Eingabeprozeduren 73 ’’’’’’’> Grundlegende Prozeduren 75 ’’’’’’’> Umleitbare Ausgabeprozeduren 77 ’’’’’’’>5.5.1.4 Eingabe 72 ’’’’’’’>5.5.1.5 Ausgabe 75 ’’’’’’’>5.5.1.6 Kontrolle 79 ’’’’’’’>5.5.2 Zeitmessung 80 ’’’’’’’>5.6 Scanner 83 ’’’’’’’> Scanner-Kommandos 85 ’’’’’’’.TEIL 6 : Das Archiv 'std zusatz' ’’’’’’’’’’’’’>6.1 Erweiterungen um Mathematische Operationen 2 ’’’’’’>6.1.1 COMPLEX 2 ’’’’’’’’>6.1.2 LONGINT 7 ’’’’’’’’>6.1.3 VECTOR 16 ’’’’’’’>6.1.4 MATRIX 24 ’’’’’’’>6.2 Programmanalyse 36 ’’’’’’’> reporter - Kommandos 39 ’’’’’’’> Referencer 41 ’’’’’’’> referencer - Kommandos 42 ’’’’’’’>6.3 Rechnen im Editor 43 ’’’’’’’> Arbeitsweise 43 ’’’’’’’> TeCal Prozeduren 44 ’’’’’’’Anhang : ELAN-Syntaxdiagramme programmierhandbuch.inhalt’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.index’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’I€’’’’’’’’’’’’’’’’’’’’’ų’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’įåa€ė’’ĆĄx’’’’xxÄM’’’’Įå’dex’’’’’’’’’’’’’’’’’’’’’’’’Ć’’’’’’’’’’’’’’’’’’a€’"’’’’’’’’’’’’’’’’’’’‘€’>’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’р’’’’’’’’’’’’’’’’’’’’’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’Q’’’’’’’’’’’’’’’’’’’’a’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’±’E’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomodd# ’’’’’’’’’!‚’E’’’’’’’’’’’’’’’’’’’q‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’‘‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’INDEX ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’±‚’6’’’’’’’’’’’’’’’’’’’ń‚’$’’’’’’’’’’’’’’’’’’’!ƒ’<’’’’’’’’’’’’’’’’’’’aƒ’6’’’’’’’’’’’’’’’’’’’”ƒ’%’’’’’’’’’’’’’’’’’’’у’<’’’’’’’’’’’’’’’’’’’„’’’’’’’’’’’’’’’’’’’’A„’’’’’’’’’’’’’’’’’’’’q„’0’’’’’’’’’’’’’’’’’’’±„’0’’’’’’’’’’’’’’’’’’’ń„’’’’’’’’’’’’’’’’’’’’!…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q…’7’’’’’’’’’’’’’’’’’’’‘…’’’’’’’’’’’’’’’’’’’’±…’C’’’’’’’’’’’’’’’’’’’†’7’’’’’’’’’’’’’’’’’’’A†’7’’’’’’’’’’’’’’’’’’’†’7’’’’’’’’’’’’’’’’’’’Į†’6’’’’’’’’’’’’’’’’’’’‡’7’’’’’’’’’’’’’’’’’’’A‡’7’’’’’’’’’’’’’’’’’’’‡’7’’’’’’’’’’’’’’’’’’’Į‡’B’’’’’’’’’’’’’’’’’’’ˆ’7’’’’’’’’’’’’’’’’’’’Qˆ’7’’’’’’’’’’’’’’’’’’’‘ˆ’7’’’’’’’’’’’’’’’’’’’ш’7’’’’’’’’’’’’’’’’’’’‰’7’’’’’’’’’’’’’’’’’’’Q‰’.’’’’’’’’’’’’’’’’’’’‰’7’’’’’’’’’’’’’’’’’’’Į‰’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Š’<’’’’’’’’’’’’’’’’’’’AŠ’7’’’’’’’’’’’’’’’’’’’Š’7’’’’’’’’’’’’’’’’’’’ĮŠ’6’’’’’’’’’’’’’’’’’’’‹’7’’’’’’’’’’’’’’’’’’’A‹’7’’’’’’’’’’’’’’’’’’’‹’6’’’’’’’’’’’’’’’’’’’Į‹’7’’’’’’’’’’’’’’’’’’’Œ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŒ’6’’’’’’’’’’’’’’’’’’’Œ’7’’’’’’’’’’’’’’’’’’’ĮŒ’7’’’’’’’’’’’’’’’’’’’’7’’’’’’’’’’’’’’’’’’’A’7’’’’’’’’’’’’’’’’’’’’<’’’’’’’’’’’’’’’’’’’Į’7’’’’’’’’’’’’’’’’’’’Ž’7’’’’’’’’’’’’’’’’’’’AŽ’7’’’’’’’’’’’’’’’’’’’Ž’7’’’’’’’’’’’’’’’’’’’ĮŽ’7’’’’’’’’’’’’’’’’’’’’7’’’’’’’’’’’’’’’’’’’A’7’’’’’’’’’’’’’’’’’’’’6’’’’’’’’’’’’’’’’’’’Į’6’’’’’’’’’’’’’’’’’’’’6’’’’’’’’’’’’’’’’’’’A’6’’’’’’’’’’’’’’’’’’’’6’’’’’’’’’’’’’’’’’’’Į’7’’’’’’’’’’’’’’’’’’’‘’6’’’’’’’’’’’’’’’’’’’A‘’6’’’’’’’’’’’’’’’’’’’‘’7’’’’’’’’’’’’’’’’’’’Į‘’6’’’’’’’’’’’’’’’’’’’’’7’’’’’’’’’’’’’’’’’’’A’’=’’’’’’’’’’’’’’’’’’’’’6’’’’’’’’’’’’’’’’’’’Į’’7’’’’’’’’’’’’’’’’’’’“’7’’’’’’’’’’’’’’’’’’’A“’7’’’’’’’’’’’’’’’’’’’“’7’’’’’’’’’’’’’’’’’’’Į“’7’’’’’’’’’’’’’’’’’’’”’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A”’7’’’’’’’’’’’’’’’’’’’”’7’’’’’’’’’’’’’’’’’’’Į”’6’’’’’’’’’’’’’’’’’’’•’6’’’’’’’’’’’’’’’’’’’A•’7’’’’’’’’’’’’’’’’’’’•’7’’’’’’’’’’’’’’’’’’’Į•’C’’’’’’’’’’’’’’’’’’’–’7’’’’’’’’’’’’’’’’’’’Q–’7’’’’’’’’’’’’’’’’’’’‘–’7’’’’’’’’’’’’’’’’’’’і’7’’’’’’’’’’’’’’’’’’’—’7’’’’’’’’’’’’’’’’’’’Q—’6’’’’’’’’’’’’’’’’’’’‘—’=’’’’’’’’’’’’’’’’’’’ї’6’’’’’’’’’’’’’’’’’’’˜’=’’’’’’’’’’’’’’’’’’’Q˜’7’’’’’’’’’’’’’’’’’’’‘˜’6’’’’’’’’’’’’’’’’’’’ј’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’™’7’’’’’’’’’’’’’’’’’’’Q™’B’’’’’’’’’’’’’’’’’’’”™’C’’’’’’’’’’’’’’’’’’’ń™’6’’’’’’’’’’’’’’’’’’’1š’6’’’’’’’’’’’’’’’’’’’qš’6’’’’’’’’’’’’’’’’’’’±š’7’’’’’’’’’’’’’’’’’’’ńš’6’’’’’’’’’’’’’’’’’’’1›’.’’’’’’’’’’’’’’’’’’’a›’6’’’’’’’’’’’’’’’’’’’”›’7’’’’’’’’’’’’’’’’’’’į›’7’’’’’’’’’’’’’’’’’’’!œ’7’’’’’’’’’’’’’’’’’’’aœ’7’’’’’’’’’’’’’’’’’’’”œ’7’’’’’’’’’’’’’’’’’’’ᜒ6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!’7’’’’’’’’’’’’’’’’’’’a’7’’’’’’’’’’’’’’’’’’’”’7’’’’’’’’’’’’’’’’’’’į’7’’’’’’’’’’’’’’’’’’’!ž’7’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.6’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’¦ą’’’’’’’’’’’’’’’ü’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ņBa€ė’’£ T’’’’TT¤M’’’’ŅB’ kap6’’’’’’’’a€’!’’’’’’’’’’’£’’’’’’’’’’’’’’’’’’‘€’/’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’р’’’’’’’’’’’’’’’’’’’’’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’Q’)’’’’’’’’’’’’’’’’’’’’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’с’E’’’’’’’’’’’’’’’’’’’!‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomodd# ’’’’’’’’’A‚’E’’’’’’’’’’’’’’’’’’’‘‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±‚’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į‚’T’’’’’’’’’’’’’’’’’’’Aƒ’N’’’’’’’’’’’’’’’’’’’’’machen. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ƒ’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įƒ’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’„’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q„’’’’’’’’’’’’’’’’’’’’q„’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’±„’’’’’’’’’’’’’’’’’’’’ф’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!…’I’’’’’’’’’’’’’’’’’’’q…’M’’’’’’’’’’’’’’’’’’’Į…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į…’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!†’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q†’H’’’’’’’’’’’’’’’’’’’”†’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ц’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‡’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Q‡’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q‡’’’’’’’’’’’’’’’’’’’’‘‡’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’':=' ’’’’’’’’’’’’’’’’ᇒ>’’’’’’’’’’’’’’’’’’’!ˆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'=' ’’’’’’’’’’’’’’’’’1ˆ’6’’’’’’’’’’’’’’’’’’’qˆ’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<>' ’’’’’’’’’’’’’’’’”ˆ’7’’’’’’’’’’’’’’’’’’’ሒ/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'+' ’’’’’’’’’’’’’’’’’!‰’9’’’’’’’’’’’’’’’’’’’a‰’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'-' ’’’’’’’’’’’’’’’’’‰’9’’’’’’’’’’’’’’’’’’’Į‰’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'*' ’’’’’’’’’’’’’’’’’ቒ9’’’’’’’’’’’’’’’’’’’!Š’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'/' ’’’’’’’’’’’’’’’’’QŠ’9’’’’’’’’’’’’’’’’’’’‘Š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'get' ’’’’’’’’’’’’’’’±Š’0’’’’’’’’’’’’’’’’’’’ńŠ’M’’’’’’’’’’’’’’’’’’’A‹’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'put' ’’’’’’’’’’’’’’’q‹’2’’’’’’’’’’’’’’’’’’’±‹’I’’’’’’’’’’’’’’’’’’’Œ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'complex' ’’’’’’’’’’’QŒ’@’’’’’’’’’’’’’’’’’’’”Œ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'complex i' ’’’’’’’’’ጒ.’’’’’’’’’’’’’’’’’’’’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q’’’’’’’’’’’’’’’’’’’’a’0’’’’’’’’’’’’’’’’’’’”’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’’’’’’’’’’’’’’’’’’’’Ž’1’’’’’’’’’’’’’’’’’’’AŽ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'imag part' ’’’’’’’’’Ž’B’’’’’’’’’’’’’’’’’’’ю’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'real part' ’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’a’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'ABS' ’’’’’’’’’’’’’’’”’5’’’’’’’’’’’’’’’’’’’į’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'CONJ' ’’’’’’’’’’’’’’’>’’’’’’’’’’’’’’’’’’’A’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'dphi' ’’’’’’’’’’’’’’’8’’’’’’’’’’’’’’’’’’’Į’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'phi' ’’’’’’’’’’’’’’’ń’7’’’’’’’’’’’’’’’’’’’1‘’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'sqrt' ’’’’’’’’’’’’’’q‘’;’’’’’’’’’’’’’’’’’’’±‘’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’į‘’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’a’’N’’’’’’’’’’’’’’’’’’’±’’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1“’J’’’’’’’’’’’’’’’’’’’“’$’’’’’’’’’’’’’’’’’’’±“’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1”’N’’’’’’’’’’’’’’’’’’’”’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į”’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į”’’’’’’’’’’’’’’’’’’’’’’ Datentyp ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’':=' ’’’’’’’’’’’’’’’’•’I’’’’’’’’’’’’’’’’’’’Q•’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'= ' ’’’’’’’’’’’’’’’’q•’?’’’’’’’’’’’’’’’’’’’Į•’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<>' ’’’’’’’’’’’’’’’’–’@’’’’’’’’’’’’’’’’’’’Q–’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'< ' ’’’’’’’’’’’’’’’’‘–’?’’’’’’’’’’’’’’’’’’’į–’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<=' ’’’’’’’’’’’’’’’’—’@’’’’’’’’’’’’’’’’’’’a—’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'> ' ’’’’’’’’’’’’’’’’”—’?’’’’’’’’’’’’’’’’’’’ń—’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'>=' ’’’’’’’’’’’’’’’’!˜’@’’’’’’’’’’’’’’’’’’’q˜’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'+ ' ’’’’’’’’’’’’’’’’±˜’=’’’’’’’’’’’’’’’’’’’ń˜’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!™’B’’’’’’’’’’’’’’’’’’’q™’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'- ' ’’’’’’’’’’’’’’’’‘™’=’’’’’’’’’’’’’’’’’’’љ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń™’B’’’’’’’’’’’’’’’’’’’Aš’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'* ' ’’’’’’’’’’’’’’’’qš’B’’’’’’’’’’’’’’’’’’’Įš’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'**' ’’’’’’’’’’’’’’’’ńš’H’’’’’’’’’’’’’’’’’’’A›’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’›’.’’’’’’’’’’’’’’’’’’’±›’*’’’’’’’’’’’’’’’’’’’į›’"’’’’’’’’’’’’’’’’’’’œ’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aœ’Q’’’’’’’’’’’’’’’’’’’Įœ’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’’.’’’’’’’’’’’’’’’’’’’1’*’’’’’’’’’’’’’’’’’’’až’7’’’’’’’’’’’’’’’’’’’”ž’7’’’’’’’’’’’’’’’’’’’įž’7’’’’’’’’’’’’’’’’’’’!Ÿ’7’’’’’’’’’’’’’’’’’’’aŸ’7’’’’’’’’’’’’’’’’’’’”Ÿ’7’’’’’’’’’’’’’’’’’’’្7’’’’’’’’’’’’’’’’’’’! ’7’’’’’’’’’’’’’’’’’’’a ’7’’’’’’’’’’’’’’’’’’’” ’7’’’’’’’’’’’’’’’’’’’į ’7’’’’’’’’’’’’’’’’’’’!”’7’’’’’’’’’’’’’’’’’’’a”’7’’’’’’’’’’’’’’’’’’’””’7’’’’’’’’’’’’’’’’’’’į”’7’’’’’’’’’’’’’’’’’’’!¢’7’’’’’’’’’’’’’’’’’’’a¢’7’’’’’’’’’’’’’’’’’’’”¢’7’’’’’’’’’’’’’’’’’’’ᢒ7’’’’’’’’’’’’’’’’’’’!£’7’’’’’’’’’’’’’’’’’’’a£’7’’’’’’’’’’’’’’’’’’’”£’7’’’’’’’’’’’’’’’’’’’ᣒ7’’’’’’’’’’’’’’’’’’’!¤’7’’’’’’’’’’’’’’’’’’’a¤’7’’’’’’’’’’’’’’’’’’’”¤’7’’’’’’’’’’’’’’’’’’’ᤒ7’’’’’’’’’’’’’’’’’’’!„’7’’’’’’’’’’’’’’’’’’’a„’7’’’’’’’’’’’’’’’’’’’”„’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į„’6’’’’’’’’’’’’’’’’’’’!¦’7’’’’’’’’’’’’’’’’’’’a¦’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¦’6’’’’’’’’’’’’’’’’’’’ᦒ7’’’’’’’’’’’’’’’’’’’!§’7’’’’’’’’’’’’’’’’’’’a§’7’’’’’’’’’’’’’’’’’’’”§’=’’’’’’’’’’’’’’’’’’’į§’7’’’’’’’’’’’’’’’’’’’!Ø’6’’’’’’’’’’’’’’’’’’’aØ’6’’’’’’’’’’’’’’’’’’’”Ø’7’’’’’’’’’’’’’’’’’’’ᨒC’’’’’’’’’’’’’’’’’’’1©’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q©’7’’’’’’’’’’’’’’’’’’’±©’7’’’’’’’’’’’’’’’’’’’ń©’7’’’’’’’’’’’’’’’’’’’1Ŗ’7’’’’’’’’’’’’’’’’’’’qŖ’:’’’’’’’’’’’’’’’’’’’±Ŗ’7’’’’’’’’’’’’’’’’’’’ńŖ’7’’’’’’’’’’’’’’’’’’’1«’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q«’9’’’’’’’’’’’’’’’’’’’±«’7’’’’’’’’’’’’’’’’’’’ń«’6’’’’’’’’’’’’’’’’’’’1¬’7’’’’’’’’’’’’’’’’’’’q¬’7’’’’’’’’’’’’’’’’’’’±¬’;’’’’’’’’’’’’’’’’’’’ń¬’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1­’7’’’’’’’’’’’’’’’’’’’q­’6’’’’’’’’’’’’’’’’’’’±­’7’’’’’’’’’’’’’’’’’’’ń­’7’’’’’’’’’’’’’’’’’’’1®’C’’’’’’’’’’’’’’’’’’’®’7’’’’’’’’’’’’’’’’’’’Į®’7’’’’’’’’’’’’’’’’’’’Æ’=’’’’’’’’’’’’’’’’’’’AÆ’:’’’’’’’’’’’’’’’’’’’Æ’6’’’’’’’’’’’’’’’’’’’ĮÆ’7’’’’’’’’’’’’’’’’’’’°’7’’’’’’’’’’’’’’’’’’’A°’7’’’’’’’’’’’’’’’’’’’°’7’’’’’’’’’’’’’’’’’’’Į°’7’’’’’’’’’’’’’’’’’’’±’6’’’’’’’’’’’’’’’’’’’A±’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±’6’’’’’’’’’’’’’’’’’’’Į±’7’’’’’’’’’’’’’’’’’’’²’7’’’’’’’’’’’’’’’’’’’A²’7’’’’’’’’’’’’’’’’’’’²’7’’’’’’’’’’’’’’’’’’’Į²’7’’’’’’’’’’’’’’’’’’’³’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A³’=’’’’’’’’’’’’’’’’’’’³’=’’’’’’’’’’’’’’’’’’’Į³’7’’’’’’’’’’’’’’’’’’’“’7’’’’’’’’’’’’’’’’’’’A“’7’’’’’’’’’’’’’’’’’’’“’7’’’’’’’’’’’’’’’’’’’Į“’7’’’’’’’’’’’’’’’’’’’µ’7’’’’’’’’’’’’’’’’’’’Aµ’7’’’’’’’’’’’’’’’’’’’µ’7’’’’’’’’’’’’’’’’’’’Įµ’7’’’’’’’’’’’’’’’’’’’¶’=’’’’’’’’’’’’’’’’’’’A¶’C’’’’’’’’’’’’’’’’’’’‘¶’7’’’’’’’’’’’’’’’’’’’Ѷ’7’’’’’’’’’’’’’’’’’’’·’7’’’’’’’’’’’’’’’’’’’Q·’7’’’’’’’’’’’’’’’’’’’‘·’7’’’’’’’’’’’’’’’’’’’Ń·’7’’’’’’’’’’’’’’’’’’’ø’7’’’’’’’’’’’’’’’’’’’Qø’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ø’6’’’’’’’’’’’’’’’’’’’Ńø’7’’’’’’’’’’’’’’’’’’’¹’6’’’’’’’’’’’’’’’’’’’Q¹’7’’’’’’’’’’’’’’’’’’’‘¹’7’’’’’’’’’’’’’’’’’’’ѹ’7’’’’’’’’’’’’’’’’’’’ŗ’(’’’’’’’’’’’’’’’’’’’Aŗ’7’’’’’’’’’’’’’’’’’’’ŗ’7’’’’’’’’’’’’’’’’’’’Įŗ’7’’’’’’’’’’’’’’’’’’’»’7’’’’’’’’’’’’’’’’’’’A»’7’’’’’’’’’’’’’’’’’’’»’C’’’’’’’’’’’’’’’’’’’Ń»’7’’’’’’’’’’’’’’’’’’’¼’C’’’’’’’’’’’’’’’’’’’a¼’<’’’’’’’’’’’’’’’’’’’”¼’6’’’’’’’’’’’’’’’’’’’į¼’6’’’’’’’’’’’’’’’’’’’!½’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a½’7’’’’’’’’’’’’’’’’’’’”½’7’’’’’’’’’’’’’’’’’’’į½’’’’’’’’’’’’’’’’’’’’¾’7’’’’’’’’’’’’’’’’’’’A¾’7’’’’’’’’’’’’’’’’’’’¾’7’’’’’’’’’’’’’’’’’’’Į¾’7’’’’’’’’’’’’’’’’’’’æ’7’’’’’’’’’’’’’’’’’’’Aæ’7’’’’’’’’’’’’’’’’’’’æ’7’’’’’’’’’’’’’’’’’’’Įæ’7’’’’’’’’’’’’’’’’’’’Ą’6’’’’’’’’’’’’’’’’’’’AĄ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ą’7’’’’’’’’’’’’’’’’’’’ĮĄ’7’’’’’’’’’’’’’’’’’’’Į’7’’’’’’’’’’’’’’’’’’’AĮ’7’’’’’’’’’’’’’’’’’’’Į’6’’’’’’’’’’’’’’’’’’’ĮĮ’7’’’’’’’’’’’’’’’’’’’Ā’7’’’’’’’’’’’’’’’’’’’AĀ’=’’’’’’’’’’’’’’’’’’’Ā’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĀ’6’’’’’’’’’’’’’’’’’’’Ć’7’’’’’’’’’’’’’’’’’’’AĆ’4’’’’’’’’’’’’’’’’’’’Ć’=’’’’’’’’’’’’’’’’’’’ĮĆ’6’’’’’’’’’’’’’’’’’’’Ä’7’’’’’’’’’’’’’’’’’’’AÄ’7’’’’’’’’’’’’’’’’’’’Ä’.’’’’’’’’’’’’’’’’’’’±Ä’6’’’’’’’’’’’’’’’’’’’ńÄ’7’’’’’’’’’’’’’’’’’’’1Å’7’’’’’’’’’’’’’’’’’’’qÅ’7’’’’’’’’’’’’’’’’’’’±Å’7’’’’’’’’’’’’’’’’’’’ńÅ’7’’’’’’’’’’’’’’’’’’’1Ę’6’’’’’’’’’’’’’’’’’’’qĘ’7’’’’’’’’’’’’’’’’’’’±Ę’7’’’’’’’’’’’’’’’’’’’ńĘ’7’’’’’’’’’’’’’’’’’’’1Ē’ ’’’’’’’’’’’’’’’’’’’aĒ’7’’’’’’’’’’’’’’’’’’’”Ē’7’’’’’’’’’’’’’’’’’’’įĒ’.’’’’’’’’’’’’’’’’’’’Č’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QČ’C’’’’’’’’’’’’’’’’’’’”Č’7’’’’’’’’’’’’’’’’’’’įČ’=’’’’’’’’’’’’’’’’’’’!É’6’’’’’’’’’’’’’’’’’’’aÉ’7’’’’’’’’’’’’’’’’’’’”É’6’’’’’’’’’’’’’’’’’’’įÉ’7’’’’’’’’’’’’’’’’’’’!Ź’7’’’’’’’’’’’’’’’’’’’aŹ’6’’’’’’’’’’’’’’’’’’’”Ź’7’’’’’’’’’’’’’’’’’’’įŹ’7’’’’’’’’’’’’’’’’’’’!Ė’7’’’’’’’’’’’’’’’’’’’aĖ’7’’’’’’’’’’’’’’’’’’’”Ė’7’’’’’’’’’’’’’’’’’’’įĖ’7’’’’’’’’’’’’’’’’’’’!Ģ’7’’’’’’’’’’’’’’’’’’’aĢ’=’’’’’’’’’’’’’’’’’’’”Ģ’7’’’’’’’’’’’’’’’’’’’įĢ’7’’’’’’’’’’’’’’’’’’’!Ķ’7’’’’’’’’’’’’’’’’’’’aĶ’7’’’’’’’’’’’’’’’’’’’”Ķ’7’’’’’’’’’’’’’’’’’’’įĶ’7’’’’’’’’’’’’’’’’’’’!Ī’7’’’’’’’’’’’’’’’’’’’aĪ’6’’’’’’’’’’’’’’’’’’’”Ī’7’’’’’’’’’’’’’’’’’’’įĪ’7’’’’’’’’’’’’’’’’’’’!Ļ’7’’’’’’’’’’’’’’’’’’’aĻ’6’’’’’’’’’’’’’’’’’’’”Ļ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įĻ’=’’’’’’’’’’’’’’’’’’’!Š’7’’’’’’’’’’’’’’’’’’’aŠ’7’’’’’’’’’’’’’’’’’’’”Š’6’’’’’’’’’’’’’’’’’’’įŠ’9’’’’’’’’’’’’’’’’’’’!Ń’5’’’’’’’’’’’’’’’’’’’aŃ’7’’’’’’’’’’’’’’’’’’’”Ń’7’’’’’’’’’’’’’’’’’’’įŃ’6’’’’’’’’’’’’’’’’’’’!Ņ’7’’’’’’’’’’’’’’’’’’’aŅ’7’’’’’’’’’’’’’’’’’’’”Ņ’C’’’’’’’’’’’’’’’’’’’ńŅ’7’’’’’’’’’’’’’’’’’’’1Ó’7’’’’’’’’’’’’’’’’’’’qÓ’7’’’’’’’’’’’’’’’’’’’±Ó’7’’’’’’’’’’’’’’’’’’’ńÓ’=’’’’’’’’’’’’’’’’’’’1Ō’7’’’’’’’’’’’’’’’’’’’qŌ’7’’’’’’’’’’’’’’’’’’’±Ō’7’’’’’’’’’’’’’’’’’’’ńŌ’<’’’’’’’’’’’’’’’’’’’1Õ’6’’’’’’’’’’’’’’’’’’’qÕ’7’’’’’’’’’’’’’’’’’’’±Õ’5’’’’’’’’’’’’’’’’’’’ńÕ’=’’’’’’’’’’’’’’’’’’’1Ö’<’’’’’’’’’’’’’’’’’’’qÖ’7’’’’’’’’’’’’’’’’’’’±Ö’=’’’’’’’’’’’’’’’’’’’ńÖ’7’’’’’’’’’’’’’’’’’’’1×’7’’’’’’’’’’’’’’’’’’’q×’6’’’’’’’’’’’’’’’’’’’±×’7’’’’’’’’’’’’’’’’’’’ń×’7’’’’’’’’’’’’’’’’’’’1Ų’7’’’’’’’’’’’’’’’’’’’qŲ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ų’6’’’’’’’’’’’’’’’’’’’ńŲ’7’’’’’’’’’’’’’’’’’’’1Ł’7’’’’’’’’’’’’’’’’’’’qŁ’7’’’’’’’’’’’’’’’’’’’±Ł’6’’’’’’’’’’’’’’’’’’’ńŁ’<’’’’’’’’’’’’’’’’’’’1Ś’6’’’’’’’’’’’’’’’’’’’qŚ’7’’’’’’’’’’’’’’’’’’’±Ś’7’’’’’’’’’’’’’’’’’’’ńŚ’7’’’’’’’’’’’’’’’’’’’1Ū’7’’’’’’’’’’’’’’’’’’’qŪ’7’’’’’’’’’’’’’’’’’’’±Ū’I’’’’’’’’’’’’’’’’’’’Ü’6’’’’’’’’’’’’’’’’’’’AÜ’7’’’’’’’’’’’’’’’’’’’Ü’7’’’’’’’’’’’’’’’’’’’ĮÜ’7’’’’’’’’’’’’’’’’’’’Ż’7’’’’’’’’’’’’’’’’’’’AŻ’6’’’’’’’’’’’’’’’’’’’Ż’7’’’’’’’’’’’’’’’’’’’ĮŻ’7’’’’’’’’’’’’’’’’’’’Ž’7’’’’’’’’’’’’’’’’’’’AŽ’6’’’’’’’’’’’’’’’’’’’Ž’7’’’’’’’’’’’’’’’’’’’ĮŽ’6’’’’’’’’’’’’’’’’’’’ß’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aß’4’’’’’’’’’’’’’’’’’’’ß’6’’’’’’’’’’’’’’’’’’’Įß’7’’’’’’’’’’’’’’’’’’’ą’7’’’’’’’’’’’’’’’’’’’Aą’7’’’’’’’’’’’’’’’’’’’ą’7’’’’’’’’’’’’’’’’’’’Įą’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’7’’’’’’’’’’’’’’’’’’’Aį’7’’’’’’’’’’’’’’’’’’’į’7’’’’’’’’’’’’’’’’’’’Įį’6’’’’’’’’’’’’’’’’’’’ā’7’’’’’’’’’’’’’’’’’’’Aā’6’’’’’’’’’’’’’’’’’’’ā’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įā’6’’’’’’’’’’’’’’’’’’’ć’7’’’’’’’’’’’’’’’’’’’Ać’7’’’’’’’’’’’’’’’’’’’ć’7’’’’’’’’’’’’’’’’’’’Įć’7’’’’’’’’’’’’’’’’’’’ä’7’’’’’’’’’’’’’’’’’’’Aä’7’’’’’’’’’’’’’’’’’’’ä’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įä’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’å’7’’’’’’’’’’’’’’’’’’’Aå’7’’’’’’’’’’’’’’’’’’’å’7’’’’’’’’’’’’’’’’’’’’’ #tableend# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’a’"’’’’’’’’’’’’’’’’’’’‘’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'ABS' ’’’’’’’’’’’’’’’į’?’’’’’’’’’’’’’’’’’’’1ž’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'DECR' ’’’’’’’’’’’’’’až’H’’’’’’’’’’’’’’’’’’’±ž’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'DIV' ’’’’’’’’’’’’’’’ў’D’’’’’’’’’’’’’’’’’’’!Ÿ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’AŸ’’’’’’’’’’’’’’’’’’’’aŸ’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'INCR' ’’’’’’’’’’’’’’‘Ÿ’Q’’’’’’’’’’’’’’’’’’’ńŸ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'MOD' ’’’’’’’’’’’’’’’! ’D’’’’’’’’’’’’’’’’’’’q ’L’’’’’’’’’’’’’’’’’’’’’ telt. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’Į ’"’’’’’’’’’’’’’’’’’’’ń ’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'SIGN' ’’’’’’’’’’’’’’!”’;’’’’’’’’’’’’’’’’’’’a”’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’””’!’’’’’’’’’’’’’’’’’’’Ń”’!’’’’’’’’’’’’’’’’’’’¢’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'get' ’’’’’’’’’’’’’’’1¢’3’’’’’’’’’’’’’’’’’’’q¢’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¢’B’’’’’’’’’’’’’’’’’’’ń¢’T’’’’’’’’’’’’’’’’’’’Q£’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’‘£’’’’’’’’’’’’’’’’’’’’±£’'’’’’’’’’’’’’’’’’’’’ᣒ'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'put' ’’’’’’’’’’’’’’’¤’8’’’’’’’’’’’’’’’’’’’Q¤’O’’’’’’’’’’’’’’’’’’’±¤’M’’’’’’’’’’’’’’’’’’’„’Q’’’’’’’’’’’’’’’’’’’a„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘„’D’’’’’’’’’’’’’’’’’’’į„’Z’’’’’’’’’’’’’’’’’’’’’ sein. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’A¦’’’’’’’’’’’’’’’’’’’’a¦’)’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'abs' ’’’’’’’’’’’’’’’‘¦’A’’’’’’’’’’’’’’’’’’’ᦒ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'int' ’’’’’’’’’’’’’’’§’<’’’’’’’’’’’’’’’’’’’Q§’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’§’’’’’’’’’’’’’’’’’’’’”§’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'longint' ’’’’’’’’’’’ѧ’<’’’’’’’’’’’’’’’’’’’Ø’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AØ’>’’’’’’’’’’’’’’’’’’’Ø’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'max' ’’’’’’’’’’’’’’’±Ø’F’’’’’’’’’’’’’’’’’’’©’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'maxlongint' ’’’’’’’’1©’0’’’’’’’’’’’’’’’’’’’q©’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'min' ’’’’’’’’’’’’’’’”©’F’’’’’’’’’’’’’’’’’’’ń©’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'random' ’’’’’’’’’’’’!Ŗ’S’’’’’’’’’’’’’’’’’’’Ŗ’N’’’’’’’’’’’’’’’’’’’ŃŖ’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'sign' ’’’’’’’’’’’’’’!«’=’’’’’’’’’’’’’’’’’’’a«’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”«’!’’’’’’’’’’’’’’’’’’’Ń«’!’’’’’’’’’’’’’’’’’’’¬’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'text' ’’’’’’’’’’’’’’1¬’>’’’’’’’’’’’’’’’’’’’q¬’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¬’P’’’’’’’’’’’’’’’’’’’­’N’’’’’’’’’’’’’’’’’’’Q­’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q­’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”­’Q’’’’’’’’’’’’’’’’’’’®’T’’’’’’’’’’’’’’’’’’’a®’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”®’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń®’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'zero' ’’’’’’’’’’’’’’1Æ’)’’’’’’’’’’’’’’’’’’’aÆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Æ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Æ’J’’’’’’’’’’’’’’’’’’’ᯒN’’’’’’’’’’’’’’’’’’’1°’T’’’’’’’’’’’’’’’’’’’‘°’K’’’’’’’’’’’’’’’’’’’į°’S’’’’’’’’’’’’’’’’’’’A±’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q±’Q’’’’’’’’’’’’’’’’’’’ѱ’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1²’;’’’’’’’’’’’’’’’’’’’q²’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”²’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ѳ’L’’’’’’’’’’’’’’’’’’’!³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’':=' ’’’’’’’’’’’’’’’’1³’D’’’’’’’’’’’’’’’’’’’³’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±³’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į³’O’’’’’’’’’’’’’’’’’’’A“’Q’’’’’’’’’’’’’’’’’’’”“’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń“’-’’’’’’’’’’’’’’’’’’’µ’-’’’’’’’’’’’’’’’’’’’1µ’’’’’’’’’’’’’’’’’’’’Qµ’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘µ’H’’’’’’’’’’’’’’’’’’’įµ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!¶’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q¶’M’’’’’’’’’’’’’’’’’’’”¶’P’’’’’’’’’’’’’’’’’’’·’R’’’’’’’’’’’’’’’’’’’a·’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'=' ’’’’’’’’’’’’’’’’’‘·’5’’’’’’’’’’’’’’’’’’’Ń·’M’’’’’’’’’’’’’’’’’’’!ø’M’’’’’’’’’’’’’’’’’’’qø’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ø’-’’’’’’’’’’’’’’’’’’’Ńø’-’’’’’’’’’’’’’’’’’’’¹’-’’’’’’’’’’’’’’’’’’’1¹’-’’’’’’’’’’’’’’’’’’’a¹’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<>' ’’’’’’’’’’’’’’’’‘¹’6’’’’’’’’’’’’’’’’’’’ѹ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'+' ’’’’’’’’’’’’’’’’’ŗ’4’’’’’’’’’’’’’’’’’’’Qŗ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ŗ’7’’’’’’’’’’’’’’’’’’’Ńŗ’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’»’:’’’’’’’’’’’’’’’’’’’Q»’-’’’’’’’’’’’’’’’’’’’»’-’’’’’’’’’’’’’’’’’’’±»’’’’’’’’’’’’’’’’’’’’Ń»’A’’’’’’’’’’’’’’’’’’’!¼’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’1¼’.’’’’’’’’’’’’’’’’’’’a¼’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'-' ’’’’’’’’’’’’’’’’’±¼’4’’’’’’’’’’’’’’’’’’’ń¼’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’½’7’’’’’’’’’’’’’’’’’’’Q½’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’‘½’.’’’’’’’’’’’’’’’’’’’Į½’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'*' ’’’’’’’’’’’’’’’’’¾’5’’’’’’’’’’’’’’’’’’’Q¾’Q’’’’’’’’’’’’’’’’’’’±¾’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’æ’’’’’’’’’’’’’’’’’’’’1æ’-’’’’’’’’’’’’’’’’’’’aæ’-’’’’’’’’’’’’’’’’’’’‘æ’’’’’’’’’’’’’’’’’’’’±æ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’įæ’,’’’’’’’’’’’’’’’’’’’Ą’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aĄ’B’’’’’’’’’’’’’’’’’’’±Ą’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĄ’B’’’’’’’’’’’’’’’’’’’AĮ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'/' ’’’’’’’’’’’’’’’’’Į’B’’’’’’’’’’’’’’’’’’’ŃĮ’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’;’’’’’’’’’’’’’’’’’’’QĀ’-’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’”Ā’’’’’’’’’’’’’’’’’’’’ĮĀ’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'LENGTH' ’’’’’’’’’’’’Ć’6’’’’’’’’’’’’’’’’’’’AĆ’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'SUB' ’’’’’’’’’’’’’’’qĆ’A’’’’’’’’’’’’’’’’’’’ĮĆ’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’ńĆ’'’’’’’’’’’’’’’’’’’’’!Ä’E’’’’’’’’’’’’’’’’’’’qÄ’(’’’’’’’’’’’’’’’’’’’”Ä’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'get' ’’’’’’’’’’’’’’’įÄ’<’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’.#pagenr("%",1)##block##pageblock# ’’’’’’’’’’’’>#headandbottom("1","EUMEL-Benutzerhandbuch","INDEX","Index")# .#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’#center#INDEX N#center#____________________________________________________________ ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’Index - % #right#GMD ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #right#Index - % ’’’’’’’’’#lpos(0.2)##lpos(6.2)# ’’’’’’’>* 5-11, 5-18, 5-32, 6-19, 6-27, 6-4, 6-9 ’’’’’’’’.** 5-11, 5-19, 5-60, 6-10 ’’’’’’’’’’>+ 4-20, 5-11, 5-18, 5-32, 5-54, 6-18, 6-26, 6-3, 6-9 ’’>- 4-20, 5-11, 5-18, 5-54, 6-18, 6-26, 6-3, 6-9 ’’’’’’’’./ 4-20, 4-22, 5-18, 6-19, 6-4 ’’’’’’’’’>:= 2-91, 5-10, 5-17, 5-30, 5-65, 6-17, 6-25, 6-3, 6-8 ’’.< 5-10, 5-17, 5-30, 6-8 ’’’’’’’’’’’’’’’.<= 5-10, 5-17, 5-30, 6-8 ’’’’’’’’’’’’’’’><> 5-10, 5-17, 5-30, 6-18, 6-26, 6-3, 6-8 ’’’’’’’’’’’’’’>= 5-10, 5-17, 5-30, 6-17, 6-25, 6-3, 6-8 ’’’’’’’’’’’’’’.> 5-10, 5-17, 5-30, 6-9 ’’’’’’’’’’’’’’’.>= 5-10, 5-17, 5-30, 6-9 ’’’’’’’’’’’’’’’>Abfragekette 2-25 ’’’’’’’ABS 6-10, 6-6 ’’’’Nabs 5-13, 5-20, 6-13 ’’’’’’’’’’’>Abweisende Schleife 2-29 ’’’’’’’>ALL 4-17 ’’’’’’’>all 4-17 ’’’’’’’>AND 5-7 ’’’’’’’’>any 5-54 ’’’’’’’>Archiv 4-44 ’’’’’’’>Archivdiskette 4-47 ’’’’’’’Narchive 1-9, 4-24, 4-45 ’’’’’’’’’’’’>arctan 5-20 ’’’’’’’>arctand 5-20 ’’’’’’’>assert 6-39 ’’’’’’’>assertion 6-36 ’’’’’’’>Assertions 6-39 ’’’’’’’.Ausgabesteuerzeichen 5-70 >Ausschalten des GerŁts 1-17 ’’’’’’’>Automatische Ablaufinformation 6-37 ’’’’’’’>begin 2-78, 4-3 ’’>begin password 4-40 ’’’’’’’>Benutzereigene Ablaufinformation 6-37 ’’’’’’’>BOOL-Denoter: 2-9 ’’’’’’’’>BOUND 2-83 ’’’’’’’>bound 5-56 ’’’’’’’>break 4-4 ’’’’’’’’>brother 4-23 ’’’’’’’>bulletin 4-8 ’’’’’’’’>CAND 5-7 ’’’’’’’’>CAT 5-32 ’’’’’’’>change 5-33 ’’’’’’’>change 5-61 ’’’’’’’>change all 5-33 ’’’’’’’>check 4-49, 5-4 ’’>clear 4-46 ’’’’’’’>clear removed 5-51 ’’’’’’’>clock 5-80 ’’’’’’’>code 5-34 ’’’’’’’>col 5-48 ’’’’’’’>column 6-31 ’’’’’’’>COLUMNS 6-28 ’’’’’’’>COMPILER ERROR 5-5 ’’’’’’’’>complex 6-5 ’’’’’’’’>complex i 6-5 ’’’’’’’’>complex one 6-5 ’’’’’’’’>complex zero 6-5 ’’’’’’’’>compress 5-34 ’’’’’’’>configurator 1-9 ’’’’’’’’>CONJ 6-6 ’’’’’’’’>Container 5-26 ’’’’’’’>continue 4-3 ’’’’’’’’>continue scan 5-83 ’’’’’’’>copy 4-26, 5-67 ’>COR 5-7 ’’’’’’’’>cos 5-20 ’’’’’’’>cosd 5-20 ’’’’’’’>count off 6-39 ’’’’’’’>count on 6-39 ’’’’’’’>cout 5-75 ’’’’’’’>cursor 5-71 ’’’’’’’>dataspaces 5-66 ’’’’’’’>date 5-81 ’’’’’’’>Datenraum 1-3 ’’’’’’’’>Datensicherheit 1-8 ’’’’’’’’>day 5-81 ’’’’’’’>decimal exponent 5-20 ’’’’’’’NDECR 5-12, 5-19, 6-10 ’’’’’’’’’’’>delete char 5-34 ’’’’’’’>delete record 5-50 ’’’’’’’>Der EUMEL-Zeichensatz 5-29 ’’’’’’’>Der Lernmodus 3-17 ’’’’’’’>DET 6-28 ’’’’’’’>DIRFILE 2-73 ’’’’’’’’>DIV 5-12, 6-11 ’>do 5-2 ’’’’’’’’>down 5-48, 5-57 ’>downety 5-57 ’’’’’’’>dphi 6-6 ’’’’’’’’>ds pages 5-66 ’’’’’’’>e 5-21 ’’’’’’’Nedit 3-1, 4-29, 5-62 ’’’’’’’’’’’’Neditget 4-30, 5-63, 5-72 ’’’’’’’’’’’>editor 1-9 ’’’’’’’’>Editor verlassen 3-2 ’’’’’’’’>Ein- bzw. Ausschalten der Markierung 3-9 ’’’’’’’’>Ein- bzw. Ausschalten des EinfŪgemodus 3-10 ’’’’’’’>EinfŪgen von Textpassagen 3-6 ’’’’’’’’.Eingabesteuerzeichen 5-69 >Eingabetaste / Absatztaste 3-4 ’’’’’’’’>eliminate reports 6-39 ’’’’’’’>Endlosschleife 2-28 ’’’’’’’>enter password 4-41 ’’’’’’’>eof 5-43 ’’’’’’’>erase 4-37 ’’’’’’’>Erweiterbarkeit 1-6 ’’’’’’’’>ESC ) 3-16 ’’’’’’’>ESC ( 3-16 ’’’’’’’>ESC > 3-16 ’’’’’’’>ESC < ’’’’’’’’!Å’P’’’’’’’’’’’’’’’’’’’’’ angibt. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’Å’ ’’’’’’’’’’’’’’’’’’’±Å’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'put' ’’’’’’’’’’’’’’’ńÅ’1’’’’’’’’’’’’’’’’’’’1Ę’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'length' ’’’’’’’’’’’’qĘ’8’’’’’’’’’’’’’’’’’’’±Ę’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĘ’-’’’’’’’’’’’’’’’’’’’!Ē’-’’’’’’’’’’’’’’’’’’’QĒ’’’’’’’’’’’’’’’’’’’’qĒ’(’’’’’’’’’’’’’’’’’’’”Ē’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'nilvector' ’’’’’’’’’ŃĒ’1’’’’’’’’’’’’’’’’’’’Č’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'norm' ’’’’’’’’’’’’’’aČ’7’’’’’’’’’’’’’’’’’’’”Č’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'replace' ’’’’’’’’’’’ńČ’M’’’’’’’’’’’’’’’’’’’AÉ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘É’ ’’’’’’’’’’’’’’’’’’’ĮÉ’’’’’’’’’’’’’’’’’’’’įÉ’"’’’’’’’’’’’’’’’’’’’Ź’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’aŹ’-’’’’’’’’’’’’’’’’’’’‘Ź’E’’’’’’’’’’’’’’’’’’’įŹ’.’’’’’’’’’’’’’’’’’’’Ė’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'vector' ’’’’’’’’’’’’QĖ’<’’’’’’’’’’’’’’’’’’’‘Ė’Q’’’’’’’’’’’’’’’’’’’ńĖ’J’’’’’’’’’’’’’’’’’’’AĢ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’aĢ’#’’’’’’’’’’’’’’’’’’’‘Ģ’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃĢ’M’’’’’’’’’’’’’’’’’’’!Ķ’Q’’’’’’’’’’’’’’’’’’’Ķ’J’’’’’’’’’’’’’’’’’’’ŃĶ’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ī’1’’’’’’’’’’’’’’’’’’’AĪ’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’Ī’#’’’’’’’’’’’’’’’’’’’±Ī’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ 6.1.4 MATRIX’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ńĪ’L’’’’’’’’’’’’’’’’’’’AĻ’J’’’’’’’’’’’’’’’’’’’‘Ļ’T’’’’’’’’’’’’’’’’’’’ńĻ’N’’’’’’’’’’’’’’’’’’’AŠ’R’’’’’’’’’’’’’’’’’’’”Š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŠ’Q’’’’’’’’’’’’’’’’’’’!Ń’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń’7’’’’’’’’’’’’’’’’’’’ĮŃ’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŅ’A’’’’’’’’’’’’’’’’’’’‘Ņ’(’’’’’’’’’’’’’’’’’’’ĮŅ’B’’’’’’’’’’’’’’’’’’’Ó’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’':=' ’’’’’’’’’’’’’’’’AÓ’<’’’’’’’’’’’’’’’’’’’Ó’N’’’’’’’’’’’’’’’’’’’ŃÓ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÓ’/’’’’’’’’’’’’’’’’’’’1Ō’/’’’’’’’’’’’’’’’’’’’qŌ’’’’’’’’’’’’’’’’’’’’‘Ō’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŌ’@’’’’’’’’’’’’’’’’’’’!Õ’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aÕ’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Õ’M’’’’’’’’’’’’’’’’’’’įÕ’P’’’’’’’’’’’’’’’’’’’AÖ’R’’’’’’’’’’’’’’’’’’’”Ö’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'=' ’’’’’’’’’’’’’’’’’ŃÖ’5’’’’’’’’’’’’’’’’’’’×’M’’’’’’’’’’’’’’’’’’’a×’T’’’’’’’’’’’’’’’’’’’Į×’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ų’*’’’’’’’’’’’’’’’’’’’QŲ’/’’’’’’’’’’’’’’’’’’’‘Ų’*’’’’’’’’’’’’’’’’’’’ĮŲ’’’’’’’’’’’’’’’’’’’’ńŲ’0’’’’’’’’’’’’’’’’’’’1Ł’’’’’’’’’’’’’’’’’’’’aŁ’0’’’’’’’’’’’’’’’’’’’”Ł’’’’’’’’’’’’’’’’’’’’ŃŁ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'<>' ’’’’’’’’’’’’’’’’Ś’6’’’’’’’’’’’’’’’’’’’QŚ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'+' ’’’’’’’’’’’’’’’’’‘Ś’4’’’’’’’’’’’’’’’’’’’ŃŚ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ū’7’’’’’’’’’’’’’’’’’’’AŪ’S’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ū’0’’’’’’’’’’’’’’’’’’’įŪ’0’’’’’’’’’’’’’’’’’’’!Ü’"’’’’’’’’’’’’’’’’’’’QÜ’&’’’’’’’’’’’’’’’’’’’Ü’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’ĮÜ’0’’’’’’’’’’’’’’’’’’’Ż’E’’’’’’’’’’’’’’’’’’’QŻ’*’’’’’’’’’’’’’’’’’’’Ż’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'-' ’’’’’’’’’’’’’’’’’ŃŻ’4’’’’’’’’’’’’’’’’’’’Ž’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŽ’/’’’’’’’’’’’’’’’’’’’Ž’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃŽ’7’’’’’’’’’’’’’’’’’’’ß’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’qß’0’’’’’’’’’’’’’’’’’’’±ß’E’’’’’’’’’’’’’’’’’’’ą’*’’’’’’’’’’’’’’’’’’’1ą’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'*' ’’’’’’’’’’’’’’’’’ą’B’’’’’’’’’’’’’’’’’’’Ńą’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!į’/’’’’’’’’’’’’’’’’’’’aį’’’’’’’’’’’’’’’’’’’’į’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńį’B’’’’’’’’’’’’’’’’’’’!ā’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aā’7’’’’’’’’’’’’’’’’’’’”ā’T’’’’’’’’’’’’’’’’’’’ć’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ać’/’’’’’’’’’’’’’’’’’’’ć’/’’’’’’’’’’’’’’’’’’’Įć’’’’’’’’’’’’’’’’’’’’ńć’’’’’’’’’’’’’’’’’’’’ä’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’Qä’-’’’’’’’’’’’’’’’’’’’ä’O’’’’’’’’’’’’’’’’’’’įä’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’å’D’’’’’’’’’’’’’’’’’’’Qå’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’‘å’-’’’’’’’’’’’’’’’’’’’Įå’R’’’’’’’’’’’’’’’’’’’!ę’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aę’D’’’’’’’’’’’’’’’’’’’‘ę’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’Ńę’0’’’’’’’’’’’’’’’’’’’ē’O’’’’’’’’’’’’’’’’’’’qē’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'COLUMNS' ’’’’’’’’’’’”ē’7’’’’’’’’’’’’’’’’’’’įē’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!č’*’’’’’’’’’’’’’’’’’’’Qč’+’’’’’’’’’’’’’’’’’’’č’$’’’’’’’’’’’’’’’’’’’±č’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'DET' ’’’’’’’’’’’’’’’įč’4’’’’’’’’’’’’’’’’’’’!é’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’aé’%’’’’’’’’’’’’’’’’’’’‘é’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'INV' ’’’’’’’’’’’’’’’įé’6’’’’’’’’’’’’’’’’’’’!ź’V’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’ź’%’’’’’’’’’’’’’’’’’’’±ź’1’’’’’’’’’’’’’’’’’’’ńź’$’’’’’’’’’’’’’’’’’’’!ė’$’’’’’’’’’’’’’’’’’’’Qė’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'ROWS' ’’’’’’’’’’’’’’ė’4’’’’’’’’’’’’’’’’’’’Įė’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ģ’*’’’’’’’’’’’’’’’’’’’1ģ’+’’’’’’’’’’’’’’’’’’’aģ’’’’’’’’’’’’’’’’’’’’ģ’!’’’’’’’’’’’’’’’’’’’±ģ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'TRANSP' ’’’’’’’’’’’’įģ’9’’’’’’’’’’’’’’’’’’’!ķ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’'get' ’’’’’’’’’’’’’’’aķ’H’’’’’’’’’’’’’’’’’’’±ķ’L’’’’’’’’’’’’’’’’’’’ī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'put' ’’’’’’’’’’’’’’’!ī’1’’’’’’’’’’’’’’’’’’’aī’4’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ 'column' ’’’’’’’’’’’’”ī’H’’’’’’’’’’’’’’’’’’’ńī’N’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aļ’,’’’’’’’’’’’’’’’’’’’qļ’,’’’’’’’’’’’’’’’’’’’”ļ’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’įļ’,’’’’’’’’’’’’’’’’’’’š’I’’’’’’’’’’’’’’’’’’’aš’-’’’’’’’’’’’’’’’’’’’‘š’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'idn' ’’’’’’’’’’’’’’’įš’<’’’’’’’’’’’ 3-16 ’’’’’’’>ESC 9 3-14 ’’’’’’’>ESC 1 3-14 ’’’’’’’>ESC a 3-16 ’’’’’’’>ESC A 3-16 ’’’’’’’>ESC b 3-14 ’’’’’’’>ESC blank 3-16 ’’’’’’’>ESC d 3-15 ’’’’’’’>ESC e 3-14 ’’’’’’’>ESC ESC 3-16 ’’’’’’’>ESC f 3-14 ’’’’’’’>ESC g 3-15 ’’’’’’’>ESC HOP 3-17 ’’’’’’’>ESC HOP HOP 3-17 ’’’’’’’>ESC HOP taste 3-17 ’’’’’’’>ESC k 3-16 ’’’’’’’>ESC n 3-14 ’’’’’’’>ESC O 3-16 ’’’’’’’>ESC o 3-16 ’’’’’’’>ESC p 3-15 ’’’’’’’>ESC q 3-14 ’’’’’’’>ESC RUBIN 3-15 ’’’’’’’>ESC RUBOUT 3-15 ’’’’’’’>ESC s 3-16 ’’’’’’’>ESC ? taste 3-16 ’’’’’’’>ESC ! taste 3-16 ’’’’’’’>ESC U 3-16 ’’’’’’’>ESC u 3-16 ’’’’’’’>ESC v 3-14 ’’’’’’’>ESC w 3-14 ’’’’’’’>ESC Ü 3-16 ’’’’’’’>ESC Ż 3-16 ’’’’’’’>EUMEL-Editor 3-1 ’’’’’’’’>evaluate 6-44 ’’’’’’’>exp 5-21 ’’’’’’’>false 5-7 ’’’’’’’’>family password 4-42 ’’’’’’’>father 4-23 ’’’’’’’>Fehlermeldungen des Archivs 4-52 ’’’’’’’>fetch 4-33, 5-67 ’>fetchall 4-34 ’’’’’’’>FILE 2-73 ’’’’’’’’>Fixpunkt 1-8 ’’’’’’’’>floor 5-21 ’’’’’’’Nforget 4-26, 4-47, 5-67 ’’’’’’’’’’’>frac 5-21 ’’’’’’’>Garbage Collection 5-26 ’’’’’’’>Gelerntes vergessen 3-17 ’’’’’’’>generate counts 6-40 ’’’’’’’>generate reports 6-40 ’’’’’’’>get 2-80, 5-44, 5-73, 6-5, 6-12, 6-21, 6-30 ’’’’>getchar 5-72 ’’’’’’’>get cursor 5-71 ’’’’’’’>getline 5-45, 5-74 ’>HŁufige Fehler bei der Benutzung von DatenrŁumen 2-85 ’’’’’>HŁufigkeitszŁhlung 6-36 ’’’’’’’>halt 4-4 ’’’’’’’’>headline 5-43 ’’’’’’’>heap size 5-27 ’’’’’’’>help 4-5, 4-9 ’’’>hour 5-81 ’’’’’’’>idn 6-31 ’’’’’’’>imag part 6-6 ’’’’’’’’>inchar 5-72 ’’’’’’’>incharety 5-72 ’’’’’’’NINCR 5-12, 5-19, 6-11 ’’’’’’’’’’’>INITFLAG 2-91 ’’’’’’’>initialized 2-91 ’’’’’’’>initialize random 5-13, 5-21 ’>input 2-75, 5-42 ’’’’>insert 5-2 ’’’’’’’’>insert char 5-35 ’’’’’’’>insert record 5-50 ’’’’’’’>Installation 6-36 ’’’’’’’>int 5-21 ’’’’’’’>int 6-13 ’’’’’’’>INT-Denoter: 2-7 ’’’’’’’’>INV 6-28 ’’’’’’’>Kommando 1-9 ’’’’’’’’>kommando auf taste 4-31 ’’’’’’’>kommando auf taste legen 4-31 ’’’’’’’>Kommando auf Taste legen 3-16 ’’’’’’’>Kommandotaste 3-11 ’’’’’’’>kommastellen 6-44 ’’’’’’’>Konfiguration 1-9 ’’’’’’’’>length 5-35, 6-22 ’>LENGTH 5-35, 6-19 ’>Lernen ausschalten 3-17 ’’’’’’’>Lernen einschalten 3-17 ’’’’’’’>lernsequenz auf taste 4-32 ’’’’’’’>lernsequenz auf taste legen 4-32 ’’’’’’’>Lese-Fehler (Archiv) 4-52 ’’’’’’’>LEXEQUAL 5-31 ’’’’’’’>LEXGREATER 5-31 ’’’’’’’>LEXGREATEREQUAL 5-31 ’’’’’’’>lex sort 5-64 ’’’’’’’>LIKE 4-19, 5-59 ’Nline 5-47, 5-71, 5-77 ’’’’’’’’’’’>line no 5-43 ’’’’’’’>lines 5-43 ’’’’’’’>list 4-27 ’’’’’’’>ln 5-22 ’’’’’’’>LŚschtaste 3-10 ’’’’’’’>log10 5-22 ’’’’’’’>log2 5-22 ’’’’’’’>longint 6-13 ’’’’’’’>manager task 1-9 ’’’’’’’’>Mantisse 5-16 ’’’’’’’>Markierzustand 3-9 ’’’’’’’’>match 5-60 ’’’’’’’>matchpos 5-60 ’’’’’’’>matrix 6-32 ’’’’’’’.max 5-13, 5-22, 6-13 ’’’’’’>maxint 5-13 ’’’’’’’>maxlongint 6-13 ’’’’’’’>maxreal 5-22 ’’’’’’’>max text length 5-35 ’’’’’’’>merke 6-45 ’’’’’’’Nmin 5-13, 5-23, 6-14 ’’’’’’’’’’’>minint ’’’’’’’’!ń’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qń’%’’’’’’’’’’’’’’’’’’’”ń’>’’’’’’’’’’’’’’’’’’’įń’?’’’’’’’’’’’’’’’’’’’1ņ’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER : ’’’’’’’’’qņ’ ’’’’’’’’’’’’’’’’’’’”ņ’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'matrix' ’’’’’’’’’’’’ńņ’H’’’’’’’’’’’’’’’’’’’Aó’L’’’’’’’’’’’’’’’’’’’‘ó’W’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńó’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’!ō’#’’’’’’’’’’’’’’’’’’’Qō’>’’’’’’’’’’’’’’’’’’’‘ō’&’’’’’’’’’’’’’’’’’’’Įō’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’õ’Y’’’’’’’’’’’’’’’’’’’qõ’M’’’’’’’’’’’’’’’’’’’Įõ’I’’’’’’’’’’’’’’’’’’’ö’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aö’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’ö’#’’’’’’’’’’’’’’’’’’’±ö’>’’’’’’’’’’’’’’’’’’’ńö’&’’’’’’’’’’’’’’’’’’’!÷’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'row' ’’’’’’’’’’’’’’’q÷’E’’’’’’’’’’’’’’’’’’’Į÷’L’’’’’’’’’’’’’’’’’’’ų’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ų’,’’’’’’’’’’’’’’’’’’’aų’)’’’’’’’’’’’’’’’’’’’‘ų’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’Ńų’)’’’’’’’’’’’’’’’’’’’ł’F’’’’’’’’’’’’’’’’’’’Qł’*’’’’’’’’’’’’’’’’’’’ł’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'sub' ’’’’’’’’’’’’’’’Ńł’M’’’’’’’’’’’’’’’’’’’!ś’P’’’’’’’’’’’’’’’’’’’ś’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ś’0’’’’’’’’’’’’’’’’’’’ńś’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’!ū’-’’’’’’’’’’’’’’’’’’’Qū’C’’’’’’’’’’’’’’’’’’’”ū’.’’’’’’’’’’’’’’’’’’’Ńū’>’’’’’’’’’’’’’’’’’’’ü’0’’’’’’’’’’’’’’’’’’’Qü’I’’’’’’’’’’’’’’’’’’’”ü’.’’’’’’’’’’’’’’’’’’’Ńü’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'transp' ’’’’’’’’’’’’!ż’2’’’’’’’’’’’’’’’’’’’aż’O’’’’’’’’’’’’’’’’’’’’’ wird. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’Įż’’’’’’’’’’’’’’’’’’’’įż’M’’’’’’’’’’’’’’’’’’’1ž’8’’’’’’’’’’’’’’’’’’’qž’P’’’’’’’’’’’’’’’’’’’Ńž’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’/’’’’’’’’’’’’’’’’’’’A’’,’’’’’’’’’’’’’’’’’’’q’’’’’’’’’’’’’’’’’’’’’‘’’%’’’’’’’’’’’’’’’’’’’Į’’@’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’2’>’’’’’’’’’’’’’’’’’’’r’O’’’’’’’’’’’’’’’’’’’Ņ’/’’’’’’’’’’’’’’’’’’’’;’’’’’’’’’’’’’’’’’’’R’;’’’’’’’’’’’’’’’’’’’’’&’’’’’’’’’’’’’’’’’’’Ā’1’’’’’’’’’’’’’’’’’’’’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’r’H’’’’’’’’’’’’’’’’’’’Ā’5’’’’’’’’’’’’’’’’’’’’L’’’’’’’’’’’’’’’’’’’R’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’*’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’Ņ’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’’9’’’’’’’’’’’’’’’’’’’B’C’’’’’’’’’’’’’’’’’’’’’:’’’’’’’’’’’’’’’’’’’Ņ’>’’’’’’’’’’’’’’’’’’’’<’’’’’’’’’’’’’’’’’’’R’L’’’’’’’’’’’’’’’’’’’¢’:’’’’’’’’’’’’’’’’’’’ā’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’B’@’’’’’’’’’’’’’’’’’’’’’6’’’’’’’’’’’’’’’’’’’Ņ’P’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’/’’’’’’’’’’’’’’’’’’’r’,’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’Ā’"’’’’’’’’’’’’’’’’’’’ņ’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ FEHLER: ’’’’’’’’’’B’;’’’’’’’’’’’’’’’’’’’‚’P’’’’’’’’’’’’’’’’’’’ā’,’’’’’’’’’’’’’’’’’’’ ’5’’’’’’’’’’’’’’’’’’’R ’8’’’’’’’’’’’’’’’’’’’’ ’ ’’’’’’’’’’’’’’’’’’’Ā ’.’’’’’’’’’’’’’’’’’’’ņ ’H’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’B ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’ ’"’’’’’’’’’’’’’’’’’’’Ā ’3’’’’’’’’’’’’’’’’’’’ ’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b ’’’’’’’’’’’’’’’’’’’’‚ ’Q’’’’’’’’’’’’’’’’’’’ā ’Q’’’’’’’’’’’’’’’’’’’B ’S’’’’’’’’’’’’’’’’’’’¢ ’M’’’’’’’’’’’’’’’’’’’ņ ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’" ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r ’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢ ’Y’’’’’’’’’’’’’’’’’’’’T’’’’’’’’’’’’’’’’’’’b’J’’’’’’’’’’’’’’’’’’’²’P’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’b’U’’’’’’’’’’’’’’’’’’’’’rufe): ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’Ā’$’’’’’’’’’’’’’’’’’’’ņ’"’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"’!’’’’’’’’’’’’’’’’’’’R’S’’’’’’’’’’’’’’’’’’’²’I’’’’’’’’’’’’’’’’’’’’V’’’’’’’’’’’’’’’’’’’b’J’’’’’’’’’’’’’’’’’’’²’K’’’’’’’’’’’’’’’’’’’’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’Q’’’’’’’’’’’’’’’’’’’¢’S’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’b’P’’’’’’’’’’’’’’’’’’’Ā’Q’’’’’’’’’’’’’’’’’’’"’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’O’’’’’’’’’’’’’’’’’’’’’ Ūbersetzen. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’#’’’’’’’’’’’’’’’’’’’B’O’’’’’’’’’’’’’’’’’’’¢’N’’’’’’’’’’’’’’’’’’’ņ’S’’’’’’’’’’’’’’’’’’’R’O’’’’’’’’’’’’’’’’’’’²’K’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’"’$’’’’’’’’’’’’’’’’’’’R’?’’’’’’’’’’’’’’’’’’’¢’’’’’’’’’’’’’’’’’’’’Ā’@’’’’’’’’’’’’’’’’’’’’-’’’’’’’’’’’’’’’’’’’’’ ... ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’P’’’’’’’’’’’’’’’’’’’¢’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’&’’’’’’’’’’’’’’’’’’’B’8’’’’’’’’’’’’’’’’’’’‚’8’’’’’’’’’’’’’’’’’’’Ā’8’’’’’’’’’’’’’’’’’’’’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’N’’’’’’’’’’’’’’’’’’’’’U’’’’’’’’’’’’’’’’’’’ņ’Q’’’’’’’’’’’’’’’’’’’R’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’O’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’"’Q’’’’’’’’’’’’’’’’’’’‚’M’’’’’’’’’’’’’’’’’’’Ņ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’r’N’’’’’’’’’’’’’’’’’’’’’Aufrufe ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’W’’’’’’’’’’’’’’’’’’’R’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’P’’’’’’’’’’’’’’’’’’’B’S’’’’’’’’’’’’’’’’’’’¢’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'Assertions' ’’’’’’’’Ņ’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2 ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R ’R’’’’’’’’’’’’’’’’’’’² ’P’’’’’’’’’’’’’’’’’’’!’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R!’2’’’’’’’’’’’’’’’’’’’’!’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ!’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’""’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'count on' ’’’’’’’’’’B"’%’’’’’’’’’’’’’’’’’’’r"’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'count off' ’ 5-14 ’’’’’’’NMOD 5-14, 5-23, 6-11 ’’’’’’’’’’’>modify 2-75, 5-42 ’’>Monitor 1-9 ’’’’’’’’>Multi-Tasking-/Multi-User-Betrieb 1-5 ’’’’’’’’>myself 4-23 ’’’’’’’>name 4-25 ’’’’’’’>Namensverzeichnis 4-16 ’’’’’’’NetzwerkfŁhigkeit 1-6 >new 5-65 ’’’’’’’>next symbol 5-83 ’’’’’’’>next symbol 5-85 ’’’’’’’>Nicht abweisende Schleife 2-29 ’’’’’’’>nilspace 5-65 ’’’’’’’>niltask 4-22 ’’’’’’’>nilvector 6-22 ’’’’’’’>norm 6-22 ’’’’’’’>NOT 5-8 ’’’’’’’’>notion 5-56 ’’’’’’’>old 5-66 ’’’’’’’>online 5-79 ’’’’’’’>Operationen auf Markierungen 3-15 ’’’’’’’>Operatoren 2-14 ’’’’’’’>OR 5-8 ’’’’’’’’>OR 5-54 ’’’’’’’>out 5-75 ’’’’’’’>output 2-75, 5-42 ’>out subtext 5-76 ’’’’’’’>packets 4-8 ’’’’’’’’>page 5-71 ’’’’’’’>Paketkonzept 2-1 ’’’’’’’’’’>pause 5-79, 5-82 ’>phi 6-6 ’’’’’’’’>pi 5-23 ’’’’’’’>pos 5-36 ’’’’’’’.Positionierung 5-71 >Positionierung des Cursors 3-4 ’’’’’’’’>print 4-38 ’’’’’’’>PRINTER 4-24 ’’’’’’’>printer 4-24 ’’’’’’’>PrioritŁt von generischen Operatoren 2-49 ’’’’’’’>PrioritŁt von Operatoren 2-16 ’’’’’’’>prot 5-4 ’’’’’’’’>Prozeduren als Parameter 2-39 ’’’’’’’>Prozeduren mit Parametern 2-38 ’’’’’’’>prozentsatz 6-45 ’’’’’’’.Prozeūkommunikation 1-6 ’’’’’’’’’’’’’’>PUBLIC 4-24 ’’’’’’’>public 4-24 ’’’’’’’.put 5-46, 5-78, 6-12, 6-21, 6-30, 6-5 >putline 5-46, 5-78 ’Nrandom 5-14, 5-23, 6-14 ’’’’’’’’’’’>read record 5-50 ’’’’’’’>real 5-14, 5-37 ’>REAL-Denoter: 2-8 ’’’’’’’’>Realisierung von abstrakten Datentypen 2-47 ’’’’’’’>real part 6-6 ’’’’’’’’>referencer 6-42 ’’’’’’’>Referenzliste 6-41 ’’’’’’’>Refinements 2-1 ’’’’’’’’>reinsert 5-51 ’’’’’’’>release 4-45 ’’’’’’’>remainder 4-18 ’’’’’’’>remove 5-51 ’’’’’’’>rename 4-28 ’’’’’’’>rename myself 4-25 ’’’’’’’>reorganize 5-52 ’’’’’’’>replace 5-37, 6-22 ’>replace column 6-34 ’’’’’’’>replace element 6-34 ’’’’’’’>replace row 6-35 ’’’’’’’>report 6-36 ’’’’’’’>report off 6-40 ’’’’’’’>report on 6-40 ’’’’’’’>reserve 4-25 ’’’’’’’>REST 3-6 ’’’’’’’’>round 5-23 ’’’’’’’>row 6-32 ’’’’’’’>ROWS 6-29 ’’’’’’’>run 5-3 ’’’’’’’’>runagain 5-3 ’’’’’’’’>save 4-35, 5-67 ’>saveall 4-36 ’’’’’’’>scan 5-86 ’’’’’’’>Schreibarbeit beenden 3-2 ’’’’’’’’>Schutz vor fehlerhaftem Zugriff auf Datenobjekte 2-45 ’’’’’>Scratch-Datei 3-13 ’’’’’’’’’>segments 5-52 ’’’’’’’>sequential file 5-41 ’’’’’’’>SHard 1-5 ’’’’’’’’>show 4-30 ’’’’’’’>shutup 1-17 ’’’’’’’Nsign 5-15, 5-24, 6-14 ’’’’’’’’’’’>SIGN 6-11 ’’’’’’’>sin 5-24 ’’’’’’’>sind 5-24 ’’’’’’’>smallreal 5-24 ’’’’’’’>SOME 2-80, 4-17 ’>son 4-23 ’’’’’’’>sort 5-64 ’’’’’’’>Spracherweiterung 2-44 ’’’’’’’>sqrt 5-24, 6-6 ’’>Standard-Datenraum 1-9 ’’’’’’’’>std tastenbelegung 4-32 ’’’’’’’>STOP-Taste 3-20 ’’’’’’’’’>storage 4-11, 5-66 ’>storage info 4-5, 4-11 ’’>sub 6-33 ’’’’’’’>SUB 5-37, 6-20 ’>subtext 5-38 ’’’’’’’>supervisor 4-24 ’’’’’’’>Supervisor 1-9 ’’’’’’’’>SUPERVISOR-Taste 3-18 ’’’’’’’>Symbole 5-83 ’’’’’’’>sysin 5-73 ’’’’’’’>sysout 5-77 ’’’’’’’>Tabulatortaste 3-8 ’’’’’’’’>tan 5-25 ’’’’’’’>tand 5-25 ’’’’’’’>task 4-22 ’’’’’’’>Task 1-9 ’’’’’’’’>task info ’’’’’’’’¢"’&’’’’’’’’’’’’’’’’’’’Ņ"’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’#’’’’’’’’’’’’’’’’’’’’"#’A’’’’’’’’’’’’’’’’’’’r#’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā#’’’’’’’’’’’’’’’’’’’’ā#’@’’’’’’’’’’’’’’’’’’’2$’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'report on' ’’’’’’’’’’$’&’’’’’’’’’’’’’’’’’’’Ā$’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'report off' ’’’’’’’’%’'’’’’’’’’’’’’’’’’’’’2%’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r%’’’’’’’’’’’’’’’’’’’’’%’?’’’’’’’’’’’’’’’’’’’ā%’S’’’’’’’’’’’’’’’’’’’B&’S’’’’’’’’’’’’’’’’’’’¢&’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'assert' ’’’’’’’’’’’’Ā&’J’’’’’’’’’’’’’’’’’’’'’N’’’’’’’’’’’’’’’’’’’b'’C’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ Referencer ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²'’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ'’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’(’\’’’’’’’’’’’’’’’’’’’r(’W’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ(’Z’’’’’’’’’’’’’’’’’’’2)’S’’’’’’’’’’’’’’’’’’’’)’R’’’’’’’’’’’’’’’’’’’ņ)’M’’’’’’’’’’’’’’’’’’’B*’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚*’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢*’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’+’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B+’T’’’’’’’’’’’’’’’’’’’¢+’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ verzeichnet. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā+’S’’’’’’’’’’’’’’’’’’’B,’Q’’’’’’’’’’’’’’’’’’’¢,’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ,’Q’’’’’’’’’’’’’’’’’’’R-’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢-’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ-’M’’’’’’’’’’’’’’’’’’’".’U’’’’’’’’’’’’’’’’’’’‚.’S’’’’’’’’’’’’’’’’’’’ā.’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"/’M’’’’’’’’’’’’’’’’’’’r/’V’’’’’’’’’’’’’’’’’’’Ņ/’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’0’P’’’’’’’’’’’’’’’’’’’b0’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’0’K’’’’’’’’’’’’’’’’’’’ā0’O’’’’’’’’’’’’’’’’’’’B1’N’’’’’’’’’’’’’’’’’’’’1’N’’’’’’’’’’’’’’’’’’’ā1’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'referencer' ’’’’’’’’22’J’’’’’’’’’’’’’’’’’’’‚2’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ā2’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’3’L’’’’’’’’’’’’’’’’’’’R3’O’’’’’’’’’’’’’’’’’’’²3’P’’’’’’’’’’’’’’’’’’’4’M’’’’’’’’’’’’’’’’’’’b4’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢4’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ4’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’5’U’’’’’’’’’’’’’’’’’’’r5’O’’’’’’’’’’’’’’’’’’’Ņ5’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Arbeitsweise ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ5’T’’’’’’’’’’’’’’’’’’’R6’O’’’’’’’’’’’’’’’’’’’²6’P’’’’’’’’’’’’’’’’’’’7’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’27’P’’’’’’’’’’’’’’’’’’’’7’Q’’’’’’’’’’’’’’’’’’’’’wird. ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ7’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’28’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚8’T’’’’’’’’’’’’’’’’’’’ā8’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’9’P’’’’’’’’’’’’’’’’’’’b9’N’’’’’’’’’’’’’’’’’’’’’ reduziert. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²9’f’’’’’’’’’’’’’’’’’’’":’N’’’’’’’’’’’’’’’’’’’r:’P’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ:’M’’’’’’’’’’’’’’’’’’’";’’’’’’’’’’’’’’’’’’’’B;’’’’’’’’’’’’’’’’’’’’b;’’’’’’’’’’’’’’’’’’’’‚;’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢;’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā;’’’’’’’’’’’’’’’’’’’’ā;’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’<’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B<’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’<’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 'evaluate' ’’’’’’’’’’²<’B’’’’’’’’’’’’’’’’’’’=’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B=’3’’’’’’’’’’’’’’’’’’’‚=’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²=’’’’’’’’’’’’’’’’’’’’Ņ=’8’’’’’’’’’’’’’’’’’’’>’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'merke' ’’’’’’’’’’’’’b>’2’’’’’’’’’’’’’’’’’’’¢>’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā>’3’’’’’’’’’’’’’’’’’’’"?’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R?’’’’’’’’’’’’’’’’’’’’b?’9’’’’’’’’’’’’’’’’’’’¢?’U’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’@’:’’’’’’’’’’’’’’’’’’’B@’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’'tecal' ’’’’’’’’’’’’’r@’/’’’’’’’’’’’’’’’’’’’²@’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A’3’’’’’’’’’’’’’’’’’’’BA’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rA’"’’’’’’’’’’’’’’’’’’’¢A’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āA’’’’’’’’’’’’’’’’’’’’B’*’’’’’’’’’’’’’’’’’’’2B’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RB’?’’’’’’’’’’’’’’’’’’’¢B’!’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’.''''’’’’’’’’’’’’’>#pagenr("%",1)##setcount(1)##block##pageblock# ’’’’’’’’’’’’’’’.#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’.#center#TEIL 6 : Das Archiv 'std.zusatz' ’’’’’N#center#____________________________________________________________ ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’6 - % #right#GMD ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #right#6 - % ’’’’’’’’’’’’’.TEIL 6: Das Archiv 'std.zusatz' ’’’’’’’’’’’’’^Das Archiv 'std.zusatz' enthŁlt Pakete, die nur bei Bedarf insertiert werden sollen.’’’’’’’’’’NEine Einbindung in das EUMEL Grundsystem wŪrde dieses ungebŪhrlich unfangreich.Das Archiv enthŁlt zusŁtzliche Software fŪr: ’N- mathematische Operationen : complex , longint , vector , matrix ’’’’’’’’’’’>- Analyse : reporter , referencer ’’’’’’’’’- Taschenrechnerfunktion ’’’’’> zur Editor-Erweiterung : TeCal , TeCal Auskunft ’’’’’’’’6.1. Erweiterungen um ’’’’’’’. Mathematische Operationen’’’’’’’’’’’’’’’6.1.1 COMPLEX ’’’’’’’’’’’’’’’NDas Packet COMPLEX erweitert das System um den Datentyp COMPLEX (komplexe’’’’’NZahlen) und Operationen auf komplexen Zahlen. Folgende Operationen stehen fŪr’COMPLEX zur VerfŪgung: ’’’’’’’>- Einfache Operatoren : := , = , <> , + ,- , * ’’’’’’’’.- Eingabe/Ausgabe : get , put ’’’’’N- Denotierungsprozedur : complex , complex i , complex one , comŻ ’’’’’’. plex zero ’’’’’>- Komponenten : real part , imag part ’’’’’’’’’>- bes. Funktionen : ABS , CONJ , phi , dphi , sqrt COMPLEX Operationen ’’’’’’’’’’'TYPE COMPLEX' ’’’’’’’’’’’’’’’N Komplexe Zahl, bestehend aud Realteil 're' und ImaginŁrteil 'im'. ’’’’’’’’’> #on("b")#OP := (COMPLEX VAR a, COMPLEX CONST b) #off("b")#  Zuweisung. > #on("b")#BOOL OP = (COMPLEX CONST a, b) #off("b")# ’’’’’’’’. Vergleich von 'a' und 'b' auf Gleichheit. ’> #on("b")#BOOL OP <> (COMPLEX CONST a, b) #off("b")# ’’’’’’’> Vergleich von 'a' und 'b' auf Ungleichheit. ’’’’’’’’’’’’’’’> #on("b")#COMPLEX OP + (COMPLEX CONST a, b) #off("b")# ’’’’’ Summe von 'a' und 'b'. ’’’’> #on("b")#COMPLEX OP - (COMPLEX CONST a, b) #off("b")# ’’’’’ Differenz von 'a' und 'b'. > #on("b")#COMPLEX OP * (COMP 4-5, 4-12 ’’>Task-Organisation 1-2 ’’’’’’’’>task password 4-43 ’’’’’’’>task status 4-15 ’’’’’’’>taste enthaelt kommando 4-31 ’’’’’’’>tecal 6-45 ’’’’’’’>tecalauskunft 6-45 ’’’’’’’Ntext 5-15, 5-25, 5-39, 6-15 ’’’’’>TEXT-Denoter: 2-9 ’’’’’’’’>Thesaurus 4-16 ’’’’’’’>time 5-82 ’’’’’’’>time of day 5-82 ’’’’’’’>TIMESOUT 5-76 ’’’’’’’>Titelzeile 3-2 ’’’’’’’’>to line 5-48 ’’’’’’’>transp 6-33 ’’’’’’’>TRANSP 6-29 ’’’’’’’>true 5-8 ’’’’’’’’>type 5-66 ’’’’’’’>TYPE COMPLEX 6-3 ’’’’’’’’>TYPE LONGINT 6-8 ’’’’’’’’>Ųberschrift in die Kopfzeile 5-43 ’’’’’’’’’’>Umschalttaste 3-4 ’’’’’’’’>UNLIKE 5-59 ’’’’’’’>Unterbrechen einer Ausgabe 3-20 ’’’’’’’>up 5-49 ’’’’’’’>up 5-58 ’’’’’’’>uppety 5-58 ’’’’’’’>vector 6-23 ’’’’’’’>Vereinbarung eines dyadischen Operators 2-42 ’’’’’’’>Vereinbarung eines monadischen Operators 2-42 ’’’’’’’>VerstŁrkertaste 3-5 ’’’’’’’’>Verwendung von Prozeduren 2-35 ’’’’’’’>Virtuelle Speicherverwaltung 1-7 ’’’’’’’’>Vorbelegte Tasten 3-17 ’’’’’’’>warnings 5-4 ’’’’’’’’>WEITER-Taste 3-20 ’’’’’’’>Wertliefernde Prozeduren 2-40 ’’’’’’’>Wertliefernde Refinements 2-34 ’’’’’’’>word wrap 4-32 ’’’’’’’>write 5-78 ’’’’’’’>write 5-47 ’’’’’’’>write record 5-50 ’’’’’’’>XOR 5-8 ’’’’’’’’>ZŁhlschleife 2-30 ’’’’’’’>Zeichen schreiben 3-16 ’’’’’’’>zero 6-15 ’’’’’’’programmierhandbuch.index’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.1’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’U’’’’’’’’’’’’’’’’’’’’Ą’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Įźa€ė’’Œ‰ ’’’’  M’’’’”ź’ kap1’’’’’’’’a€’A’’’’’’’’’’’Œ’’’’’’’’’’’’’’’’’’±€’H’’’’’’’’’’’’’’’’’’’’/’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’A’’’’’’’’’’’’’’’’’’’’q’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’Į’’’’’’’’’’’’’’’’’’’’ၒE’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’1‚’E’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomodd# ’’’’’’’’’”‚’E’’’’’’’’’’’’’’’’’’’ń‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qƒ’P’’’’’’’’’’’’’’’’’’’±ƒ’O’’’’’’’’’’’’’’’’’’’„’K’’’’’’’’’’’’’’’’’’’a„’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±„’M’’’’’’’’’’’’’’’’’’’…’H’’’’’’’’’’’’’’’’’’’Q…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q…’S’’’’’’’’’’’’’’’’’’’х’M’’’’’’’’’’’’’’’’’’’!†’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q†’Q’’’’’’’’’’’’’’’’’’’±†’P’’’’’’’’’’’’’’’’’’’‡’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A‡’W’’’’’’’’’’’’’’’’’’’”‡’M’’’’’’’’’’’’’’’’’’’ń‡’N’’’’’’’’’’’’’’’’’’’Aˆ’M’’’’’’’’’’’’’’’’’’’‘ˆ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ш’Q’’’’’’’’’’’’’’’’’’’1‰’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q‰’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‰’M’’’’’’’’’’’’’’’’’’’щ’`’’’’’’’’’’’’’’’’’’’AŠ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŠ’"’’’’’’’’’’’’’’’’’’’‘Š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŠ’M’’’’’’’’’’’’’’’’’’’‹’N’’’’’’’’’’’’’’’’’’’a‹’O’’’’’’’’’’’’’’’’’’’Į‹’H’’’’’’’’’’’’’’’’’’’Œ’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŒ’K’’’’’’’’’’’’’’’’’’’±Œ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ь’R’’’’’’’’’’’’’’’’’’’1’J’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’э’’’’’’’’’’’’’’’’’’’’ń’’’’’’’’’’’’’’’’’’’’Ž’’’’’’’’’’’’’’’’’’’’1Ž’’’’’’’’’’’’’’’’’’’’QŽ’’’’’’’’’’’’’’’’’’’’qŽ’’’’’’’’’’’’’’’’’’’’‘Ž’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ UR ’’’’’’’’’’’±Ž’’’’’’’’’’’’’’’’’’’’ю’’’’’’’’’’’’’’’’’’’’ńŽ’’’’’’’’’’’’’’’’’’’’’!’’’’’’’’’’’’’’’’’’’A’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a’L’’’’’’’’’’’’’’’’’’’±’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń’T’’’’’’’’’’’’’’’’’’’Q’J’’’’’’’’’’’’’’’’’’’’’ erkennen. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’S’’’’’’’’’’’’’’’’’’’‘’Q’’’’’’’’’’’’’’’’’’’a‘’Q’’’’’’’’’’’’’’’’’’’Į‘’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’q’’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ђ’U’’’’’’’’’’’’’’’’’’’1“’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q“’U’’’’’’’’’’’’’’’’’’’ѓ’T’’’’’’’’’’’’’’’’’’’1”’M’’’’’’’’’’’’’’’’’’’”’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’є’M’’’’’’’’’’’’’’’’’’’!•’M’’’’’’’’’’’’’’’’’’’q•’’’’LEX CONST a, b) #off("b")# ’’’’’. Multiplikation von 'a' mit 'b'. ’’’’’’’’’’’> #on("b")#COMPLEX OP / (COMPLEX CONST a, b) #off("b")# ’’’’’ Division von 'a' mit 'b'. ’> #on("b")#PROC get (COMPLEX VAR a) #off("b")# ’’’’’’’’’’’’’’N Einlesen eines komplexen Wertes vom Bildschirm in der Form zweier REAL-DeŻ’. noter. Die Eingabe kann editiert werden. ’’> #on("b")#PROC put (COMPLEX CONST a) #off("b")# ’’’’’’’’’’’’N Ausgabe eines komplexen Wertes auf dem Bildschirm in Form zweier REAL-’’’’’N Werte. Hinter jedem REAL-Wert wird ein Leerzeichen angefŪgt. ’’’’’’’’’’’’’’N #on("b")#COMPLEX PROC complex (REAL CONST re, im) #off("b")# ’’’’’’’’’’’’’’> Denotierungsprozedur. Angabe in kartesischen Koordinaten. ’. #on("b")#COMPLEX PROC complex i #off("b")# > Denotierungsprozedur fŪr den komplexen Wert '0.0 + i 1.0'. 'complex one' > #on("b")#COMPLEX PROC complex one #off("b")# ’’’’’’’’’’’’’’> Denotierungsprozedur fŪr den komplexen Wert '1.0 + i 0.0'. 'complex zero' ’’’’’’’’’’’’’’’> #on("b")#COMPLEX PROC complex zero #off("b")# ’’’’’’’’’’’’’> Denotierungsprozedur fŪr den komplexen Wert '0.0 + i 0.0'. N #on("b")#REAL PROC imag part (COMPLEX CONST number) #off("b")# ’’’’’’’’’’’’> Liefert den ImaginŁrteil des komplexen Wertes 'number'. ’’’N #on("b")#REAL PROC real part (COMPLEX CONST number) #off("b")# ’’’’’’’’’’’’> Liefert den Real-Teil des komplexen Wertes 'number'. ’’’’’’> #on("b")#REAL OP ABS (COMPLEX CONST x) #off("b")# ’’’’’’’’’ REAL-Betrag von 'x'. ’’’’’’> #on("b")#COMPLEX OP CONJ (COMPLEX CONST number) #off("b")# > Liefert den konjugiert komplexen Wert von 'number'. ’’’’’’’> #on("b")#REAL PROC dphi (COMPLEX CONST x) #off("b")# ’’’’’’. Winkel von 'x' (Polardarstellung). ’’’’’’’’> #on("b")#REAL PROC phi (COMPLEX CONST x) #off("b")# ’’’’’’’> Winkel von 'x' (Polardarstellung) in Radiant. ’’’’’’’’’’’’’> #on("b")#COMPLEX PROC sqrt (COMPLEX CONST x) #off("b")# ’’’. Wurzelfunktion fŪr komplexe Werte. ’’’’’’’’6.1.2 LONGINT ’’’’’’’’’’’’’’’^LONGINT ist ein Datentyp, fŪr den (fast) alle Prozeduren und Operatoren des DatenŻ’’’’’’’’’’’’Ntyps INT implementiert wurden. LONGINT unterscheidet sich von INT dadurch, daū.erheblich grŚūere Werte darstellbar sind. ’’’’NFŪr den Datentyp LONGINT stehen folgende Operationen zur VerfŪgung: ’’’’’’’’’’N- Operatoren : := , = , <> , < , <= ,> , >= , + , - , * , ’’’’. ** , ’’’’’’’’’’N ABS , DECR , DIV , INCR , MOD , SIGN ’’’’’’’’’’.- Eingabe/Ausgabe : get , put ’’’’’N- Math. Prozeduren : abs , int , longint , max , max logint , min , > random , sign , text , zero ’’’LONGINT-Operationen ’’’’’’’’’’'TYPE LONGINT' ’’’’’’’’’’’’’’’N #on("b")#OP := (LONGINT VAR links, LONGINT CONST rechts) : #off("b")# ’’’’’ Zuweisungsoperator ’’’’’’’’N #on("b")#BOOL OP = (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’’’’’’> Vergleichen zweier LONGINTs auf Gleichheit. ’’’’’’’’’’’’’’’N #on("b")#BOOL OP <> (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’’’’’> Vergleichen zweier LONGINTs auf Ungleichheit. ’’’’’’’’’’’’’N #on("b")#BOOL OP < (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’’’’’’. Vergleichen zweier LONGINTs auf kleiner. ’’N #on("b")#BOOL OP <= (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’’’’’> Vergleichen zweier LONGINTs auf kleiner gleich. ’’’’’’’’’’’N #on("b")#BOOL OP > (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’’’’’’. Vergleichen zweier LONGINTs auf grŚūer. ’’’N #on("b")#BOOL OP >= (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’’’’’> Vergleichen zweier LONGINTs auf grŚūer gleich. ’’’’’’’’’’’’> #on("b")#LONGINT OP + (LONGINT CONST argument) #off("b")# ’. Monadischer Operator. Ohne Wirkung. ’’’’’’’N #on("b")#LONGINT OP + (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’’’ Addition zweier LONGINTs. ’> #on("b")#LONGINT OP - (LONGINT CONST argument) #off("b")# ’ Vorzeichenumkehrung. ’’’’’’N #on("b")#LONGINT OP - (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’’’. Subtraktion zweier LONGINTs. ’’’’’’’’’’’’’’N #on("b")#LONGINT OP * (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’’’. Multiplikation von zwei LONGINTs. ’’’’’’’’’N #on("b")#LONGINT OP ** (LONGINT CONST argument, exponent) #off("b")# ’’’’’’> Exponentiation zweier LONGINTs mit positivem Exponenten. ’’. LONGINT OP ** : negative exponent . Der 'exponent' muū >= 0 sein. ’’’’. 0 ** 0 is not defined ’’’’’’’’’’’’N 'argument' und 'exponent' dŪrfen nicht gleich 0 sein. ’’’’’’’’’’’’^ #on("b")#LONGINT OP ** (LONGINT CONST argument, INT CONST exponent)#off("b")# ’’’’’’’’’’’’’> Exponentiation eines LONGINT mit positiven INT Exponenten. . LONGINT OP ** : negative exponent . Der 'exponent' muū >= 0 sein. ’’’’. 0 ** 0 is not defined ’’’’’’’’’’’’N 'argument' und 'exponent' dŪrfen nicht gleich 0 sein. ’’’’’’’’’’’’N #on("b")#LONGINT OP ABS (LONGINT CONST argument) #off("b")# ’’’’’’’’’’’’’’’. Absolutbetrag eines LONGINT. ’’’’’’’’’’’’’’N #on("b")#OP DECR (LONGINT VAR resultat, LONGINT CONST ab) #off("b")# ’’’’’’ resultat := resultat - ab ’N #on("b")#LONGINT OP DIV (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’ Division zweier LONGINTs. ’ Division durch 0 . 'rechts' muū <> 0 sein. ’’’’’’’’’’^ #on("b")#LONGINT OP INCR (LONGINT VAR resultat, LONGINT CONST dazu)#off("b")# ’’’’’’’’’’’’’. resultat := resultat + dazu ’’’’’’’’’’’’’’’N #on("b")#LONGINT OP MOD (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’’’N Modulo-Funktion fŪr LONGINTs. Der Rest einer LONGINT-Division wird ermitŻ’’. text (links) + 'MOD 0' ’’’’’’’’’’’’. 'rechts' muū ungleich null sein. ’’> #on("b")#INT OP SIGN (LONGINT CONST longint) #off("b")# ’’’> Feststellen des Vorzeichens von 'longint'. Liefert: ’’’’’’’. 0 wenn 'longint' = 0, ’’’’’’’’’’’’’. 1 wenn 'longint' > 0, ’’’’’’’’’’’’’. -1 wenn 'longint' < 0. ’’’’’’’’’’’’’> #on("b")#PROC get (LONGINT VAR zahl) #off("b")# ’’’’’’’’’’’. Eingabe eines LONGINTs vom Terminal. ’’’’’’N #on("b")#PROC get (FILE VAR file, LONGINT VAR zahl) #off("b")# ’’’’’’’’’’’’^ Einlesen von 'zahl' aus der sequentiellen Datei 'file'. Die Datei muū mit 'input'’’’’’’’’’’> assoziiert sein (vergl. 'sequential file'). ’’’’’’’’’’’’’’’ Datei zu ’’’’’’’’’’. Leseversuch nach Daateiende ’’’’’’’. Leseversuch auf output-FILE ’’’’’’’> #on("b")#PROC put (LONGINT CONST longint) #off("b")# ’’’’’’^ Ausgabe eines LONGINTs auf dem Bildschirm. Anschlieūend wird ein Leerzeichen’’’’’’’’’’’’’’’N ausgegeben. HardwareabhŁngig sind die Aktionen, wenn eine Ausgabe Ūber die’^ Bildschirmzeilengrenze vorgenommen wird. Meist wird jedoch die Ausgabe auf der’’’’’’’’’’’’’. nŁchsten Zeile fortgesetzt. ’’’’’’’’’’’’’’’N #on("b")#PROC put (FILE VAR file, LONGINT CONST zahl) #off("b")# ’’’’’’’’’’^ Ausgabe von 'zahl' in die sequentielle Datei 'file'. 'file' muū mit 'output' assoziiert’’’’ Datei zu ’’’’’’’’’’. Schreibversuch auf input-FILE ’’’’’N #on("b")#LONGINT PROC abs (LONGINT CONST argument) #off("b")# ’’’’’’’’’’’’’. Absolutbetrag eines LONGINT. ’’’’’’’’’’’’’’> #on("b")#INT PROC int (LONGINT CONST longint) #off("b")# ’’. Konvertierung von LONGINT nach INT. ’’’’’’’ integer overflow ’’. 'longint' ist grŚūer als 'maxint'. > #on("b")#LONGINT PROC longint (INT CONST in’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘•’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į•’_’’’’’’’’’’’’’’’’’’’1–’‡’’’’’’’’’’’’’’’’’’’Į–’Q’’’’’’’’’’’’’’’’’’’!—’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a—’P’’’’’’’’’’’’’’’’’’’’’sind: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į—’’’’’’’’’’’’’’’’’’’’į—’’’’’’’’’’’’’’’’’’’’˜’’’’’’’’’’’’’’’’’’’’!˜’’’’’’’’’’’’’’’’’’’’A˜’’’’’’’’’’’’’’’’’’’’q˜’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘˜’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ᘒM’’’’’’’’’’’’’’’’’’’1™’S’’’’’’’’’’’’’’’’’’’‘™’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±™’’’’’’’’’’’’’’’’’’’’љ’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’š’8’’’’’’’’’’’’’’’’’’’Aš’’’’’’’’’’’’’’’’’’’’aš’/’’’’’’’’’’’’’’’’’’’”š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įš’’’’’’’’’’’’’’’’’’’’ᚒ7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!›’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A›’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a›’T’’’’’’’’’’’’’’’’’’’Į›’N’’’’’’’’’’’’’’’’’’’œ’P’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qœ’M’’’’’’’’’’’’’’’’’’’Įœ’M’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’q’L’’’’’’’’’’’’’’’’’’’Į’S’’’’’’’’’’’’’’’’’’’!ž’L’’’’’’’’’’’’’’’’’’’’’wird. ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qž’Q’’’’’’’’’’’’’’’’’’’ў’J’’’’’’’’’’’’’’’’’’’!Ÿ’T’’’’’’’’’’’’’’’’’’’Ÿ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’џ’P’’’’’’’’’’’’’’’’’’’1 ’N’’’’’’’’’’’’’’’’’’’ ’Q’’’’’’’’’’’’’’’’’’’į ’T’’’’’’’’’’’’’’’’’’’A”’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a”’"’’’’’’’’’’’’’’’’’’’‘”’N’’’’’’’’’’’’’’’’’’’į”’V’’’’’’’’’’’’’’’’’’’A¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a¢’M’’’’’’’’’’’’’’’’’’’±¢’Q’’’’’’’’’’’’’’’’’’’£’L’’’’’’’’’’’’’’’’’’’a£’N’’’’’’’’’’’’’’’’’’’±£’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń£’*’’’’’’’’’’’’’’’’’’’!¤’N’’’’’’’’’’’’’’’’’’’q¤’K’’’’’’’’’’’’’’’’’’’Į¤’R’’’’’’’’’’’’’’’’’’’!„’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q„’N’’’’’’’’’’’’’’’’’’’Į„’P’’’’’’’’’’’’’’’’’’’!¦’N’’’’’’’’’’’’’’’’’’’q¦’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘¦’U’’’’’’’’’’’’’’’’’’’ń¦’T’’’’’’’’’’’’’’’’’’’Q§’H’’’’’’’’’’’’’’’’’’’”§’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į§’M’’’’’’’’’’’’’’’’’’’1Ø’O’’’’’’’’’’’’’’’’’’’‘Ø’R’’’’’’’’’’’’’’’’’’’ńØ’.’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!©’’’’’’’’’’’’’’’’’’’’A©’I’’’’’’’’’’’’’’’’’’’‘©’F’’’’’’’’’’’’’’’’’’’į©’H’’’’’’’’’’’’’’’’’’’1Ŗ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŖ’K’’’’’’’’’’’’’’’’’’’±Ŗ’K’’’’’’’’’’’’’’’’’’’«’Q’’’’’’’’’’’’’’’’’’’a«’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±«’M’’’’’’’’’’’’’’’’’’’¬’Q’’’’’’’’’’’’’’’’’’’a¬’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘¬’J’’’’’’’’’’’’’’’’’’’ᬒK’’’’’’’’’’’’’’’’’’’1­’T’’’’’’’’’’’’’’’’’’’‘­’P’’’’’’’’’’’’’’’’’’’’’rung. ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń­’’’’’’’’’’’’’’’’’’’’®’]’’’’’’’’’’’’’’’’’’’q®’Q’’’’’’’’’’’’’’’’’’’Ń®’O’’’’’’’’’’’’’’’’’’’1Æ’Q’’’’’’’’’’’’’’’’’’’‘Æ’L’’’’’’’’’’’’’’’’’’’ᯒL’’’’’’’’’’’’’’’’’’’1°’L’’’’’’’’’’’’’’’’’’’°’E’’’’’’’’’’’’’’’’’’’Ѱ’R’’’’’’’’’’’’’’’’’’’1±’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a±’P’’’’’’’’’’’’’’’’’’’Į±’Q’’’’’’’’’’’’’’’’’’’!²’Q’’’’’’’’’’’’’’’’’’’²’Q’’’’’’’’’’’’’’’’’’’į²’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1³’S’’’’’’’’’’’’’’’’’’’‘³’J’’’’’’’’’’’’’’’’’’’į³’R’’’’’’’’’’’’’’’’’’’A“’S’’’’’’’’’’’’’’’’’’’”“’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į“’’’’’’’’’’’’’’’’’’’’µ’N’’’’’’’’’’’’’’’’’’’Qµ’c’’’’’’’’’’’’’’’’’’’Įµ’P’’’’’’’’’’’’’’’’’’’!¶’Q’’’’’’’’’’’’’’’’’’’¶’L’’’’’’’’’’’’’’’’’’’Ѷ’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’·’Q’’’’’’’’’’’’’’’’’’’q·’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”·’K’’’’’’’’’’’’’’’’’’’ń·’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Aø’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aø’h’’’’’’’’’’’’’’’’’’’Ńø’N’’’’’’’’’’’’’’’’’’’!¹’K’’’’’’’’’’’’’’’’’’’q¹’T’’’’’’’’’’’’’’’’’’’ѹ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń¹’`’’’’’’’’’’’’’’’’’’’aŗ’P’’’’’’’’’’’’’’’’’’’Įŗ’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’»’e’’’’’’’’’’’’’’’’’’’q»’L’’’’’’’’’’’’’’’’’’’Į»’,’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń»’P’’’’’’’’’’’’’’’’’’’Q¼’S’’’’’’’’’’’’’’’’’’’±¼’Q’’’’’’’’’’’’’’’’’’’½’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A½’d’’’’’’’’’’’’’’’’’’’±½’a’’’’’’’’’’’’’’’’’’’!¾’P’’’’’’’’’’’’’’’’’’’¾’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¾’l’’’’’’’’’’’’’’’’’’’æ’U’’’’’’’’’’’’’’’’’’’qæ’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įæ’b’’’’’’’’’’’’’’’’’’’1Ą’J’’’’’’’’’’’’’’’’’’’Ą’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įĄ’b’’’’’’’’’’’’’’’’’’’QĮ’X’’’’’’’’’’’’’’’’’’’±Į’I’’’’’’’’’’’’’’’’’’’Ā’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’!Ā’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QĀ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ā’O’’’’’’’’’’’’’’’’’’’ńĀ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ć’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’AĆ’R’’’’’’’’’’’’’’’’’’’”Ć’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įĆ’M’’’’’’’’’’’’’’’’’’’1Ä’’’’’’’’’’’’’’’’’’’’QÄ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qÄ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮÄ’N’’’’’’’’’’’’’’’’’’’Å’M’’’’’’’’’’’’’’’’’’’’’ beachten: ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aÅ’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Å’N’’’’’’’’’’’’’’’’’’’ńÅ’Q’’’’’’’’’’’’’’’’’’’QĘ’b’’’’’’’’’’’’’’’’’’’ĮĘ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įĘ’M’’’’’’’’’’’’’’’’’’’1Ē’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’Ē’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ē’O’’’’’’’’’’’’’’’’’’’Č’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aČ’)’’’’’’’’’’’’’’’’’’’’’#table# ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Č’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮČ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńČ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!É’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QÉ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’É’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”É’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃÉ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ź’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ź’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŹ’’’’’’’’’’’’’’’’’’’’qŹ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ź’V’’’’’’’’’’’’’’’’’’’ńŹ’!’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ė’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AĖ’S’’’’’’’’’’’’’’’’’’’”Ė’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĖ’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĖ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AĢ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ģ’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ģ’!’’’’’’’’’’’’’’’’’’’įĢ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ķ’’’’’’’’’’’’’’’’’’’’1Ķ’1’’’’’’’’’’’’’’’’’’’qĶ’9’’’’’’’’’’’’’’’’’’’±Ķ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĶ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’t) #off("b")# ’’. Konvertierung von 'int' nach LONGINT. ’’’’’> #on("b")#LONGINT PROC longint (TEXT CONST text) #off("b")# . Konvertierung von 'text' nach LONGINT. ’’’’N #on("b")#LONGINT PROC max (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’. Liefert das Maximum zweier LONGINTs. ’’’’’’> #on("b")#LONGINT PROC max longint #off("b")# ’’’’’’’’’’’’’’. Liefert grŚūten LONGINT Wert. ’’’’’’’’’’’’’N #on("b")#LONGINT PROC min (LONGINT CONST links, rechts) #off("b")# ’’’’’’’’. Liefert das Minimum zweier LONGINTs. ’’’’’’^ #on("b")#LONGINT PROC random (LONGINT CONST lower bound, upper bound)#off("b")# ’’’’’’’’’’’N Pseudo-Zufallszahlen-Generator im Intervall 'lower bound' und 'upper bound'N einschlieūlich. Es handelt sich hier um den 'LONGINT Random Generator'. ’’’> #on("b")#INT PROC sign (LONGINT CONST longint) #off("b")# ’> Feststellen des Vorzeichens von 'longint'. Liefert: ’’’’’’’. 0 wenn 'longint' = 0, ’’’’’’’’’’’’’. 1 wenn 'longint' > 0, ’’’’’’’’’’’’’. -1 wenn 'longint' < 0. ’’’’’’’’’’’’’> #on("b")#TEXT PROC text (LONGINT CONST longint) #off("b")# . Konvertierung von 'longint' nach TEXT. ’’’’^ #on("b")#TEXT PROC text (LONGINT CONST longint, INT CONST laenge) #off("b")# ’’’’’’’’’’’’’’N Konvertierung von 'longint' nach TEXT. Die Anzahl der Zeichen soll 'laenge' betragen. FŪr ’’’’’’’’’’’’’. LENGTH (text (longint)) < laenge ’’^ werden die Zeichen rechtsbŪndig in einen Text mit der LŁnge 'laenge' eingetraŻ’’’’’’’’’’’’’^ gen. Ist der daraus entstehende TEXT kleiner als 'laenge', werden die an 'laenge'’’’’’’’’’’> fehlenden Zeichen im TEXT mit Leerzeichen aufgefŪllt. FŪr ’. LENGTH (text (longint)) > laenge ’’’^ wird ein Text mit der LŁnge 'laenge' geliefert, der mit '*'-Zeichen gefŪllt ist. ’’’’’’’’’’. #on("b")#LONGINT PROC zero #off("b")# ’’’’’ Liefert LONGINT Wert Null. 6.1.3 VECTOR NDer Datentyp VECTOR erlaubt Operationen auf Vektoren aus Elementen vom Typ’’’’NREAL. Im Gegensatz zur Struktur 'ROW m REAL' muū die Anzahl der Elemente nicht^zur Ųbersetzungszeit deklariert werden, sondern kann zur Laufzeit festgelegt werden.’’’’’’’’’’NSomit kann eine zur Ųbersetzungszeit unbekannte Anzahl von REALs bearbeitet’’’^werden, wobei nur soviel Speicherplatz wie nŚtig verwendet wird. Die maximale GrŚūe’’’’’’’’’’’.eines VECTOR betrŁgt 4000 Elemente. ’’’’’’’’’’^Der in den Operationen ':=', 'idn' und 'vector' benutzte Datentyp INITVECTOR wird’’’’’’’’’’’’’^nur intern gehalten. Er dient der Speicherplatzersparnis bei der Initialisierung. ’’’’’’’’’’’’>- Operatoren : := , = , <> , + , - , * , / ’’’. LENGTH , SUB ’’.- Eingabe/Ausgabe : get , put ’’’’’N- Besondere Vector- : length , nilvector , norm , vector , replace ’’ Operationen N #on("b")#OP := (VECTOR VAR ziel, VECTOR CONST quelle) #off("b")# ’’’’’’’’’’. Zuweisung. Nach der Zuweisung gilt auch ’’’. length (quelle) = length (ziel) ’’’^ d.h. der linke Operand besitzt nach der Zuweisung genauso viele Elemente wie’’’’’’’’’’’’’’’^ 'quelle', unabhŁngig davon, ob 'ziel' vor der Zuweisung mehr oder weniger EleŻ’’’’’’’’’’’’’. mente als 'quelle' besaū. Beispiel: ’’’’’’’. VECTOR VAR y :: vector (10, 1.0), ’. z :: vector (15, 2.0); ’ ... ’’’’’’’’’’> y := z; (* length (y) liefert nun 15 ! *) ’’’’’’’’’N #on("b")#OP := (VECTOR VAR ziel, INITVECTOR CONST quelle) #off("b")# ’’’’’’> Dient zur Initialisierung eines VECTORs. Beispiel: ’’’’’’’’. VECTOR VAR x :: vector (17); ’’’’’’N 'vector' erzeugt ein Objekt vom Datentyp INITVECTOR. Dieses Objekt braucht’^ nicht soviel Speicherplatz wie ein VECTOR-Objekt. Dadurch wird vermieden, daū’’’’’’’’’’’’’’^ nach erfolgter Zuweisung nicht ein durch 'vector' erzeugtes Objekt auf dem Heap’’’’’’’’’’’’. unnŚtig Speicherplatz verbraucht. ’’’’’’’’’> #on("b")#BOOL OP = (VECTOR CONST a, b) #off("b")# ’’’’’’’’’N Vergleich zweier Vektoren. Der Operator liefert FALSE, wenn die Anzahl der’N Elemente von 'a' und 'b' ungleich ist oder wenn zwei Elemente mit gleichem’. Index ungleich sind. Beispiel: ’’’’’’’’’’’’. VECTOR VAR x :: vector (10, 1.0), ’. y :: vector (15, 2.0), ’. z :: vector (10, 1.0); ’. ... x = y ... (* FALSE *) ’. ... x = z ... (* TRUE *) ’> #on("b")#BOOL OP <> (VECTOR CONST a, b) #off("b")# ’’’’’’’’> Vergleich zweier Vektoren auf Ungleichheit (NOT (a = b)). ’> #on("b")#VECTOR OP + (VECTOR CONST a) #off("b")# ’’’’’’’’’’> Monadisches '+' fŪr VECTOR. Keine Auswirkung. ’’’’’’’’’’’’’> #on("b")#VECTOR OP + (VECTOR CONST a, b) #off("b")# ’’’’’’’> Elementweise Addition der Vektoren 'a' und 'b'. Beispiel: ’> VECTOR VAR x, (* 'x' hat undefinierte LŁnge *) ’’’’. a :: vector (10, 1.0), ’. b :: vector (10, 2.0); ’ ... ’’’’’’’’’N x := a + b; (* 'x' hat nun 10 Elemente mit Werten'3.0'’’’’’’’’’’’’’ *) . VECTOR OP + : LENGTH a <> LENGTH b N 'a' und 'b' haben nicht die gleiche Anzahl von Elementen. ’’’’’’’’’> #on("b")#VECTOR OP - (VECTOR CONST a) #off("b")# ’’’’’’’’’’ Monadisches '-'. ’’’’’’’’’’> #on("b")#VECTOR OP - (VECTOR CONST a, b) #off("b")# ’’’’’’’> Elementweise Subtraktion der Vektoren 'a' und 'b'. ’’’’’’’’. VECTOR OP - : LENGTH a <> LENGTH b N 'a' und 'b' haben nicht die gleiche Anzahl von Elementen. ’’’’’’’’’> #on("b")#REAL OP * (VECTOR CONST a, b) #off("b")# ’’’’’’’’’^ Skalarprodukt zweier Vektoren. Liefert die Summe der elementweisen MultiplikaŻ’’’’’’’’’’’’’^ tion der Vektoren 'a' und 'b'. Beachte eventuelle Rundungsfehler! Beispiel: ’’’’’’’’’’’’’’’ REAL VAR a; ’’’’’’’. VECTOR VAR b :: vector (10, 2.0), ’. c :: vector (10, 2.0); ’ ... ’’’’’’’’’. a := b * c; (* 40.0 *) ’’’’’’’’’’’’. REAL OP * : LENGTH a <> LENGTH b ’’N 'a' und 'b' haben nicht die gleiche Anzahl von Elementen. ’’’’’’’’’N #on("b")#VECTOR OP * (VECTOR CONST a, REAL CONST s) #off("b")# ’’’’’’’’’’’’> Multiplikation des Vektors 'a' mit dem Skalar 's'. ’’’’’’’’N #on("b")#VECTOR OP * (REAL CONST s, VECTOR CONST a) #off("b")# ’’’’’’’’’’’’> Multiplikation des Skalars 's' mit dem Vektor 'a'. ’’’’’’’’N #on("b")#VECTOR OP / (VECTOR CONST a, REAL CONST s) #off("b")# ’’’’’’’’’’’’> Division des Vektors 'a' durch den Skalar 's'. Beispiel: ’’> VECTOR VAR a, (* 'a' hat undefinierte Laenge *) ’’’. b :: vector (10, 4.0); ’ ... ’’’’’’’’’’ a := b / 2.0; ’’’’’> (* 'a' hat nun 10 Elemente mit Werten '2.0' *) ’’’’> #on("b")#INT OP LENGTH (VECTOR CONST a) #off("b")# ’’’’’’’’. Liefert die Anzahl der Elemente von 'a'. ’’N #on("b")#REAL OP SUB (VECTOR CONST v, INT CONST i) #off("b")# ’’’’’’’’’’’’’. Liefert das 'i'-te Element von 'v'. ’’’’’’’. OP SUB : subscript overflow ’’’’’’’N Der Index 'i' liegt auūerhalb des Vektors (i > LENGTH v). ’’’’’’’’’. OP SUB : subscript underflow ’’’’’’> Der Index 'i' liegt auūerhalb des Vektors (i < 1). > #on("b")#PROC get (VECTOR VAR a, INT CONST l) #off("b")# ’’^ Einlesen der Elemente von 'a' vom Terminal, wobei 'l' die Anzahl der Elemente’’’’’’’’’’’’’’. PROC get : size <= 0 ’’’’’’’’’’’’’’> Die angeforderte Elementanzahl 'l' muū > 0 sein. ’’> #on("b")#PR’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AĪ’O’’’’’’’’’’’’’’’’’’’”Ī’L’’’’’’’’’’’’’’’’’’’ńĪ’T’’’’’’’’’’’’’’’’’’’QĻ’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ļ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĻ’’’’’’’’’’’’’’’’’’’’Š’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŠ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Š’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įŠ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ń’’’’’’’’’’’’’’’’’’’’QŃ’"’’’’’’’’’’’’’’’’’’’Ń’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŃ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’T’’’’’’’’’’’’’’’’’’’qŅ’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ņ’M’’’’’’’’’’’’’’’’’’’Ó’I’’’’’’’’’’’’’’’’’’’’’_’’’’’’’’’’’’’’’’’’’’QÓ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ó’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įÓ’M’’’’’’’’’’’’’’’’’’’1Ō’<’’’’’’’’’’’’’’’’’’’qŌ’!’’’’’’’’’’’’’’’’’’’”Ō’3’’’’’’’’’’’’’’’’’’’įŌ’’’’’’’’’’’’’’’’’’’’Õ’+’’’’’’’’’’’’’’’’’’’1Õ’’’’’’’’’’’’’’’’’’’’QÕ’’’’’’’’’’’’’’’’’’’’qÕ’’’’’’’’’’’’’’’’’’’’’’ a kopie ’’’’’’’’’’‘Õ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ REP ’’’’’’’’’’’’’’’’”Õ’’’’’’’’’’’’’’’’’’’’ĮÕ’(’’’’’’’’’’’’’’’’’’’ńÕ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ö’’’’’’’’’’’’’’’’’’’’AÖ’%’’’’’’’’’’’’’’’’’’’qÖ’’’’’’’’’’’’’’’’’’’’‘Ö’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Ö’'’’’’’’’’’’’’’’’’’’’įÖ’-’’’’’’’’’’’’’’’’’’’×’@’’’’’’’’’’’’’’’’’’’’’ line. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a×’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±×’R’’’’’’’’’’’’’’’’’’’Ų’Q’’’’’’’’’’’’’’’’’’’qŲ’Q’’’’’’’’’’’’’’’’’’’ŃŲ’S’’’’’’’’’’’’’’’’’’’1Ł’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŁ’L’’’’’’’’’’’’’’’’’’’±Ł’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ś’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QŚ’’’’’’’’’’’’’’’’’’’’qŚ’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ś’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńŚ’E’’’’’’’’’’’’’’’’’’’AŪ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aŪ’O’’’’’’’’’’’’’’’’’’’ĮŪ’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ü’O’’’’’’’’’’’’’’’’’’’qÜ’K’’’’’’’’’’’’’’’’’’’ĮÜ’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńÜ’M’’’’’’’’’’’’’’’’’’’AŻ’<’’’’’’’’’’’’’’’’’’’Ż’!’’’’’’’’’’’’’’’’’’’±Ż’3’’’’’’’’’’’’’’’’’’’ńŻ’’’’’’’’’’’’’’’’’’’’Ž’+’’’’’’’’’’’’’’’’’’’AŽ’’’’’’’’’’’’’’’’’’’’aŽ’’’’’’’’’’’’’’’’’’’’Ž’’’’’’’’’’’’’’’’’’’’’’ a kopie ’’’’’’’’’’”Ž’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ REP ’’’’’’’’’’’’’’’’±Ž’I’’’’’’’’’’’’’’’’’’’ß’"’’’’’’’’’’’’’’’’’’’1ß’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aß’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ß’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įß’M’’’’’’’’’’’’’’’’’’’1ą’<’’’’’’’’’’’’’’’’’’’qą’ ’’’’’’’’’’’’’’’’’’’”ą’3’’’’’’’’’’’’’’’’’’’įą’’’’’’’’’’’’’’’’’’’’į’+’’’’’’’’’’’’’’’’’’’1į’’’’’’’’’’’’’’’’’’’’Qį’’’’’’’’’’’’’’’’’’’’qį’’’’’’’’’’’’’’’’’’’’’’ a kopie ’’’’’’’’’’‘į’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ REP ’’’’’’’’’’’’’’’’±į’<’’’’’’’’’’’’’’’’’’’ńį’"’’’’’’’’’’’’’’’’’’’!ā’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qā’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ā’L’’’’’’’’’’’’’’’’’’’ńā’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ć’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ć’’’’’’’’’’’’’’’’’’’’”ć’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńć’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ä’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aä’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ä’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’å’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aå’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aå’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±å’L’’’’’’’’’’’’’’’’’’’ę’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aę’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ę’’’’’’’’’’’’’’’’’’’’±ę’5’’’’’’’’’’’’’’’’’’’ńę’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ē’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aē’Q’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įē’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’č’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1č’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’č’O’’’’’’’’’’’’’’’’’’’įč’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’é’N’’’’’’’’’’’’’’’’’’’Qé’O’’’’’’’’’’’’’’’’’’’±é’V’’’’’’’’’’’’’’’’’’’ź’Y’’’’’’’’’’’’’’’’’’’qź’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’N’’’’’’’’’’’’’N#headandbottom("1","EUMEL-Benutzerhandbuch","TEIL 1 : Einleitung","1")# ’’’’’’>#pagenr("%",1)##setcount(1)##block##pageblock# ’’’’’’’’’’’’’’’.#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’#center#TEIL 1 : Einleitung ’’N#center#____________________________________________________________ ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’1 - % #right#GMD ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #rigth#1 - % ’’’’’’’’’’’’’TEIL 1 : Einleitung ’’’’’’’’’’1.1 Allgemeines Ūber EUMEL ’’^Dieses Buch bietet eine Ųbersicht Ūber die Standardprozeduren des Betriebssystem’’’’’’’’’’’’’’^EUMEL. Es bietet damit sowohl Hilfestellung fŪr die Benutzung der standardmŁūig’’’’’’’’’’’’’’’Nvorhandenen Kommandos als auch fŪr die Programmierung, also die Erweiterung’’’Ndieses Kommandovorrats. Es ist jedoch kein Lehrbuch der Programmierung! ’’’’’’NIn den ersten drei Kapiteln dieses Programmierhandbuches werden einige GrundŻ’Nbegriffe des Systems, die grundlegende Programmiersprache (ELAN) und der’’’’’’EUMEL-Editor erlŁutert. ’’’’’’^Das vierte Kapitel bietet eine Ųbersicht Ūber diejenigen Prozeduren und Operatoren,’’’’’’’’’’’Ndie eher der 'Job-Control-Language' zugerechnet werden kŚnnen, also hŁufig im’.Kommandodialog benutzt werden. ’’’’’’’’’’’’’’’^Im fŪnften Teil sind diejenigen Operationen beschrieben, die meistenteils fŪr die’’’’’’’’’’’’’^Programmierung benutzt werden. (Compiler, Operationen auf den elementaren DatenŻ’’’’’’’’’’’’’’.typen, Dateien, Ein- und Ausgabe usw.). ’’’’’’^Diese Trennung ist jedoch recht willkŪrlich, es ist ja gerade eine der wichtigen EigenŻ’’’’’’’Nschaften dieses Betriebssystems, daū es keine Trennung zwischen der KommandoŻ’Nsprache des Betriebssystems und Programmmiersprache fŪr das System gibt. JedesNSystemkommando ist Aufruf einer ELAN Prozedur, jede neue Prozedur stellt eine’>Erweiterung des Kommandovorrats des Systems dar. ’’’’’’’’’’’’’^Aus GrŪnden der Ųbersichtlichkeit der Zusammenstellung ist dieses Buch nicht frei’’’’’’’’’’’’’von VorwŁrtsverweisen! ’’’’’’’.1.2 Struktur des Betriebssystems EUMEL ’’’’’NGrundlegend fŪr das VerstŁndnis des Betriebssystems EUMEL ist der Begriff der’n#on("b")#Task#off("b")#. Eine Task kann als thOC put (VECTOR CONST v) #off("b")# ’’’’’’’’’’’’’> Ausgabe der Werte der Elemente von 'v' auf dem Terminal. ’’> #on("b")#INT PROC length (VECTOR CONST a) #off("b")# ’’’’’’> Liefert die Anzahl der Elemente von 'a'. Beispiel: ’’’’’’’’. VECTOR VAR a :: vector (10, 1.0), ’. b :: vector (15, 2.0); ’ ... ’’’’’’’’’’. ... length (a) ... (* 10 *) ’’’’’’. ... length (b) ... (* 15 *) ’’’’’’> #on("b")#INITVECTOR PROC nilvector #off("b")# ’’’’’’’’’’’’’N Erzeugen eines Vektors mit einem Element mit dem Wert '0.0'. ’’’’’’’’’’’’’’> #on("b")#REAL PROC norm (VECTOR CONST v) #off("b")# ’’’’’’’N Euklidische Norm (Wurzel aus der Summe der Quadrate der Elemente). ’’’’’’’’N #on("b")#PROC replace (VECTOR VAR v, INT CONST i, REAL CONST r)#off("b")# ’N Zuweisung des i-ten Elementes von 'v' mit dem Wert von 'r'. Beispiel: ’’’’’. VECTOR VAR v :: ...; ’’’’’’’’’’’’’’ ... ’’’’’’’’’’’. replace (v, 13, 3.14); ’’’’’’’’’’’’N (* Das 13. Element von 'v' bekommt den Wert '3.14' *) ’’’’’’’’’’’’’. PROC replace : subscript overflow ’N Der Index 'i' liegt auūerhalb des Vektors (i > LENGTH v). ’’’’’’’’’. PROC replace : subscript underflow > Der Index 'i' liegt auūerhalb des Vektors (i < 1). > #on("b")#INITVECTOR PROC vector (INT CONST l) #off("b")# ’’^ Erzeugen eines Vektors mit 'l' Elementen. Ein INITVECTOR-Objekt benŚtigt nicht’’’’’’’’’’’’’N soviel Speicherplatz wie ein VECTOR-Objekt. Die Elemente werden mit dem’’’’ Wert '0.0' initialisiert. ’. PROC vector : size <= 0 ’’’’’’’’’’’> Die angeforderte Elementanzahl 'l' muū > 0 sein. ’’N #on("b")#INITVECTOR PROC vector (INT CONST l, REAL CONST value)#off("b")# ’^ Erzeugen eines Vektors mit 'l' Elementen. Ein INITVECTOR-Objekt benŚtigt nicht’’’’’’’’’’’’’N soviel Speicherplatz wie ein VECTOR-Objekt. Die Elemente werden mit dem’’’’. Wert 'value' initialisiert. Beispiel: ’’’’’> VECTOR VAR v := vector (17, 3.14159); ’’’’’’’’’’’’’> (* 'v' hat 17 Elemente mit den Wert '3.14159' *) ’’. PROC vector : size <= 0 ’’’’’’’’’’’> Die angeforderte Elementanzahl 'l' muū > 0 sein. ’’NDer Datentyp MATRIX erlaubt Operationen auf m x n Matrizen. Im Gegensatz zur’’NStruktur 'ROW m ROW n REAL' muū die Anzahl der Elemente nicht zur ŲbersetŻ’’’’^zungszeit deklariert werden, sondern kann zur Laufzeit festgelegt werden. Somit kann’’’’’’’’’’Neine zur Ųbersetzungszeit unbekannte Anzahl von REALs bearbeitet werden, wobei^nur soviel Speicherplatz wie nŚtig verwendet wird. Die maximale GrŚūe einer MATRIX’’’’’’’’’’’’betrŁgt 4000 Elemente. ’’’’’’’^Der in den Operationen ':=', 'idn' und 'matrix' benutzte Datentyp INITMATRIX wird’’’’’’’’’’’’’^nur intern gehalten. Er dient der Speicherplatzersparnis bei der Initialisierung. ’’’’’’’’’’’’>- Operatoren : := , = , <> , + , - , * ’’’’’’’N COLUMNS , DET , INV , ROWS , TRANSP , ’’’’’’’’’.- Eingabe/Ausgabe : get , put ’’’’’N- Besondere Matrix- : column , idn , matrix , row , sub ’’’’’’’’’’’’’. Operationen transp , ’’’’’’N replace column , replace element , ’’’’’’’’’’’’. replace row ’’’> #on("b")#OP := (MATRIX VAR l, MATRIX CONST r) #off("b")# ’’N Zuweisung von 'r' auf 'l'. Die MATRIX 'l' bekommt u.U. eine neue Anzahl von Elementen. Beispiel: ’’’’’’> MATRIX VAR a :: matrix (3, 4, 0.0), ’’’’’’’’’’’’’’’> b :: matrix (5, 5, 3.0); ’’’’’’’’’’’’’’’ ... > a := b; (* 'a' hat jetzt 5 x 5 Elemente *) ’’’’’’’’N #on("b")#OP := (MATRIX VAR l, INITMATRIX CONST r) #off("b")# ’’’’’’’’’’’’’’> Dient zur Initialisierung einer Matrix. Beispiel: ’’’’’’’’’. MATRIX VAR x :: matrix (17, 4); ’’’N 'matrix' erzeugt ein Objekt vom Datentyp INITMATRIX. Dieses Objekt braucht’^ nicht soviel Speicherplatz wie ein MATRIX-Objekt. Dadurch wird vermieden, daū’’’’’’’’’’’’’’^ nach erfolgter Zuweisung nicht ein durch 'matrix' erzeugtes Objekt auf dem Heap’’’’’’’’’’’’. unnŚtig Speicherplatz verbraucht. ’’’’’’’’’> #on("b")#BOOL OP = (MATRIX CONST l, r) #off("b")# ’’’’’’’’’N Vergleich zweier Matrizen. Der Operator '=' liefert FALSE, wenn die Anzahl’^ Spalten oder Reihen der Matrizen 'l' und 'r' ungleich ist und wenn mindestens ein’’’’’’’’’’^ Element mit gleichen Indizes der zwei Matrizen ungleiche Werte haben. Beispiel: ’’’’’’’’’’’. MATRIX VAR a :: matrix (3, 3), ’’’’> b :: matrix (3, 3, 1.0), ’’’’’’’’’’’’’’’. c :: matrix (4, 4); ’’’’. ... a = b ... ’’’’’’’’’’’’’’’> (* FALSE wegen ungleicher Werte *) ’’’’’’’’’’’’’’. ... a = c ... ’’’’’’’’’’’’’’’> (* FALSE wegen ungleicher Groesse *) ’’’’’’’’’’’’’’. ... b = c ... ’’’’’’’’’’’’’’’> (* FALSE wegen ungleicher Groesse *) ’’’’’’’’’’’’’’> #on("b")#BOOL OP <> (MATRIX CONST l, r) #off("b")# ’’’’’’’’> Vergleich der Matrizen 'l' und 'r' auf Ungleichheit. ’’’’’’> #on("b")#MATRIX OP + (MATRIX CONST m) #off("b")# ’’’’’’’’’’. Monadisches '+'. Keine Auswirkungen. ’’’’’’> #on("b")#MATRIX OP + (MATRIX CONST l, r) #off("b")# ’’’’’’’^ Addition zweier Matrizen. Die Anzahl der Reihen und der Spalten muū gleich sein.’’’’’’’’’’’> MATRIX VAR a :: matrix (3, 43, 1.0), ’’’’’’’’’’’’’’> b :: matrix (3, 43, 2.0), ’’’’’’’’’’’’’’. summe; ’’’’’’’’’’’’. summe := a + b; ’’’’’’’’> (* Alle Elemente haben den Wert '3.0' *) ’’’’’’’’’’> MATRIX OP + : COLUMNS l <> COLUMNS r ’’’’’’’’’’’’’’N Die Anzahl der Spalten von 'l' und 'r' sind nicht gleich. ’’’’’’’’’. MATRIX OP + : ROWS l <> ROWS r ’’’’N Die Anzahl der Zeilen von 'l' und 'r' sind nicht gleich. ’’’’’’’’’’> #on("b")#MATRIX OP - (MATRIX CONST m) #off("b")# ’’’’’’’’’’. Monadisches Minus. Beispiel: ’’’’’’’’’’’’’’> MATRIX VAR a :: matrix (3, 4, 10.0) ’’’’’’’’’’’’’’’N a := - a; (* Alle Elemente haben den Wert '- 10.0' *) ’’’’’’’’’’’’’> #on("b")#MATRIX OP - (MATRIX CONST l, r) #off("b")# ’’’’’’’^ Subtraktion zweier Matrizen. Die Anzahl der Reihen und Spalten muū gleich sein. ’’’’’’’’’’’> MATRIX OP - : COLUMNS l <> COLUMNS r ’’’’’’’’’’’’’’N Die Anzahl der Spalten von 'l' und 'r' sind nicht gleich. ’’’’’’’’’. MATRIX OP - : ROWS l <> ROWS r ’’’’N Die Anzahl der Zeilen von 'l' und 'r' sind nicht gleich. ’’’’’’’’’’N #on("b")#MATRIX OP * (REAL CONST r, MATRIX CONST m) #off("b")# ’’’’’’’’’’’’N Multiplikation einer Matrix 'm' mit einem Skalar 'r'. Beispiel: ’’’’’’’’’’’> MATRIX VAR a :: matrix (3, 4, 2.0); ’’’’’’’’’’’’’’’ ... ’’’’’’’’’’N a := 3 * a; (* Alle Elemente haben den Wert '6.0' *) ’’’’’’’’’’’’’’N #on("b")#MATRIX OP * (MATRIX CONST m, REAL CONST r) #off("b")# ’’’’’’’’’’’’> Multiplikation einer Matrix 'm' mit einem Skalar 'r'. ’’’’’> #on("b")#MATRIX OP * (MATRIX CONST l, r) #off("b")# ’’’’’’’^ Multiplikation zweier Matrizen. Die Anzahl der Spalten von 'l' und die Anzahl der’’’’’’’’’’> Zeilen von 'r' mŪssen gleich sein. Beispiel: ’’’’’’’’’’’’’’> MATRIX VAR a :: matrix (3, 4, 2.0), ’’’’’’’’’’’’’’’> b :: matrix (4, 2, 3.0), ’’’’’’’’’’’’’’’. produkt; ’’’’’’’’’’’’’’’ proeoretisch unendliche Wiederholung eines SystemproŻ’’’’’’’’’’’’’’gramms der Form: ’’’’’’’’’’’’’. 'nimm Kommando entgegen' ’’’’’’’’’’’’. 'verarbeite Kommando' ’’’’’’’’’’’’’’’Naufgefaūt werden. Einige Tasks existieren bereits als Grundstock des Systems,’Nweitere werden von Benutzern des Systems erschaffen und dienen als persŚnliche^Arbeitsumgebung fŪr den 'EigentŪmer'. Eine Task kann als benutzereigener, unabŻ’’’’’’’’’’’’’’’NhŁngiger Computer im Computer betrachtet werden, denn sie kann Kommandos’’’’’’Nentgegennehmen und ausfŪhren und Daten verwalten und aufbewahren. ’’’’’’’’’’’’NEine Task kann neu erzeugt werden, an einen Bildschirm gekoppelt werden und’’’beendet werden. ’’’’’’’’’’’’’’^Das Tasksystem ist in einer baumartigen Struktur angeordnet. Auūer der Wurzel 'UR'’’’’’’’’’’’’Nhat jede Task einen VorgŁnger ('Vater-Task') und mŚglicherweise Nachfolger’’’’('Sohn-Tasks'). ’’’’’’’’’’’’’’.#on("u")##ib#Task-Organisation#ie##off("u")# ’ SUPERVISOR ’’’’’’’’’’’’ - ’’’’’’’’’’’’’’’ SYSUR ’’’’’’’’’’’’’ ARCHIVE ’’’’’’’ configurator ’’ OPERATOR ’’’’’’ shutup ’’’’’’’’ PUBLIC ’’’’’’’’’’’’ Benutzertask1 ’ Benutzertask2 ’. Benutzertask3 ’’’’’’’’’’’’’ ..... ’’’’’’’NJeder Benutzer arbeitet innerhalb eines EUMEL-Systems, indem er eine Task an’’>sein Terminal koppelt und dort Programme aufruft. ’’’’’’’’’’’’^Dateien sind grundsŁtzlich Eigentum einer Task. Es ist grundlegend fŪr das VerstŁndŻ’’’’’’’’’’Nnis des Betriebssystems EUMEL, die Beziehung zwischen Tasks und Dateien zu’’’’^Eine Task ist ein Prozeū, der gegebenenfalls Dateien besitzt. Dateien kŚnnen nur in’’’’’’’’’’’^einer Task existieren. Um eine Datei einer anderen Task zur VerfŪgung zu stellen,’’’’’’’’’’’’’^wird eine Kopie der Datei an die andere Task geschickt, die sendende Task ist daŻ’’’’’’’’’’’’’Nnach EigentŪmer des 'Originals', die empfangende Task EigentŪmer der 'Kopie'. ^Soll eine Hierarchie von Dateien aufgebaut werden, so ist sie Ūber eine Hierarchie’’’’’’’’’’’’^von Tasks zu realisieren, da in einer Task alle Dateien gleichberechtigt sind. ’’’’’’’’’’’’’’’^Bis zu dieser Stelle war stets von Dateien die Rede. Dateien sind jedoch ein SpezialŻ’’’’’’’’’>fall der grundlegenderen Struktur des Datenraumes. ’’’’’’’’’’’^Ein #ib#Datenraum#ie# ist ein allgemeiner DatenbehŁlter. Ein Datenraum kann beliebige’’’’’’’’’^Daten aufnehmen und erlaubt direkten Zugriff auf diese Daten. Die Struktur der Daten’’’’’’’’’’Nim Datenraum unterscheidet sich nicht von der Struktur der Programmdaten. Der’N'innere Datentyp' eines Datenraums wird vom Programmierer festgelegt. ’’’’’’’’NVorgeprŁgt vom System gibt es Textdateien, jeder andere Datentyp muū vom ProŻ’Ngrammierer geprŁgt werden, um so Dateien erzeugen zu kŚnnen, die Objekte eben’dieses neuen Typs enthalten. ’.1.3 Eigenschaften des Betriebssystems ’’’’’’’nDer erste Entwurf des Mikroprozessor-Betriebssystems EUMEL (#on("b")#E#off("b")#xtendable multi’’’’’’’’’’’’’’’Ž#on("b")#U#off("b")#ser #on("b")#M#off("b")#icroprozessor #on("b")#EL#off("b")#AN system) entstand 1979 mit dem Anspruch, auf MikrocomŻ’’’’’’’^putern den Anwendern Hilfsmittel und UnterstŪtzungen zu bieten, wie sie sonst nur’’’’’’’’’’’’’>auf Groūrechnern zur VerfŪgung gestellt werden. ’’’’’’’’’’’’’’^Aspekte, die EUMEL von anderen Betriebssystemen fŪr Mikrocomputer unterscheiden,’’’’’’’’’’’’’’- HardwareunabhŁngigkeit ’’’’’- Multitaskingkonzept ’’’’’’’’- Multiuserbetrieb ’’’’’’’’’’’- Erweiterbarkeit ’’’’’’’’’’’’.- virtuelle Speicherverwaltung ’’’’’’’’’’’’’’’- Datensicherheit ’’’’’’’’’’’’N#on("u")##on("b")#Das EUMEL-Schichtenmodell#off("b")##off("u")# ’’’’’’’’’’’’’’NDie HardwareunabhŁngigkeit des Betriebssystems EUMEL begrŪndet sich in seinem’^Aufbau aus Schichten (sogenannten virtuellen Maschinen), die einen klar definierten’’’’’’’’’’’Leistungsumfang haben. ’’’’’’’#center#beliebige Anwendungen .#center#Textverarbeitung, Datenbanken etc. ’’’>#center#Systemdienste: Monitor, Dateiverwaltung, Editor ’’’’’’#center#Task-System ’’’’’’’’’’>#center#Standardpakete (BOOL, INT, REAL, TEXT) ’’’’’’’’’’’’’’’#center#ELAN-Compiler ’’’’’’’’#center#EUMEL0 ’’’’’’’’’’’’’’’>#center#(virtueller Prozessor mit eigenem Befehlssatz) ’’’’’’’#center#SHard (GerŁtetreiber) #center#Hardware ’’’’’’’’’’’’’^Jede Schicht erwartet und erhŁlt von ihren Nachbarn wohldefinierte Eingaben und gibt’’’’’’’’’’Nwohldefinierte Ausgaben weiter. Önderungen in einer Schicht mŪssen also in den^angrenzenden Schichten beachtet werden, aber nicht in allen Teilen des Systems. ’’’’’’’’’’’’’’NUm EUMEL auf Rechner mit einem neuen Prozessortyp zu portieren, wird zunŁchst’Neine auf die Eigenheiten des Prozessors abgestimmte EUMEL0-Maschine entworfen’^und eine Hardwareanpassung (#ib#SHard#ie# : Software/Hardware-Interface) fŪr einen’’’’’’’’’’’’NRechner mit diesem Prozessor hergestellt. Alle hŚheren Schichten des Systems’’^bleiben unberŪhrt. Weitere mit diesem Prozessortyp ausgestattete Rechner kŚnnen mit’’’’’’’’’’’NEUMEL betrieben werden, indem ein SHard fŪr dieses Rechnermodell geschrieben’’^Aus Benutzersicht ist wichtig, daū dadurch jegliche Software, die auf irgendeinem’’’’’’’’’’’’’NRechner unter EUMEL verfŪgbar ist, auf jedem anderen Rechner, fŪr den eine’’’’^EUMEL Portierung existiert, lauffŁhig ist und gleiches Verhalten zeigt. Eine VernetŻ’’’’’’’’’’Nzung beliebiger Rechner, auf die EUMEL portiert ist, ist problemlos mŚglich. ’^Desweiteren ist fŪr den Benutzer des Systems von Bedeutung, daū er von der hardŻ’’’’’’’’’’’’’’Nwarenahen Schicht entfernt ist. Weder die Programmiersprache noch irgendwelche^speziellen Systemfunktionen gewŁhren direkten Zugriff auf den Speicher oder RegiŻ’’’’’’’’’’’’’^sterinhalte. Diese Tatsache hat weitreichende Folgen in Hinsicht auf Datenschutz und’’’’’’’’’’Systemsicherheit. ’’’’’’’’’’’’.Multi-Tasking-/Multi-User-Betrieb ’’’’’’’’’’’’NWie einleitend dargestellt, besteht ein EUMEL-System aus diversen Tasks. Durch^eine Aufteilung der Prozessorzeit in Zeitscheiben ist eine (quasi) parallele Bedienung’’’’’’’’mehrerer Tasks mŚglich. ’’’’’’NDie multi-user-FŁhigkeit des Betriebssystems wird durch den Anschluū mehrerer’^BildschirmarbeitsplŁtze (Terminals) an V.24 Schnittstellen des Rechners erreicht.’’’’’’’’’’’’’NDabei wird jeder Schnittstelle eine sogenannte Kanalnummer zugeordnet. Jeder’’NBenutzer kann seine Task dann an einen Kanal (=Terminal) koppeln und an diesem>Terminal gleichzeitig mit anderen Benutzern arbeiten. ’’’’’’’’.Prozeūkommunikation und NetzwerkfŁhigkeit ’’’’NGrundlage der Kommunikation ist die 'Manager-Eigenschaft' von Tasks. Eine TaskNist 'Manager', wenn sie AuftrŁge anderer Tasks annehmen und ausfŪhren kann.’’’^Insbesondere kann ein Manager veranlaūt werden, eine an ihn geschickte Datei anzuŻ’’’’’’’’’’’’Nnehmen, bzw. eine ihm gehŚrende Datei an die fordernde Task zu schicken. ’’’’’NDerartige Kommunikationslinien verlaufen normalerweise in der Baumstruktur des^Systems: z.B. ist die Task 'PUBLIC' (vergl. Seite 2) grundsŁtzlich Manager-Task.’’’’’’’’’’’’’’NEine unterhalb von PUBLIC liegende Task kann eine Datei an PUBLIC senden, bzw.von PUBLIC holen. ’’’’’’’’’’’’^Es ist auch mŚglich, eine Task fŪr den Zugriff beliebiger anderer Tasks zu Śffnen und’’’’’’’’’^somit beliebige Kommunikationspfade aufzubauen. Prinzipiell ist damit auch schon der’’’’’’’’’’NAufbau eines Netzwerkes beschrieben, denn sendende und empfangende Tasks’’’’’’>kŚnnen sich auf verschiedenen Rechnern befinden. ’’’’’’’’’’’’’NDurch selbst erstellte Programdukt := a * b; ’> (* Alle Elemente haben den Wert '24.0' *) ’’’’’’’’’. MATRIX OP * : COLUMNS l <> ROWS r ’^ Die Anzahl der Spalten von 'l' muū mit der Anzahl der Zeilen von 'r'’’’’’’’’’’’’’’’ Ūbereinstimmen. ’’’N #on("b")#VECTOR OP * (VECTOR CONST v, MATRIX CONST m) #off("b")# ’’’’’’’’’’> Multiplikation des Vektors 'v' mit der Matrix 'm'. ’’’’’’’’. VECTOR OP * : LENGTH v <> ROWS m ’^ Die Anzahl der Elemente von 'v' stimmt nicht mit den Anzahl der Zeilen’’’’’’’’’’’’ von 'm' Ūberein. ’N #on("b")#VECTOR OP * (MATRIX CONST m, VECTOR CONST v) #off("b")# ’’’’’’’’’’> Multiplikation der Matrix 'm' mit dem Vektor 'v'. ’’’’’’’’’> VECTOR OP * : COLUMNS m <> LENGTH v ’’’’’’’’’’’’’’^ Die Anzahl der Spalten von 'm' stimmt nicht mit der Anzahl der EleŻ’’’’’’’’’’’’’’’. menten von 'v' Ūberein. ’’’’’’’’’’> #on("b")#INT OP COLUMNS (MATRIX CONST m) #off("b")# ’’’’’’’> Liefert die Anzahl der Spalten von 'm'. Beispiel: ’’’’’’’’’. MATRIX VAR a :: matrix (3, 4), ’’’’. b :: matrix (7, 10); ’’’. put (COLUMNS a); (* 4 *) ’’’’’’’’’’. put (COLUMNS b); (* 10 *) ’’’’’’’’’> #on("b")#REAL OP DET (MATRIX CONST m) #off("b")# ’’’’’’’’’’> Es wird der Wert der Determinanten von 'm' geliefert. ’’’’’. OP DET : no square matrix ’’’’’’’’’N Die Matrix ist nicht quadratisch, d.h. ROWS m <> COLUMNS m ’’’’’’’’> #on("b")#MATRIX OP INV (MATRIX CONST m) #off("b")# ’’’’’’’’^ Liefert als Ergebnis die Inverse von 'm' (Achtung: starke Rundungsfehler mŚglich). ’’’’’’’’. OP INV : no square matrix ’’’’’’’’’> Die Matrix 'm' ist nicht quadratisch, ’’’’’’’’’’’’’. d.h. ROWS m <> COLUMNS m ’’’’’’’’’’. OP INV : singular matrix ’’’’’’’’’’. Die Matrix ist singulŁr. ’’’’’’’’’’> #on("b")#INT OP ROWS (MATRIX CONST m) #off("b")# ’’’’’’’’’’> Liefert die Anzahl der Zeilen von 'm'. Beispiel: ’’’’’’’’’’. MATRIX VAR a :: matrix (3, 4), ’’’’. b :: matrix (7, 10); ’’’ ... ’’’’’’’’’’. put (ROWS a); (* 3 *) ’’’’’’’’’’’’’. put (ROWS b); (* 7 *) ’’’’’’’’’’’’’> #on("b")#MATRIX OP TRANSP (MATRIX CONST m) #off("b")# ’’’’’> Liefert als Ergebnis die transponierte Matrix 'm'. ’’’’’’’’N #on("b")#PROC get (MATRIX VAR m, INT CONST rows, columns) #off("b")# ’’’’’’N Einlesen von Werten fŪr die Matrix 'm' vom Terminal mit 'rows'-Zeilen und’’ 'columns'-Spalten. ’’’’’’’’> #on("b")#PROC put (MATRIX CONST m) #off("b")# ’’’’’’’’’’’’’> Ausgabe der Werte einer Matrix auf dem Terminal. ’’’’’’’’’’N #on("b")#VECTOR PROC column (MATRIX CONST m, INT CONST i) #off("b")# ’’’’’’N Die 'i'-te Spalte von 'm' wird als VECTOR mit 'ROWS m' Elementen geliefert.. MATRIX CONST a :: matrix (3, 4); ’’. VECTOR VAR b :: column (a, 1); ’’> (* 'b' hat drei Elemente mit den Werten '0.0' *) ’’. PROC column : subscript overflow ’’N Der Index 'i' liegt auūerhalb der Matrix 'm' (i > COLUMNS m). ’’’’’. PROC column : subscript underflow ’N Der Index 'i' liegt auūerhalb der Matrix 'm' (i < 1). ’’’’’’’’’’’’’> #on("b")#INITMATRIX PROC idn (INT CONST size) #off("b")# ’’N Erzeugen einer Einheitsmatrix vom Datentyp INITMATRIX. Beispiel: ’’’’’’’’’’. MATRIX VAR a :: idn (10); ’’’’’’’’’> (* Erzeugt eine Matrix mit 10 x 10 Elementen, derenN Werte '0.0' sind, mit der Ausnahme der DiagonaleleŻ’’’’’’’’’’’’’’’> mente, die den Wert '1.0' haben.*) ’’’’’’’’’’’’’’’. PROC idn : size <= 0 ’’’’’’’’’’’’’’N Die angeforderte 'size' Anzahl Spalten oder Zeilen muū > 0 sein. ’’N #on("b")#INITMATRIX PROC matrix (INT CONST rows, columns) #off("b")# ’’’’’’N Erzeugen eines Datenobjekts vom Datentyp INITMATRIX mit 'rows' Zeilen und’’^ 'columns' Spalten. Alle Elemente werden mit dem Wert '0.0' initialisiert. Beispiel: ’’’’’’’. MATRIX CONST :: matrix (3, 3); ’’’’. PROC matrix : rows <= 0 ’’’’’’’’’’’> Die angeforderte Zeilenanzahl 'rows' muū > 0 sein. . PROC matrix : columns <= 0 ’’’’’’’’N Die angeforderte Spaltenanzahl 'columns' muū > 0 sein. ’’’’’’’’’’’’^ #on("b")#INITMATRIX PROC matrix (INT CONST rows, columns, REAL CONST value)#off("b")# ’’’’’N Erzeugen eines Datenobjekts vom Datentyp MATRIX mit 'rows' Zeilen und 'coŻ’N lumns' Spalten. Alle Elemente der erzeugten MATRIX werden mit dem Wert’’’’’. 'value' initialisiert. Beispiel: ’’’’’’’’’’> MATRIX CONST :: matrix (3, 3, 3.14); ’’’’’’’’’’’’’’. PROC matrix : rows <= 0 ’’’’’’’’’’’> Die angeforderte Zeilenanzahl 'rows' muū > 0 sein. . PROC matrix : columns <= 0 ’’’’’’’’N Die angeforderte Spaltenanzahl 'columns' muū > 0 sein. ’’’’’’’’’’’’N #on("b")#VECTOR PROC row (MATRIX CONST m, INT CONST i) #off("b")# ’’’’’’’’’N Die 'i'-te Reihe von 'm' wird als VECTOR mit 'COLUMNS m' Elementen gelieŻ’’ fert. Beispiel: ’’’’’’’’’’’. MATRIX CONST a :: matrix (3, 4); ’’. VECTOR VAR b :: row (a, 1); ’’’’’> (* 'b' hat vier Elemente mit den Werten '0.0'*) ’’’. PROC row : subscript overflow ’’’’’N Der Index 'i' liegt auūerhalb der Matrix 'm' (i > ROWS m). ’’’’’’’’. PROC row : subscript underflow ’’’’N Der Index 'i' liegt auūerhalb der Matrix 'm' (i < 1). ’’’’’’’’’’’’’N #on("b")#REAL PROC sub (MATRIX CONST m, INT CONST row, column) #off("b")# ’^ Liefert den Wert eines Elementes von 'm', welches durch die Indizes 'row' und’’’’’’’’’’’’’’. 'column' bestimmt wird. Beispiel: ’’’’’’’’’> MATRIX VAR m :: matrix (5, 10, 1.0); ’’’’’’’’’’’’’’. put (sub (m, 3, 7)); ’’’’’’’’’’’’’’. PROC sub : row subscript overflow ’N Der Index 'row' liegt auūerhalb von 'm' (row > ROWS m). ’’’’’’’’’’’. PROC sub : row subscript underflow > Der Index 'row' liegt auūerhalb von 'm' (row < 1). > PROC sub : column subscript overflow ’’’’’’’’’’’’’’N Der Index 'column' liegt auūerhalb von 'm' (column > ROWS m). ’’’’’. PROC sub : row subscript underflow N Der Index 'column' liegt auūerhalb von 'm' (column < 1). ’’’’’’’’’’> #on("b")#PROC transp (MATRIX VAR m) #off("b")# ’’’’’’’’’’’’^ Transponieren der Matrix 'm', wobei kaum zusŁtzlicher Speicherplatz benŚtigt’’’’’’’’’’’’’’’'replace column' ’’’’’’’’’’’’’N #on("b")#PROC replace column (MATRIX VAR m, INT CONST column index, VECTOR’> CONST column value) #off("b")# ’’’’’’^ Ersetzung der durch 'column index' definierten Spalte in der MATRIX 'm' durch’’’’’’’’’’’’’’. den VECTOR 'column value'. Beispiel: ’’’’’’> MATRIX VAR a :: matrix (3, 5, 1.0); ’’’’’’’’’’’’’’’. VECTOR VAR b :: vector (3, 2.0); ’’ ... ’’’’’’’’’. replace column (a, 2, b); ’’’’’’’’’N (* Die zweite Spalte von 'a' wird durch die Werte von’’’’’’’’’’’’’’ 'b' ersetzt *) ’> PROC replace column : LENGTH columnvalue <> ROWS m ^ Die Anzahl der Zeilen der MATRIX 'm' stimmt nicht mit der Anzahl der’’’’’’’’’’’’’’’> Elemente von 'columnvalue' Ūberein. ’’’’’’’’’’’’’’’> PROC replace column : column subscript overflow ’’’> Der Index 'columnindex' liegt auūerhalb von 'm' ’’’. (columnindex > COLUMNS m). ’’’’’’’’> PROC sub : column subscript underflow ’’’’’’’’’’’’’me kann der EigentŪmer einer 'Manager-Task' die’^Reaktion dieser Task auf einen Auftrag von auūen bestimmen. Beispielsweise kann’’’’’’’’’’’’’’’^ein Manager derart programmiert werden, daū er nur Dateien empfŁngt und ausdruckt,’’’’’’’’’’’’.aber niemals Dateien verschickt (Spool-Task). Erweiterbarkeit ’’’’’’’’’’’’’’NDie Programmiersprache ELAN ist im EUMEL-System gleichzeitig Programmier-’’’’’Nund System-Kommandosprache (JCL), denn jedes Kommando ist Aufruf einer’’’’’’’’NELAN-Prozedur und jede vom Benutzer geschriebene ELAN-Prozedur erweitert’’’’’’.den Kommandovorrat des Systems. ’’’’’’’’’’’’’’NDa alle EUMEL-Werkzeuge (einschlieūlich Editor) selbst ELAN-Programme sind,’’’Nkann das System vom Benutzer selbst durch HinzufŪgen eigener ELAN-Programme’’’^oder Programmpakete beliebig erweitert werden. Dabei kŚnnen die bereits implemenŻ’’’’’’’’’’’’’Ntierten Systemteile (z.B. die Fenstertechnik des Editors) genutzt werden. ’’’’NEin Benutzer muū, um alle MŚglichkeiten vom EUMEL zu nutzen, nur eine Sprache’^lernen und nicht - wie bei anderen Betriebssystemen - zwei unterschiedliche, eine’’’’’’’’’’’’’.Kommando- und eine Programmiersprache. ’’’’’’’NELAN selbst ist eine PASCAL-Łhnliche Programmiersprache, die mit Hilfe der’’’’Nschrittweisen Verfeinerung (Refinement-Konzept) die Top-Down-Programmierung’’’^unterstŪtzt. Das Paketkonzept, das der Modularisierung dient, und die freie Wahl von’’’’’’’’’’^Bezeichnernamen sind Voraussetzung fŪr Ūbersichtliche und effiziente ProgrammieŻ’’’’’’’’’’’’’’Virtuelle Speicherverwaltung ’^Im EUMEL-System wird der Hauptspeicherplatz nach dem #on("b")#Demand-Paging-Prinzip#off("b")#’^verwaltet. Daten und Programme werden dazu in Seiten von 512 Byte aufgeteilt. Nur’’’’’’’’’’’’’^diejenigen Seiten, die wirklich benŚtigt werden, werden vom Hintergrundspeicher’’’’’’’’’’’’’’’^(Platte) in den Hauptspeicher geholt. Damit ist fŪr den Benutzer bezŪglich seiner’’’’’’’’’’’’’NProgramm- bzw. DateigrŚūen nicht mehr der Hauptspeicher, sondern die HinterŻ’’NgrundkapazitŁt von Bedeutung. Die Durchsatzgeschwindigkeit (Performance) ist’’NabhŁngig von der GrŚūe des RAM-Speichers und der Zugriffsgeschwindigkeit des’’NHintergrundmediums. Das Demand-Paging-Verfahren ist Grundlage fŪr den’’’’’’’’’^Multi-User-Betrieb, wobei der Hauptspeicherplatz mŚglichst effizient zu nutzen und’’’’’’’’’’’’.kein Benutzer zu benachteiligen ist. ’’’’’’’’’^Beim Duplizieren eines Datenraumes wird im EUMEL-System lediglich eine logische,’’’’’’’’’’’’’’^keine physische Kopie erzeugt. Zwei Seiten (zweier DatenrŁume) heiūen dann gekopŻ’’’’’’’’’’’’’^pelt (geshared), wenn beide Seiten physisch demselben Block zugeordnet sind. Erst’’’’’’’’’’’’’^bei einem Schreibzugriff werden die Seiten entkoppelt (entshared) und tatsŁchlich’’’’’’’’’’’’’Nphysisch kopiert. Daher der Name "#on("b")#copy-on-write#off("b")#". ’’’’’’’’’^Dieses Prinzip wird natŪrlich auch systemintern angewandt. Beispielsweise erbt eine’’’’’’’’’’’NSohn-Task den Kommandovorrat der Vater-Task, indem der Standard-Datenraum,’’’’^der die vorŪbersetzten ELAN-Prozeduren enthŁlt, in der beschriebenen Weise kopiert’’’’’’’’’’’’^wird. Prozeduren, die spŁter hinzugefŪgt werden, werden natŪrlich nicht vererbt, da’’’’’’’’’’’>die Standard-DatenrŁume dann entkoppelt werden. ’’’’’’’’’’’’’’Datensicherheit ’’’’’’’’’’’’’’NStŚrungen (inklusive Stromausfall) werden systemseitig durch eine automatischen#on("b")#Fixpoint-Rerun-Logik#off("b")# aufgefangen, indem zum Zeitpunkt eines Fixpunkts der Inhalt’’’’’’’’’’’^des RAM Speichers, der seit dem letzten #ib#Fixpunkt#ie# verŁndert wurde auf den’’’’’’’’’’’’’’^permanenten Speicher (Festplatte) geschrieben wird. Somit kann nach einer StŚrung’’’’’’’’’’’’’Nimmer auf den Systemzustand des letzten Fixpunktes aufgesetzt werden und die’’>Datenverluste halten sich in ertrŁglichen Grenzen. ’’’’’’’’’’’^Der Zeitraum zwischen zwei Fixpunkten betrŁgt standardmŁūig 15 Minuten, kann aber’’’’’’’’’’’’’.vom Benutzer anders eingestellt werden. ’’’’’’NAuch bei dieser Sicherung wird das Copy-on-write-Prinzip angewendet, so daū’’’NPlatz- und Zeitaufwand gering sind und den normalen Ablauf nicht stŚren. ’’’’’1.4 Wichtige Begriffe ’’’’’’’n- #on("b")##ib#archive#ie##off("b")#. Spezielle Task zur Verwaltung des Diskettenlaufwerks. Da fŪr die’’’’’’N lŁngerfristige Datenhaltung und zur zusŁtzlichen Datensicherung Dateien aufN Disketten geschrieben werden, besitzt das EUMEL-System fŪr diese Aufgabe’’’^ eine besondere Task, die die Bedienung vereinfacht und exklusiven Zugriff auf das’’’’’’’’’’ Laufwerk garantiert. ’’’’’’n- #on("b")##ib#configurator#ie##off("b")#. Besondere Task im Systemzweig des EUMEL-Systems. In’’’’’’’’’’’’’’^ dieser Task ist die #ib#Konfiguration#ie# von KanŁlen mŚglich, d.h. Kanal und’’’’’’’’’’’’’’> angeschlossenenes GerŁt werden aufeinander abgestimmt. ’’’’n- #on("b")##ib#editor#ie##off("b")#. Programm zur Dateibearbeitung am Bildschirm. Das Programm wird’’’’’’’’’N durch das ( Monitor- ) Kommando 'edit' und die Eingabe des Namens der geŻ’’. wŪnschten Datei als Parameter gestartet. ’’^ Da ein Bildschirm normalerweise auf 80 Zeichen Zeilenbreite und 24 Zeilen beŻ’’’’’’’’’’’’’’^ schrŁnkt ist, kann der Editor als Fenster betrachtet werden, das Ūber die mŚgliŻ’’’’’’’’’’’^ cherweise weitaus grŚūere Datei bewegt wird und durch das der betrachtete AusŻ’’’’’’’’’’’’’. schnitt der Datei bearbeitet werden kann. ’n- #on("b")##ib#manager task#ie##off("b")#. Task, die AuftrŁge von anderen Tasks entgegennehmen und’’’’’’’’’’n ausfŪhren #on("u")#kann#off("u")#. Beispielsweise ist die Verwaltung von Dateien, die mehreren’’’’’’’’’’’’’^ Benutzern (= anderen Tasks) zugŁnglich sein sollen, eine typische Aufgabe fŪr’’’’’’’’’’’’’’ einen Manager. ’’’’’’’’’’’’n- #on("b")##ib#Monitor#ie##off("b")#. Der EmpfŁnger von Kommandos innerhalb einer Task ist der Monitor. Der’’^ Monitor ist sichtbar durch eine Zeile, in der 'gib kommando' steht. In diese Zeile’’’’’’’’’N werden #ib#Kommando#ie#s und erforderliche Parameter eingegeben. ’’’’’’’’’’n- #on("b")##ib#Supervisor#ie##off("b")#. Spezielle Task zur Ųberwachung eines EUMEL-Systems. Ein’’’’’’’’’’’’N Benutzer kann durch die Supervisor-Kommandos Leistungen von dieser Task’’’’^ fordern: neue Task einrichten, Task wiederaufnehmen und diverse Informationen. ’’’’’’’’’’’’n- #on("b")##ib#Task#ie##off("b")#. Beliebig langlebiger Prozeū im EUMEL-System, der die ArbeitsŻ’’’’’’’’’’’’^ umgebung fŪr Benutzer bildet. Jede Task besitzt einen #ib#Standard-Datenraum#ie#, der’’’’’’N Code und Compilertabellen der Task enthŁlt und kann weitere DatenrŁume’’’’’ (Dateien) besitzen. ’’’’’’’.1.5 Die Notation in diesem Buch ’’’’’’’’’’’’’>Beachten Sie bitte folgende Regeln der Aufschreibung: ’’’’’’’’^- Funktionstasten werden ebenso wie besondere Tastenkombinationen explizit als’’’’’’’’’’’’’’’ Tasten dargestellt: ’’’’’’’. ’’’’’’’’’’’’’^- Alles, was Sie am Bildschirm Ihres Rechners schreiben oder lesen sollen, ist in’’’’’’’’’’’’> Textbereiche, die einen Bildschirm darstellen, eingefaūt. ’N____________________________________________________________________________ ’ gib kommando: ’’’’’’’’’’’’ edit ("mein programm") ’’’N____________________________________________________________________________ ’N- Innerhalb des Handbuchs sind in der Aufschreibung die Konventionen der ProŻN grammiersprache ELAN berŪcksichtigt. Dabei sind folgende Besonderheiten zu’> 1) Kommandos werden grundsŁtzlich klein geschrieben. ’’’’’’N 2) Dateinamen u.Ł. sind Textdenoter und werden somit in Klammern und AnfŪhŻ^ rungsstrN Der Index 'columnindex' liegt auūerhalb von 'm' (columnindex < 1). 'replace element' ’’’’’’’’’’’’N #on("b")#PROC replace element (MATRIX VAR m , INT CONST row, column, ’’’’’’> REAL CONST value) #off("b")# ’’’’’’’’’N Ersetzung eines Elementes von 'm' in der 'row'-ten Zeile und 'column'-ten’’. Spalte durch den Wert 'value'. Beispiel: ’’. MATRIX VAR a :: matrix (5, 5); ’’’’ ... ’’’’’’’’’. replace element (1, 1, 3.14159); ’’> PROC replace element : row subscript overflow ’’’’’N Der Index 'row' liegt auūerhalb von 'm' (row > ROWS m). ’’’’’’’’’’’> PROC replace element : row subscript underflow ’’’’> Der Index 'row' liegt auūerhalb von 'm' (row < 1). > PROC replace element : column subscript overflow ’’N Der Index 'column' liegt auūerhalb von 'm' (column > COLUMNS m). ’’> PROC replace element : row subscript underflow ’’’’N Der Index 'column' liegt auūerhalb von 'm' (column < 1). ’’’’’’’’’’'replace row' N #on("b")#PROC replace row (MATRIX VAR m, INT CONST rowindex, ’’’’’’’’’’’’’’> VECTOR CONST rowvalue) #off("b")# ’’’’’’’’^ Ersetzung der Reihe 'rowindex' in der MATRIX 'm' durch den VECTOR 'rowvalue'.’’’’’’’’’’’’’’> MATRIX VAR a :: matrix (3, 5, 1.0); ’’’’’’’’’’’’’’’. VECTOR VAR b :: vector (5, 2.0); ’’ ... ’’’’’’’’’. replace row (a, 2, b); ’’’’’’’’’’’’N (* Die 2. Reihe von 'a' wird durch Werte von 'b'ersetzt *) ’’’’’’’’> PROC replace row : LENGTH rowvalue <> COLUMNS m ’’’^ Die Anzahl der Spalten der MATRIX 'm' stimmt nicht mit der Anzahl der’’’’’’’’’’’’’’. Elemente von 'rowvalue' Ūberein. ’’> PROC replace row : row subscript overflow ’’’’’’’’’> Der Index 'rowindex' liegt auūerhalb von 'm' ’’’’’’. (rowindex > ROWS m). ’’’’’’’’’’’’’’. PROC sub : row subscript underflow N Der Index 'rowindex' liegt auūerhalb von 'm' (rowindex < 1). ’’’’’’6.2 Programmanalyse ’’’’’’’’’.Das Packet 'reporter' ermŚglicht: ’’’’’’’’’’’’.a) Ablaufinformationen ("trace"); ’’’’’’’’’’’’>b) #ib#HŁufigkeitszŁhlung#ie# ("frequency count"); ’’’’’’’’’’’^c) Programmunterbrechung bei NichterfŪllung einer Bedingung ("#ib#assertion#ie#"). ’’’’’’’’’’’'Installation' ’’’’’’’’’’’’’’’^Das Programm befindet sich in der Datei 'reporter' und kann wie Ūblich insertiert’’’’’’’’’’’’’^werden. Jedoch muū es mit 'check off' Ūbersetzt werden, damit keine Zeilennummern’’’’’’’’’’’’’^fŪr 'reporter' generiert werden. Dies ist notwendig, damit die Zeilennummern des zu’’’’’’’’’’’Ntestenden Programms nicht mit den Zeilennummern des Programms 'reporter' verŻ’.wechselt werden kŚnnen. Beispiel: ’’’’’’’’’’’’. check off; insert ("reporter"); check on Mit dem Kommando ’’’’’’’’’’’’’. #ib#generate reports#ie# ("testdatei") ’’^werden die oben erwŁhnten Prozeduraufrufe ('#ib#report#ie#') in das zu testende Programm,’’’’’^welches in der Datei 'testdatei' steht, geschrieben. Die Prozeduraufrufe werden nach’’’’’’’’’’Njedem Prozedur-, Operator- oder Refinement-Kopf eingefŪgt und erhalten den’’’’^entsprechenden Namen als Parameter. Diese Prozeduraufrufe werden gekennzeichnet,’’’’’’’’’’’’’’damit sie von der Prozedur ’’’. eliminate reports ("testdatei") ’’’’’’’’’^automatisch wieder entfernt werden kŚnnen. Beispiel (fŪr die eingefŪgten ProzeduraufŻ’’’’’’’’’. PROC beispiel (INT CONST mist): ’’’’’’’’’’. ŽŽreport ("PROC beispiel");ŽŽ ’’’’’’’’’’’’.'Automatische Ablaufinformation' ’’’’’’’’’’’’’^Ist ein Programm mit 'generate reports' mit 'report'-Aufrufen versehen worden, kann’’’’’’’’’’’Nes wie gewohnt Ūbersetzt werden. Wird das Programm vom ELAN-Compiler korŻ’’’’’^rekt Ūbersetzt und dann gestartet, wird bei jedem Antreffen eines 'report'-Aufrufs der’’’’’’’’NParameter (Name der Prozedur, Operator oder Refinement) in eine Datei, die’’’’NTRACE-Datei geschrieben. Die TRACE-Datei wird beim Programmlauf automatisch’’’>von 'reporter' unter dem Namen 'TRACE' eingerichtet. ’’’’’’’’’^Mit Hilfe dieser Datei kann der Programmablauf verfolgt werden. Es ist damit auch’’’’’’’’’’’’’^mŚglich festzustellen, wo eine "Endlos-Rekursion" auftritt. Die Ablaufinformationen’’’’’’’’’’’^bestehen nur aus den Namen der angetroffenen Prozeduren und Refinements. TrotzŻ’’’’’’’’’’’’’’’^dem kŚnnen die Anzahl der Informationen sehr umfangreich werden. Deshalb gibt es’’’’’’’’’’’’’’^die MŚglichkeit, die Erzeugung der Ablaufinformationen ab- bzw. wieder anzuschalŻ’’’’’’’’’’’’’Nten. Dazu gibt es die MŚglichkeit, in das zu testende Programm die Prozeduren  #ib#report on#ie# ’’’’’’’ #ib#report off#ie# ’’’’’’^einzufŪgen und das zu testende Programm mit diesen Prozeduraufrufen (erneut) zu’’’’’’’’’’’’’’’.'Benutzereigene Ablaufinformation' ’’’’’’’’’’’^ZusŁtzlich zu den von 'generate reports' eingefŪgten 'report'-Aufrufen kann ein’’’’’’’’’’’’’’’NBenutzer eigene Aufrufe an geeigneten Stellen in ein Programm schreiben. DafŪr^werden weitere 'report'-Prozeduren zur VerfŪgung gestellt, die als ersten Parameter’’’’’’’’’’’^ein TEXT-Objekt (meist Name des Objekts oder der Ausdruck selbst) und als zweiŻ’’’’’’’’’’’’’’’Nten ein INT/REAL/TEXT/ BOOL-Objekt (der zu ŪberprŪfende Wert oder Ausdruck)’’’enthalten. Beispiel: ’’’’’’’’’. PROC beispiel (INT CONST mist): ’’’’’’’’’’N ŽŽreport ("beispiel");ŽŽ (* automatisch eingefuegte *) ’’’’’’’’’’’’’’’ INT VAR mist :: ...; ... ’N ŽŽreport ("mist:", mist);ŽŽ (* vom Benutzer per Hand eingeŻ’’’’’’’’’’’’’’. fuegt *) ’^Folgende 'report'-Routinen stehen zur VerfŪgung, damit man sie "von Hand" in ein’’’’’’’’’’’’’’.zu testendes Programm einfŪgen kann: ’’’’’’’’’ PROC report on ’’’’’’’’’’ PROC report off ’’’’’’’’’. PROC report (TEXT CONST message) ’’’’’’’’> PROC report (TEXT CONST message, INT CONST value) ’’’’’’> PROC report (TEXT CONST message, REAL CONST value) ’’’’’’> PROC report (TEXT CONST message, TEXT CONST value) ’’’’’’> PROC report (TEXT CONST message, BOOL CONST value) ’’’’’’NWichtig: Hier - wie bei allen anderen "von Hand eingefŪgten" Aufrufen - sollte^ein Nutzer sich an die Konvention halten, diese in "ŽŽ" einzuklammern. Mit 'eliminate’’’’’’’’’^reports' werden diese EinfŪgungen automatisch entfernt. Sollen diese Aufrufe aber’’’’’’’’’’’’’Nimmer im Programm erhalten bleiben (jedoch nicht wirksam sein), sollten sie ’’^a) vor 'generate reports'-Aufruf mit jeweils 'ŽŽŽ' eingefaūt werden. Beispiel: ’’’’’’’’’’’’’’’ ŽŽŽ report ("...") ŽŽŽ ’’’’^ So steht das 'report'-Statement in einem Kommentar. 'generate reports' wandelt’’’’’’’’’’’’’N 'ŽŽŽ' --> 'ŽŽŽŽ' um, so daū ein solches Statement wirksam wird. 'eliminate’> reports' wandelt ein 'ŽŽŽŽ' --> 'ŽŽŽ' zurŪck. ’’’’’’’’’’’’’>b) nach 'generate reports' in 'ŽŽŽŽ' eingefaūt werden. ’’’’’’’'HŁufigkeitszŁhlung' ’’’’’’’’’NEine HŁufigkeitszŁhlung erhŁlt man, in dem man in das zu testende Programm die count on  count off ’’’’’’’’’’’’’’’^einfŪgt. Ist die HŁufigkeitszŁhlung eingeschaltet, merkt sich 'reporter' die Anzahl der’’’’’’’NDurchlŁufe fŪr jede Prozedur bzw. Refinement. Mit der Prozedur ’’’’’’’’’’’’’’’> #ib#generate counts#ie# ("zu testende datei") ’’’’’’’’’’’^werden die vermerkten HŁufigkeiten in das zu testende Programm direkt eingefŪgt.’’’’’’’’’’’’’’^Die HŁufigkeiten werden wie oben beschrieben gekennzeichnet, so daū sie mit 'elimiŻ’’’’’’’’’’’.nate reports' entfernt werden kŚnnen. ’’’’’’’’^ZusŁtzlich zu den oben erwŁhnten MŚglichkeiteniche gesetzt. In diesem Buch steht an den Stellen, wo ein Dateiname’’’’’’’’’’’’’n auftaucht #on("i")# 'dateiname' #off("i")#; den Namen, den Sie tatsŁchlich verwenden, kŚnnen’’’’’’’’’’’’ Sie frei wŁhlen. ’’’’’’’N 3) Falls besondere Begriffe oder Beispiele innerhalb eines normalen Textes’N auftreten, werden sie in einfache AnfŪhrungsstriche gesetzt. ’’’’’’’’’’’.1.6 Die Funktionstasten des EUMEL-Systems ’’’^Die Lage der EUMEL-Funktionstasten entnehmen Sie bitte der speziellen InstallaŻ’’’’’’’’’’’’’’’Ntionsanleitung zu dem von Ihnen benutzten GerŁt. #l pos (0.0)##l pos(4.0)# ’’’. <^> <>> <<> Positionierungstasten ’’’’’. Umschalttaste ’’’’’’’’’’’’’’. Eingabe-/ Absatztaste ’’’’’’. Kommandotaste ’’’’’’’’’’’’’’. Supervisortaste ’’’’’’’’’’’’. VerstŁrkertaste ’’’’’’’’’’’’ LŚschtaste ’. EinfŪgetaste ’’’’’’’’’’’’’’’. Tabulatortaste ’’’’’’’’’’’’’. Markiertaste ’’’’’’’’’’’’’’’ Stoptaste ’’ Weitertaste #tableend##clear pos# ’’’’’’’’^Weitere Informationen hierzu finden Sie in der Installationsanleitung zu dem von Ihnen’’’’’’’’.benutzten Rechner oder Terminal. ’’’’’’’’’’’’’1.7 Eine Beispielsitzung ’’’’^Im Folgenden wird eine Beispielsitzung skizziert, in der ein ELAN-Programm erstellt’’’’’’’’’’’und getestet wird. ’’’’’’’’’’’. SUPERVISOR aufrufen ’’’’’’’’’’’’’N____________________________________________________________________________ ’> Terminal 2 ’’’’’’’. EUMEL Version 1.8/M ’’’’. gib supervisor kommando: ’’’’’’’’’’’’’. begin("meine erste Task") ’’’’’’’’’’’’ ESC ? --> help ’’’’’’’’’’’’> ESC b --> begin("") ESC h --> halt ’’’’’’’’’’’’’> ESC c --> continue("") ESC s --> storage info ’’’’’> ESC q --> break ESC t --> task info ’’’’’’’’N____________________________________________________________________________ ’^Durch das Kommando 'begin ("meine erste Task")', welches durch abgeschlosŻ’’’’’’’’’’’’’’’Nsen werden muū, wird eine Task mit dem Namen 'meine erste Task' im BenutzerŻ’’^zweig, also unterhalb von 'PUBLIC' angelegt. WŪrde diese Task bereits existieren, so’’’’’’’’’’NkŚnnten Sie sie mit 'continue ("meine erste Task")' an das Terminal holen. ’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’. edit ("mein erstes Programm") ’’’’’’’’’’’’N____________________________________________________________________________ ’NIn der Task erŚffnen Sie eine Datei mit dem Kommando 'edit ("dateiname")'. ’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’. edit ("mein erstes Programm") ’’’’’’’’’’’’> "mein erstes Programm" neu einrichten (j/n) ? j ’’’’’’’’’’’’N____________________________________________________________________________ ’^Falls diese Datei neu ist, erfolgt eine Kontrollfrage (zur Kontrolle der gewŪnschten’’’’’’’’’’>Schreibweise des Dateinamens), die Sie durch bejahen. ’’’’N____________________________________________________________________________ ’N ............ mein erstes Programm ............... Zeile 1 #markon# ’’’’’N____________________________________________________________________________ ’>In die noch leere Datei tippen Sie nun den Programmtext ein. ’N____________________________________________________________________________ ’> ............ mein erstes Programm ............... Zeile 1 ’’. _INT PROC ggt (INT CONST a, b): ’’’’’’’’’’’’’> INT VAR b kopie :: abs (b), a kopie :: abs (a); ’’’’’’’’’’’ WHILE b kopie <> 0 REPEAT . INT VAR rest := a kopie MOD b kopie; ’’’ a kopie := b kopie; ’’’’ b kopie := rest ’’’’’’’’ END REPEAT; ’’’’’’’’’’’’’’ END PROC gt;  lies 2 zahlen ein; ’’’’’’’’. gib groessten gemeinsamen teiler aus ’’’’’’. UNTIL no ("weitertesten") PER. ’’’’’’’’’’’’’’ lies 2 zahlen ein: ’’’’’’’’’’. line; put ("2 Zahlen eingeben:"); ’’’’’’’’’ INT VAR a, b; ’’’’’’’’’’’’’ get (a); get (b). ’’’’’’’’’. gib groessten gemeinsamen teiler aus: ’’’’’’’. put ("der grŚūte gemeinsame Teiler von"); ’N put (a); put ("und"); put (b); put ("ist"); put (ggt (a,b)); ’’’’’’’’’’’’’’N____________________________________________________________________________ ’^In dem Programmbeispiel wird ein Prozedur 'ggt' definiert, die den grŚūten gemeinŻ’’’’’’’’’’’’^samen Teiler zweier Zahlen bestimmt. Die Prozedur soll fŪr verschiedene Beispiele’’’’’’’’’’’’’^getestet werden; dies geschieht in dem Hauptprogramm, das solange Zahlen einliest’’’’’’’’’’’’’^und den grŚūten gemeinsamen Teiler ausgibt, bis der Benutzer auf die Frage 'weiterŻ’’’’’’’’’’’.testen (j/n) ?' mit antwortet. ’’’’’’’’’’’NHaben Sie das Programm eingegeben, so kŚnnen Sie die Bearbeitung dieser ProŻ’’Ngrammdatei durch DrŪcken der Tasten (nacheinander!) beenden. ’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’’. run ("mein erstes Programm") ’’’’’’’’’’’’’’N____________________________________________________________________________ ’NUm Ihr Programm zu Ūbersetzen und auszufŪhren, geben Sie das Kommando’’’’’’’’’'run ("dateiname")'. ’’’’’’’’’^Der Verlauf der Ųbersetzung, die zwei LŁufe Ūber das Programm erfordert, ist am’’’’’’’’’’’’’’’NZŁhler, der an der linken Seite des Bildschirms ausgegeben wird, zu erkennen. ^Werden beim Ųbersetzen des Programms Fehler entdeckt, so werden diese im 'noteŻ’’’’’’’’’’’’’’’Nbook' parallel zur Programmdatei gezeigt. In dem Beispielprogramm wurde ein’’’.Schreibfehler in Zeile 9 gemacht. ’’’’’’’’’’’’N____________________________________________________________________________ ’> ............ mein erstes Programm ............... Zeile 1 ’’. _INT PROC ggt (INT CONST a, b): ’’’’’’’’’’’’’> INT VAR b kopie :: abs (b), a kopie :: abs (a); ’’’’’’’’’’’ WHILE b kopie <> 0 REPEAT ’. INT VAR rest := a kopie MOD b kopie; ’’’ a kopie := b kopie; ’’’’ b kopie := rest ’’’’’’’’ END REPEAT; ’’’’’’’’’’’’’’’ END PROC gt; N .................. notebook ..................... Zeile 1 #markon# ’’’’’. Zeile 9 FEHLER bei >> gt << ’’’’’’’’’’’’. ist nicht der PROC Name ’’’’’’’’N____________________________________________________________________________ ’.Diesen Fehler mŪssen Sie nun verbessern. ’’’’’N____________________________________________________________________________ ’> ............ mein erstes Programm ............... Zeile 9 ’’. INT PROC ggt (INT CONST a, b): ’’’’’’’’’’’’’’> INT VAR b kopie :: abs (b), a kopie :: abs (a); ’’’’’’’’’’’ WHILE b kopie <> 0 REPEAT ’. INT VAR rest := a kopie MOD b kopie; ’’’ a kopie := b kopie; ’’’’ b kopie := rest ’’’’’’’’ END REPEAT; ’’’’’’’’’’’’’’’ END PROC ggt;_ ’’’’’’’’’’’’’’> .................. notebook ..................... Zeile 1 ’’. Zeile 9 FEHLER bei >> gt << ’’’’’’’’’’’’. ist nicht der PROC Name ’’’’’’’’N____________________________________________________________________________ ’NHaben Sie das Programm korrigiert, so kŚnnen Sie die Datei durch DrŪcken der’’>Tasten (nacheinander!) wieder verlassen. ’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’. run ("mein erstes Programm") ’’’’’’’’’’’’’N______________________________________________ bietet 'reporter' noch die Prozedur ’’’’’’’’’’’ #ib#assert#ie# ’’’’’’’’’’^an. Diese Prozedur kann von einem Programmierer an einer Stelle in das zu testende’’’’’’’’’’’’^Programm eingefŪgt werden, an der bestimmte Bedingungen erfŪllt sein mŪssen. Die’’’’’’’’’’’’’’>Prozedur 'assert' steht in zwei Formen zur VerfŪgung: ’’’’’’’’> PROC #ib#assert#ie# (BOOL CONST zusicherung) ’’’’’’’’’’’’> PROC assert (TEXT CONST message, BOOL CONST zusicherung) NIst der Wert von 'zusicherung' nicht TRUE, wird der Programmlauf abgebrochen. reporter - Kommandos ’’’’’’’’’. #on("b")#PROC count on #off("b")# ’’’’’’’’’. Schaltet die HŁufigkeitszŁhlung ein. ’’’’’’. #on("b")#PROC count off #off("b")# ’’’’’’’’. Schaltet die HŁufigkeitszŁhlung aus. ’’’’’’'eliminate reports' ’’’’’’’’’’N #on("b")#PROC eliminate reports (TEXT CONST datei) #off("b")# ’’’’’’’’’’’’’N Entfernt gekennzeichnete 'report'-Aufrufe aus der Datei 'datei'. ’’’’’’’’’’'generate reports' ’’’’’’’’’’’N #on("b")#PROC generate reports (TEXT CONST datei) #off("b")# ’’’’’’’’’’’’’’^ FŪgt 'report'-Aufrufe in die Datei 'datei' ein und kennzeichnet diese mit 'ŽŽ'. ’’’’’’’’’’’. #on("b")#PROC report on #off("b")# ’’’’’’’’> Schaltet die Ablaufinformationen in die Datei 'TRACE' ein. . #on("b")#PROC report off #off("b")# ’’’’’’’> Schaltet die Ablaufinformationen wieder aus. ’’’’’’’’’’’’’’'generate counts' ’’’’’’’’’’’’N #on("b")#PROC generate counts (TEXT CONST datei) #off("b")# ’’’’’’’’’’’’’’’^ Bringt die HŁufigkeitszŁhlung (wie oft eine Prozedur oder Refinement durchlaufen’’’’’’’’’’’^ wurde) in die Programmdatei 'datei'. Mit 'eliminate reports' werden diese wieder’’’’’’’’’’’ automatisch entfernt. ’’’’’N #on("b")#PROC assert (TEXT CONST message, BOOL CONST value) #off("b")# ’’’’N Schreibt 'message' und den Wert von 'value' in die TRACE-Datei. Ist 'value'N FALSE, wird angefragt, ob das Programm fortgesetzt werden soll. ’’’’’’’’’’’'referencer' wird durch ’’’’’’> referencer ("ref datei", "referenz liste") ’’’’’’’’’’’’’’^aufgerufen, wobei die Datei 'referenz liste' nicht existieren darf. 'referenz liste' enthŁlt’’^nach Ablauf des Programms die gewŪnschte Liste, die sogenannte #ib# Referenzliste#ie#. ’’’’’’’^#ub#Achtung#ue#: 'referencer' arbeitet ausschlieūlich mit Namen und verarbeitet nur wenige’’’’^syntaktische Konstrukte. Darum ist es nur erlaubt, ein PACKET auf einmal von 'refeŻ’’’’’’’’’’’^rencer' verarbeiten zu lassen. Verarbeitet man mehrere PACKETs auf einmal, kann es’’’’’’’’’’’’Ngeschehen, daū gleichnamige Objekte in unterschiedlichen Paketen zu Warnungen’>(vergl. die unten beschriebenen ŲberprŪfungen) fŪhren. ’’’’’’’In der Referenzliste sind ’’’’^- alle Objekte mit ihrem Namen (in der Reihenfolge ihres Auftretens im Programm) ’’’’’’’’’’’’’>- alle Zeilennummern, in der das Objekt angesprochen wird ’’’’^- die Zeilennummern, in der das Objekt deklariert wurde ('L' fŪr ein lokales und 'G'’’’’’’’’’’> fŪr ein globales Objekt, 'R' fŪr ein Refinement) ’’’’’’’’’’’^Die Referenzliste kann u.a. dazu dienen, zu kontrollieren, ob und wie (bzw. wo) ein’’’’’’’’’’’^Objekt angesprochen wird. Dies lohnt sich selbstverstŁndlich nur bei etwas umfanŻ’’’’’’’’’’’’’Ngreicheren Programmen (bei "Mini"-Programmen kann man dies sofort sehen). ’’’’^Bei der Erstellung der Referenzliste nimmt das Programm 'referencer' gleichzeitig’’’’’’’’’’’’’Neinige ŲberprŪfungen vor, die helfen kŚnnen, ein Programm zu verbessern: ’’’’’.1. Warnung bei mehrzeiligen Kommentaren. ’’’’’N2. Ųberdeckungsfehler. Wird ein Objekt global (auf PACKET-Ebene) und nochmals’^ lokal in einer Prozedur deklariert, ist das globale Objekt nicht mehr ansprechbar.’’’’’’’’’^ Ųberdeckungen sind nach der gŪltigen Sprachdefinition z.Zt. noch erlaubt, werden’’’’’’’’’’’> aber bei einer Revision des Sprachstandards verboten sein. N3. Mehrmaliges Einsetzen von Refinements. Wird ein Refinement mehrmals eingeŻ’^ setzt (das ist vŚllig legal), sollte man Ūberlegen, ob sich dieses Refinement nicht’’’’’’’’. zu einer Prozedur umgestalten lŁūt. ’’’’’’’^4. Nicht angewandte Refinements. Wird ein Refinement zwar deklariert, aber nicht’’’’’’’’’’’’’’. "aufgerufen", erfolgt eine Warnung. ’’’’’’’N5. Nicht angesprochene Daten-Objekte. Werden Daten-Objekte zwar deklariert,’’’^ aber im folgenden nicht angesprochen, wird eine Warnung ausgegeben. Hinweis:’’’’’’’’’’’’’’’N Alle Objekte, die nur wenig angesprochen werden, also nur wenige ZeilennumŻN mern in der Referenzliste besitzen, sind verdŁchtig (Ausnahmen: importierte. Prozeduren, LET-Objekte u.a.m.). ’’’’’’’’’’referencer - Kommandos’’’’’’’’N #on("b")#PROC referencer (TEXT CONST check file, dump file) #off("b")# ’’’’^ ŲberprŪft 'check file'. In 'dump file' steht nach Abschluū die Referenzliste. ’’’’’’’’’’’’’6.3 Rechnen im Editor ’’’’’’’NDas Programm TeCal ermŚglicht einfache Rechnungen (Łhnlich wie mit einem TaŻ’’^schenrechner) unter der Benutzung des Editors. Gleichzeitig stehen dem Benutzer’’’’’’’’’’’’’’’^aber alle FŁhigkeiten des Editors zur VerfŪgung. TeCal ermŚglicht Rechnungen auf’’’’’’’’’’’’’’Neinfache Weise zu erstellen oder Tabellenspalten zu berechnen. Zur Benutzung ’>mŪssen 'TeCal' und 'TeCal Auskunft' insertiert werden. ’’’’’’’NTeCal wird aus dem Editor heraus durch 'ESCßt' oder durch das Editor-Kommando  tecal ’’’’’’’’’’’’’^aktiviert. Dadurch wird in der untersten Zeile des Bildschirms eine Informationszeile’’’’’’’’’^aufgebaut, in der die (Zwischen-) Ergebnisse einer Rechnung zur Kontrolle festŻ’’’’’’’’’’’’’’’gehalten werden. ’’’’’’’’’’’’’^Wenn TeCal insertiert ist, kann die Taschenrechnerfunktion jederzeit durch ’’’’’’’’’’^aufgerufen werden. Aus der editierten Datei werden Werte mit gelesen,’’’’’’’’’’’’’’’^durch <+> (bzw. -,*,/) verknŪpft und mit an die aktuelle CursorŻ’’’’’’’’’’’’’’position geschrieben werden. ’^Der von TeCal errechnete Wert wird durch derart ausgegeben, daū an der’’’’’’’’’’’’’’^Stelle an der der Cursor steht die letzte Stelle vor dem Dezimalpunkt geschrieben’’’’’’’’’’’’’>Die Eingabe von Klammern geschieht durch <(> <)>. NDurch die Hilfsfunktion lassen sich die TeCal Funktionen auflisten. ^Der Prozentoperator <%> erlaubt einfache Rechnungen der Form: 'zahl' <+>’’’’’’’’’’ <%> <=> . ’’’’’’’’^Derartige Folgen kŚnnen natŪrlich mit der bekannten Editor-Lernfunktion auch geŻ’’’’’’’’’’’’’’Nlernt werden, so daū sich z.B. die Mehrwertsteuerberechnung auf wenige Tasten nSpalten kŚnnen summiert werden, indem auf der #on("u")#untersten#off("u")# Zahl einer Spalte ’’’’’’’’Neingegeben wird. Daraufhin werden alle darŪberliegende Zahlen addiert, bis ein^Zeichen auftritt, das nicht in einer Zahl auftritt (Leerzeichen stŚren nicht!). ’’’’’’’’’’’’’’N____________________________________________________________________________ ’ ............ ’’’’’’’’ 55.00 ’’’’’’’’’ 66.99 ’’’’’’’’’ 123.45 ’’’’’’’’’ 99.99 ’’’’’’’’’ 9876.54 ’’’’’’’’’ ........... ’’’’’’’’’> Anzeige: 0.00 14.00% Memory: 0.00 ’’’’’’’’N____________________________________________________________________________ ’TeCal Prozeduren ’’’’’’’’’’’’’N #on("b")#evaluate (TEXT CONST zeile, INT CONST von) #off("b")# ’’’’’’’’’’’’> Ausdruck 'zeile' ab der Stelle 'von' berechnen. ’’’’’’’’’’’> #on("b")#evaluate (TEXT CONST zeile) #off("b")# ’’’’’’’’’’’. Ausdruck 'zeile' ab Stelle 1 berechnen. ’’’'kommastellen' ’’’’’’’’’’’’’’’> #on("b")#kommastellen (INT CONST stellen) #______________________________ ’>Nach Eingabe von wird das Programm erneut Ūbersetzt. ’’’’’N____________________________________________________________________________ ’N Keine Fehler gefunden, 136 B Code, 82 B Paketdaten generiert ’’’’’’’’’’’’’’’> ******* ENDE DER UEBERSETZUNG ******* ’’’’’’’’’’’’’’’ 2 Zahlen eingeben: _ ’’’’’’’’N____________________________________________________________________________ ’NDas Programm war jetzt fehlerfrei. Nach der Ųbersetzung wurde die AusfŪhrung’’>gestartet. Nun kŚnnen Beispiele getestet werden. ’’’’’’’’’’’’’N____________________________________________________________________________ ’ 2 Zahlen eingeben: 125 250 ’’> der grŚūte gemeinsame Teiler von 125 und 225 ist 25 ’’’’’’’’’ weitertesten (j/n) ? ’’’’’’’’N____________________________________________________________________________ ’^Beantwortet man die Frage mit , so wird die AusfŪhrung des Programms beendet. ’’’’’’’’’’’’’N____________________________________________________________________________ ’ gib kommando : ’’’’’’’’’’’’N____________________________________________________________________________ ’^Um die Arbeit in der Task zu beenden, geben Sie auch an dieser Stelle ’’’’’’’’’’’’’’’(nacheinander!) ein. ’’’’’’’’’NNach Verlassen der Task ist wiederum die EUMEL-Tapete auf dem Bildschirm. Jede^weitere Aktion wird wiederum von hier aus durch begonnen. Insbesondere vor’’’’’’’’’’’’’’’^dem #ib#Ausschalten des GerŁts#ie# muū nach eine Task des priviliegierten SystemŻ’’’’’’’’^zweigs (oft: '#ib#shutup#ie#') mit an das Terminal gekoppelt werden, in der das’’’’’.Kommando 'shutup' gegeben wird. ’’’’’’’’’’’’’’programmierhandbuch.1’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’`@’’@’’’’’’’’’’’’’’23.02.91’’’’’’’’’’’’’’’’’’’’’’’’’’’programmierhandbuch.2a’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ß’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’‚a€ė’’74 ’’’’  8M’’’’b’ kap2a’’’’’’’’’’’’’’’’’’’’’7’’’’’’’’’’’’’’’’’’a€’B’’’’’’’’’’’’’’’’’’’±€’/’’’’’’’’’’’’’’’’’’’’’ #headeven# ’’’’’’’’’’ń€’’’’’’’’’’’’’’’’’’’’!’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #headodd# ’’’’’’’’’’’q’’’’’’’’’’’’’’’’’’’’‘’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomeven# ’’’’’’’’ၒE’’’’’’’’’’’’’’’’’’’1‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ #bottomodd# ’’’’’’’’’Q‚’E’’’’’’’’’’’’’’’’’’’”‚’’’’’’’’’’’’’’’’’’’’’’#end# ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’т’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ƒ’L’’’’’’’’’’’’’’’’’’’Qƒ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qƒ’!’’’’’’’’’’’’’’’’’’’”ƒ’P’’’’’’’’’’’’’’’’’’’„’R’’’’’’’’’’’’’’’’’’’a„’Q’’’’’’’’’’’’’’’’’’’Į„’L’’’’’’’’’’’’’’’’’’’…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!…’,’’’’’’’’’’’’’’’’’’’Q…’R’’’’’’’’’’’’’’’’’’’±…’N’’’’’’’’’’’’’’’’’’’†’O’’’’’’’’’’’’’’’’’’’a†’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±†’E’’’’’’’’’’’’’’’’’’’’’ eingesetzt: ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‡’ ’’’’’’’’’’’’’’’’’’’1‡’’’’’’’’’’’’’’’’’’’’Q‡’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q‡’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘‡’Q’’’’’’’’’’’’’’’’’’’ń‡’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ˆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aˆ’’’’’’’’’’’’’’’’’’’’aˆ’’’’’’’’’’’’’’’’’’’’qˆ’’’’’’’’’’’’’’’’’’’’‘ˆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ˆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įˆ’L’’’’’’’’’’’’’’’’’’’‰’F’’’’’’’’’’’’’’’’’’’a‰’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’VAR ’’’’’’’’’’’’’’’’’’’INT ’’’’’’’’’’’’’’’’’’’WHILE ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”‰’R’’’’’’’’’’’’’’’’’’’Š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŠ’I’’’’’’’’’’’’’’’’’’’‘Š’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ኒ0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!‹’O’’’’’’’’’’’’’’’’’’’‹’T’’’’’’’’’’’’’’’’’’’į‹’O’’’’’’’’’’’’’’’’’’’AŒ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŒ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±Œ’’’’’’’’’’’’’’’’’’’’’’ x koordinate ’’’’’’’’’’nr 1 ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ь’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’x*1 ’’’’’’’’’’’’’’’’’’’ 1 exemplar ’’’’’’’’’’’’Nr 1 ’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1’N’’’’’’’’’’’’’’’’’’’’G’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’э’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ž’*’’’’’’’’’’’’’’’’’’’1Ž’;’’’’’’’’’’’’’’’’’’’qŽ’S’’’’’’’’’’’’’’’’’’’ю’A’’’’’’’’’’’’’’’’’’’!’$’’’’’’’’’’’’’’’’’’’Q’Q’’’’’’’’’’’’’’’’’’’±’’’’’’’’’’’’’’’’’’’’я’;’’’’’’’’’’’’’’’’’’’’D’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’E’’’’’’’’’’’’’’’’’’’ń’5’’’’’’’’’’’’’’’’’’’1‘’P’’’’’’’’’’’’’’’’’’’‘‘’’’’’’’’’’’’’’’’’’’’±‘’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ё’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń‘’N’’’’’’’’’’’’’’’’’’’A’’N’’’’’’’’’’’’’’’’’’’‘’’L’’’’’’’’’’’’’’’’’’’į’’Q’’’’’’’’’’’’’’’’’’’A“’P’’’’’’’’’’’’’’’’’’’”“’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń“’J’’’’’’’’’’’’’’’’’’’A”’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’q”’’’’’’’’’’’’’’’’’’’’‘”’’’’’’’’’’’’’’’’’’’’±”’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’є’A’’’’’’’’’’’’’’’’’’’!•’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a•’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’•’I’’’’’’’’’’’’’’’’’’’ѕ’H’’’’’’’’’’’’’’’’’’’off("b")# ’’’’’’N Berechnungen auf 'stellen' Zahlen hinter dem Komma einstellen. ’’’’’’’’’’’’> #on("b")#PROC merke (INT CONST zahl)#off("b")# ’’’’’’’’’’’’> Integer 'zahl' im Merkregister abspeichern. ’’’’’’’’’’’’’’’> #on("b")#PROC merke (REAL CONST zahl)#off("b")# ’’’’’’’’’’’. Real 'zahl' im Merkregister abspeichern. ’’'prozentsatz' > #on("b")#PROC prozentsatz (INT CONST zahl) #off("b")# ’’’’’^ Prozentsatz von 'zahl' Prozent einstellen. Der Wert wird automatisch konvertiert. ’’’’’’’’’> #on("b")#PROC prozentsatz (REAL CONST zahl) #off("b")# ’’’’. Prozentsatz von 'zahl' Prozent einstellen. > #on("b")#PROC tecal (FILE VAR f) #off("b")# ’’’’’’’’’’’’’’’N Datei 'f', die mit 'sequential file' assoziiert ist, mit TeCal editieren. ’> #on("b")#PROC tecal (TEXT VAR datei) #off("b")# ’’’’’’’’’’’. 'datei' mit TeCal editieren. ’’’’’’’’’’’’’’. #on("b")#PROC tecal #off("b")# ’’’’’’’’’’’’> Zuletzt editierte Datei mit TeCal editieren. ’’’’’’’’’’’’’’'tecalauskunft' ’’’’’’’’’’’’’’. #on("b")#PROC tecalauskunft #off("b")# ’’’’ Auskunft zeigen. ’’’’’’’’’’N #on("b")#PROC tecalauskunft (TEXT CONST zeichen) #off("b")# ’’’’’’’’’’’’’’’. Auskunft zu 'zeichen' zeigen. ’’’’’’’’’’’’’programmierhandbuch.6’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’@@’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!–’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A–’O’’’’’’’’’’’’’’’’’’’”–’N’’’’’’’’’’’’’’’’’’’ń–’R’’’’’’’’’’’’’’’’’’’Q—’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘—’G’’’’’’’’’’’’’’’’’’’į—’N’’’’’’’’’’’’’’’’’’’1˜’M’’’’’’’’’’’’’’’’’’’˜’P’’’’’’’’’’’’’’’’’’’ᘒO’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’A™’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a™’O’’’’’’’’’’’’’’’’’’’Į™’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į™’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’š’’’’’’’’’’’’’’’’’’’’1š’’’’’’’’’’’’’’’’’’’’Qš’$’’’’’’’’’’’’’’’’’’’š’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”š’K’’’’’’’’’’’’’’’’’’’ńš’P’’’’’’’’’’’’’’’’’’’Q›’N’’’’’’’’’’’’’’’’’’’”›’T’’’’’’’’’’’’’’’’’’’œ’N’’’’’’’’’’’’’’’’’’’Qœ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qœ’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”œ’N’’’’’’’’’’’’’’’’’’’ńœ’Q’’’’’’’’’’’’’’’’’’’Q’Q’’’’’’’’’’’’’’’’’’’±’N’’’’’’’’’’’’’’’’’’’ž’Q’’’’’’’’’’’’’’’’’’’až’Q’’’’’’’’’’’’’’’’’’’Įž’L’’’’’’’’’’’’’’’’’’’Ÿ’S’’’’’’’’’’’’’’’’’’’qŸ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ INT-Denoter: ’’’’’’’’‘Ÿ’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’17 ’’’’’’’’’’’’’’’’’’’’007 ’’’’’’’’’’’’’’’’’’’32767 ’’’’’’’’’’’’’’’’’0 ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’џ’N’’’’’’’’’’’’’’’’’’’! ’L’’’’’’’’’’’’’’’’’’’q ’P’’’’’’’’’’’’’’’’’’’Ń ’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’’’’’’’’’’’’’’’’’’’’”’’’’’’’’’’’’’’’’’’’’1”’N’’’’’’’’’’’’’’’’’’’’’werden. ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ 0.314159 ’’’’’’’’’’’’’’17.28 ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”’P’’’’’’’’’’’’’’’’’’’į”’*’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’Q’’’’’’’’’’’’’’’’’’’q¢’P’’’’’’’’’’’’’’’’’’’Ń¢’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’3.0 e5 ’’’’’’’’’’’’’’’’3.0e-5 ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń¢’b’’’’’’’’’’’’’’’’’’’a£’R’’’’’’’’’’’’’’’’’’’Į£’f’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1¤’’’’’’’’’’’’’’’’’’’’A¤’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¤’’’’’’’’’’’’’’’’’’’’”¤’;’’’’’’’’’’’’’’’’’’’’’"" ’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ᤒT’’’’’’’’’’’’’’’’’’’A„’P’’’’’’’’’’’’’’’’’’’”„’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į„’’’’’’’’’’’’’’’’’’’’¦’+’’’’’’’’’’’’’’’’’’’’’"""" ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1¦’I’’’’’’’’’’’’’’’’’’’¦’N’’’’’’’’’’’’’’’’’’’Ѧ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ "da"251"" ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń¦’O’’’’’’’’’’’’’’’’’’’Q§’N’’’’’’’’’’’’’’’’’’’’’ ordnet ist. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”§’’’’’’’’’’’’’’’’’’’’±§’’’’’’’’’’’’’’’’’’’’į§’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ø’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AØ’K’’’’’’’’’’’’’’’’’’’‘Ø’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ᨒ/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!©’_’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘©’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń©’M’’’’’’’’’’’’’’’’’’’!Ŗ’A’’’’’’’’’’’’’’’’’’’qŖ’’’’’’’’’’’’’’’’’’’’‘Ŗ’’’’’’’’’’’’’’’’’’’’±Ŗ’’’’’’’’’’’’’’’’’’’’ŃŖ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!«’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’a«’Q’’’’’’’’’’’’’’’’’’’Į«’*’’’’’’’’’’’’’’’’’’’ń«’N’’’’’’’’’’’’’’’’’’’A¬’J’’’’’’’’’’’’’’’’’’’‘¬’O’’’’’’’’’’’’’’’’’’’ń¬’M’’’’’’’’’’’’’’’’’’’A­’M’’’’’’’’’’’’’’’’’’’‘­’’’’’’’’’’’’’’’’’’’’±­’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’®’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!®’J’’’’’’’’’’’’’’’’’’’q®’P’’’’’’’’’’’’’’’’’’’Ń®’Q’’’’’’’’’’’’’’’’’’’1Æ’M’’’’’’’’’’’’’’’’’’’Æ’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮÆ’O’’’’’’’’’’’’’’’’’’’’’werden: ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!°’e’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘°’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į°’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±’H’’’’’’’’’’’’’’’’’’’Q±’P’’’’’’’’’’’’’’’’’’’±±’R’’’’’’’’’’’’’’’’’’’²’L’’’’’’’’’’’’’’’’’’’a²’T’’’’’’’’’’’’’’’’’’’Į²’Q’’’’’’’’’’’’’’’’’’’!³’S’’’’’’’’’’’’’’’’’’’³’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”³’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ - Datentyp ’’’’’’’’’į³’o’’’’’’’’’’’’’’’’’’’a“’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’“’M’’’’’’’’’’’’’’’’’’’Ń“’A’’’’’’’’’’’’’’’’’’’!µ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aµ’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘µ’O’’’’’’’’’’’’’’’’’’’ńµ’O’’’’’’’’’’’’’’’’’’’Q¶’L’’’’’’’’’’’’’’’’’’’”¶’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į¶’M’’’’’’’’’’’’’’’’’’’·’A’’’’’’’’’’’’’’’’’’’a·’+’’’’’’’’’’’’’’’’’’’‘·’’’’’’’’’’’’’’’’’’’’±·’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ń·’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ø’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aø’M’’’’’’’’’’’’’’’’’’’‘ø’Q’’’’’’’’’’’’’’’’’’’ńø’W’’’’’’’’’’’’’’’’’’’Q¹’S’’’’’’’’’’’’’’’’’’’±¹’M’’’’’’’’’’’’’’’’’’’ŗ’X’’’’’’’’’’’’’’’’’’’aŗ’U’’’’’’’’’’’’’’’’’’’Įŗ’S’’’’’’’’’’’’’’’’’’’!»’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Q»’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ - Datentyp ’’’’’’’’’‘»’o’’’’’’’’’’’’’’’’’’’¼’’’’’’’’’’’’’’’’’’’’1¼’c’’’’’’’’’’’’’’’’’’’”¼’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń¼’M’’’’’’’’’’’’’’’’’’’A½’A’’’’’’’’’’’’’’’’’’’‘½’*’’’’’’’’’’’’’’’’’’’Į½’’’’’’’’’’’’’’’’’’’’į½’0’’’’’’’’’’’’’’’’’’’!¾’$’’’’’’’’’’’’’’’’’’’Q¾’M’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”¾’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į¾’Q’’’’’’’’’’’’’’’’’’’’’ von ELAN. ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!æ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qæ’4’’’’’’’’’’’’’’’’’’’‘æ’’’’’’’’’’’’’’’’’’’’±æ’’’’’’’’’’’’’’’’’’’’Ńæ’’’’’’’’’’’’’’’’’’’’ńæ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ą’:’’’’’’’’’’’’’’’’’’’’’ - Folge ’’’’’’’’’QĄ’’’’’’’’’’’’’’’’’’’’aĄ’’’’’’’’’’’’’’’’’’’’qĄ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ą’8’’’’’’’’’’’’’’’’’’’ŃĄ’’’’’’’’’’’’’’’’’’’’ńĄ’’’’’’’’’’’’’’’’’’’’Į’’’’’’’’’’’’’’’’’’’’1Į’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’QĮ’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Į’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Į’J’’’’’’’’’’’’’’’’’’’ńĮ’N’’’’’’’’’’’’’’’’’’’AĀ’J’’’’’’’’’’’’’’’’’’’’’ liefert. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Operatoren ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ā’L’’’’’’’’’’’’’’’’’’’įĀ’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ć’P’’’’’’’’’’’’’’’’’’’Ć’I’’’’’’’’’’’’’’’’’’’ŃĆ’O’’’’’’’’’’’’’’’’’’’1Ä’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aÄ’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Ä’-’’’’’’’’’’’’’’’’’’’ĮÄ’M’’’’’’’’’’’’’’’’’’’Å’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ - a ’’’’’’’’’’’’’’’’ NOT x ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AÅ’N’’’’’’’’’’’’’’’’’’’‘Å’*’’’’’’’’’’’’’’’’’’’ĮÅ’O’’’’’’’’’’’’’’’’’’’’’ sein. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ę’,’’’’’’’’’’’’’’’’’’’QĘ’L’’’’’’’’’’’’’’’’’’’”Ę’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃĘ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ a + b ’’’’’’’’’’’’’’ a - b ’’’’’’’’’’’’’’ a * b ’’’’’’’’’’’’’’ a DIV b ’’’’’’’’’’’’ a ** b ’’’’’’’’’’’’’ x < y ’’’’’’’’’’’’’’ x <> y ’’’’’’’’’’’’’ x AND y ’’’’’’’’’’’’ x OR y ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įĘ’Q’’’’’’’’’’’’’’’’’’’AĒ’Z’’’’’’’’’’’’’’’’’’’”Ē’B’’’’’’’’’’’’’’’’’’’ńĒ’M’’’’’’’’’’’’’’’’’’’AČ’S’’’’’’’’’’’’’’’’’’’”Č’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃČ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńČ’M’’’’’’’’’’’’’’’’’’’AÉ’M’’’’’’’’’’’’’’’’’’’‘É’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮÉ’’’’’’’’’’’’’’’’’’’’’’- a * b ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŃÉ’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ź’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AŹ’R’’’’’’’’’’’’’’’’’’’”Ź’S’’’’’’’’’’’’’’’’’’’Ė’Q’’’’’’’’’’’’’’’’’’’aĖ’O’’’’’’’’’’’’’’’’’’’ĮĖ’^’’’’’’’’’’’’’’’’’’’!Ģ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AĢ’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qĢ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮĢ’O’’’’’’’’’’’’’’’’’’’!Ķ’N’’’’’’’’’’’’’’’’’’’qĶ’N’’’’’’’’’’’’’’’’’’’ĮĶ’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńĶ’/’’’’’’’’’’’’’’’’’’’1Ī’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’AĪ’5’’’’’’’’’’’’’’’’’’’Ī’’’’’’’’’’’’’’’’’’’’”Ī’(’’’’’’’’’’’’’’’’’’’ŃĪ’’’’’’’’’’’’’’’’’’’’ńĪ’-’’’’’’’’’’’’’’’’’’’!Ļ’’’’’’’’’’’’’’’’’’’’AĻ’’’’’’’’’’’’’’’’’’’’aĻ’L’’’’’’’’’’’’’’’’’’’±Ļ’/’’’’’’’’’’’’’’’’’’’ńĻ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Š’Q’’’’’’’’’’’’’’’’’’’qŠ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Š’P’’’’’’’’’’’’’’’’’’’Ń’U’’’’’’’’’’’’’’’’’’’aŃ’S’’’’’’’’’’’’’’’’’’’’’ Rechnen. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiel: ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĮŃ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’a) -2 ’’’’’’’’’’’’’’’’’ b) 2 ** 3 ’’’’’’’’’’’įŃ’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ņ’P’’’’’’’’’’’’’’’’’’’Ņ’O’’’’’’’’’’’’’’’’’’’’’den. ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įŅ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ó’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ó’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qÓ’T’’’’’’’’’’’’’’’’’’’ŃÓ’L’’’’’’’’’’’’’’’’’’’!Ō’O’’’’’’’’’’’’’’’’’’’Ō’R’’’’’’’’’’’’’’’’’’’įŌ’Q’’’’’’’’’’’’’’’’’’’AÕ’@’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘Õ’M’’’’’’’’’’’’’’’’’’’įÕ’A’’’’’’’’’’’’’’’’’’’’’ a := b; ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1Ö’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ö’S’’’’’’’’’’’’’’’’’’’įÖ’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1×’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’×’M’’’’’’’’’’’’’’’’’’’Ń×’A’’’’’’’’’’’’’’’’’’’’’ a := b + c; ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ų’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŲ’N’’’’’’’’’’’’’’’’’’’ĮŲ’[’’’’’’’’’’’’’’’’’’’!Ł’P’’’’’’’’’’’’’’’’’’’Ł’V’’’’’’’’’’’’’’’’’’’’’ ren hat. ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įŁ’Q’’’’’’’’’’’’’’’’’’’AŚ’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ś’M’’’’’’’’’’’’’’’’’’’ŃŚ’A’’’’’’’’’’’’’’’’’’’’’ a := a + 1; ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!Ū’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qŪ’R’’’’’’’’’’’’’’’’’’’ŃŪ’O’’’’’’’’’’’’’’’’’’’1Ü’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ü’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”Ü’N’’’’’’’’’’’’’’’’’’’ńÜ’N’’’’’’’’’’’’’’’’’’’AŻ’J’’’’’’’’’’’’’’’’’’’‘Ż’M’’’’’’’’’’’’’’’’’’’įŻ’M’’’’’’’’’’’’’’’’’’’1Ž’K’’’’’’’’’’’’’’’’’’’Ž’Q’’’’’’’’’’’’’’’’’’’įŽ’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ß’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ß’O’’’’’’’’’’’’’’’’’’’‘ß’Q’’’’’’’’’’’’’’’’’’’ńß’O’’’’’’’’’’’’’’’’’’’Qą’I’’’’’’’’’’’’’’’’’’’”ą’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńą’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’]’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qį’M’’’’’’’’’’’’’’’’’’’Įį’A’’’’’’’’’’’’’’’’’’’’’ pause; ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’N’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aā’A’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ā’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńā’y’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qć’R’’’’’’’’’’’’’’’’’’’Ńć’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ä’M’’’’’’’’’’’’’’’’’’’Qä’A’’’’’’’’’’’’’’’’’’’’’ pause (10); ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”ä’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńä’O’’’’’’’’’’’’’’’’’’’Qå’M’’’’’’’’’’’’’’’’’’’”å’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńå’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ę’P’’’’’’’’’’’’’’’’’’’‘ę’M’’’’’’’’’’’’’’’’’’’įę’K’’’’’’’’’’’’’’’’’’’1ē’'’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aē’M’’’’’’’’’’’’’’’’’’’±ē’A’’’’’’’’’’’’’’’’’’’č’’’’’’’’’’’’’’’’’’’’!č’’’’’’’’’’’’’’’’’’’’Ač’’’’’’’’’’’’’’’’’’’’ač’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”č’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńč’M’’’’’’’’’’’’’’’’’’’Aé’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’”é’N’’’’’’’’’’’’’’’’’’’ńé’O’’’’’’’’’’’’’’’’’’’Qź’O’’’’’’’’’’’’’’’’’’’±ź’M’’’’’’’’’’’’’’’’’’’ė’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qė’Q’’’’’’’’’’’’’’’’’’’±ė’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ģ’¬’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’±ģ’Q’’’’’’’’’’’’’’’’’’’ķ’X’’’’’’’’’’’’’’’’’’’qķ’P’’’’’’’’’’’’’’’’’’’Ńķ’N’’’’’’’’’’’’’’’’’’’!ī’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aī’M’’’’’’’’’’’’’’’’’’’±ī’A’’’’’’’’’’’’’’’’’’’ļ’+’’’’’’’’’’’’’’’’’’’1ļ’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qļ’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įļ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’š’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aš’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’aš’L’’’’’’’’’’’’’’’’’’’±š’M’’’’’’’’’’’’’’’’’’’ń’N’’’’’’’’’’’’’’’’’’’Qń’P’’’’’’’’’’’’’’’’’’’±ń’O’’’’’’’’’’’’’’’’’’’ņ’#’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Aņ’M’’’’’’’’’’’’’’’’’’’‘ņ’A’’’’’’’’’’’’’’’’’’’įņ’’’’’’’’’’’’’’’’’’’’’’ put (1); ’’’’’’’’’’’ó’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’!ó’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qó’P’’’’’’’’’’’’’’’’’’’’’aus) ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńó’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ńó’N’’’’’’’’’’’’’’’’’’’Aō’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ō’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ńō’3’’’’’’’’’’’’’’’’’’’õ’8’’’’’’’’’’’’’’’’’’’ööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööQõ’8’’’’’’’’’’’’’’’’’’’‘õ’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Įõ’Č’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‘ö’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įö’M’’’’’’’’’’’’’’’’’’’1÷’A’’’’’’’’’’’’’’’’’’’’’ INT VAR a; ’’’’’’’’’’’ get (a); ’’’’’’’’’’’’’ IF a < 0 ’’’’’’’’’’’÷’’’’’’’’’’’’’’’’’’’’’’ END IF; ’’’’’’’’’’’’’’ put (a) ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’”÷’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ń÷’L’’’’’’’’’’’’’’’’’’’Aų’K’’’’’’’’’’’’’’’’’’’‘ų’R’’’’’’’’’’’’’’’’’’’ńų’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ał’M’’’’’’’’’’’’’’’’’’’‘ł’A’’’’’’’’’’’’’’’’’’’’’ INT VAR a; ’’’’’’’’’’’ get (a); ’’’’’’’’’’’’’ IF a < 0 ’’’’’’’’’’’įł’’’’’’’’’’’’’’’’’’’’ś’’’’’’’’’’’’’’’’’’’’’’ END IF ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’!ś’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’qś’L’’’’’’’’’’’’’’’’’’’Įś’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ū’L’’’’’’’’’’’’’’’’’’’aū’I’’’’’’’’’’’’’’’’’’’±ū’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Abfragekette ’’’’’’’’ńū’O’’’’’’’’’’’’’’’’’’’Qü’&’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Anstatt ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ü’M’’’’’’’’’’’’’’’’’’’Ńü’A’’’’’’’’’’’’’’’’’’’!ż’’’’’’’’’’’’’’’’’’’’Aż’’’’’’’’’’’’’’’’’’’’aż’’’’’’’’’’’’’’’’’’’’ż’’’’’’’’’’’’’’’’’’’’”ż’’’’’’’’’’’’’’’’’’’’Įż’’’’’’’’’’’’’’’’’’’’’’ END IF; ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’įż’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1ž’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Qž’M’’’’’’’’’’’’’’’’’’’”ž’A’’’’’’’’’’’’’’’’’’’ńž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’’’Q’’’’’’’’’’’’’’’’’’’’’q’’’’’’’’’’’’’’’’’’’’’’’ END IF; ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’‘’’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ schreiben. ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’į’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’P’’’’’’’’’’’’’’’’’’’b’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’c’’’’’’’’’’’’’’’’’’’B’z’’’’’’’’’’’’’’’’’’’Ā’z’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’¢’z’’’’’’’’’’’’’’’’’’’"’=’’’’’’’’’’’’’’’’’’’b’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’M’’’’’’’’’’’’’’’’’’’ņ’J’’’’’’’’’’’’’’’’’’’B’-’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’M’’’’’’’’’’’’’’’’’’’Ā’A’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’Ņ’!’’’’’’’’’’’’’’’’’’’’+’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’’’ END SELECT; ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’R’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’#’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’P’’’’’’’’’’’’’’’’’’’¢’K’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’M’’’’’’’’’’’’’’’’’’’B’A’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²’’’’’’’’’’’’’’’’’’’’Ņ’’’’’’’’’’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2 ’’’’’’’’’’’’’’’’’’’’R ’#’’’’’’’’’’’’’’’’’’’‚ ’’’’’’’’’’’’’’’’’’’’’’ END SELECT; ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’¢ ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’N’’’’’’’’’’’’’’’’’’’b ’N’’’’’’’’’’’’’’’’’’’² ’H’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ ’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2 ’’’’’’’’’’’’’’’’’’’’R ’’’’’’’’’’’’’’’’’’’’r ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’² ’’’’’’’’’’’’’’’’’’’’Ņ ’W’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2 ’-’’’’’’’’’’’’’’’’’’’’’ Abschnitt ’’’’’’’’b ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢ ’¹’’’’’’’’’’’’’’’’’’’b ’T’’’’’’’’’’’’’’’’’’’Ā ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā ’M’’’’’’’’’’’’’’’’’’’2’A’’’’’’’’’’’’’’’’’’’’’ break; ’’’’’’’’’’’’’’’ REPEAT ’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ END REPEAT ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’²’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’L’’’’’’’’’’’’’’’’’’’R’0’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’²’Q’’’’’’’’’’’’’’’’’’’’’ geschrieben. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’c’’’’’’’’’’’’’’’’’’’’’ Abschnitt ’’’’’’’’‚’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’O’’’’’’’’’’’’’’’’’’’"’Q’’’’’’’’’’’’’’’’’’’‚’T’’’’’’’’’’’’’’’’’’’ā’S’’’’’’’’’’’’’’’’’’’B’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’’’’’’’’’’’’’’’’’’’’¢’T’’’’’’’’’’’’’’’’’’’’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’-’’’’’’’’’’’’’’’’’’’’’ Abschnitt ’’’’’’’’‚’g’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’R’’’’’’’’’’’’’’’’’’’R’L’’’’’’’’’’’’’’’’’’’¢’T’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’R’’’’’’’’’’’’’’’’’’’Ņ’M’’’’’’’’’’’’’’’’’’’"’?’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’M’’’’’’’’’’’’’’’’’’’Ā’A’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ REPEAT ’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’²’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ZŁhlschleife ’’’’’’’’‚’O’’’’’’’’’’’’’’’’’’’’’ bekannt ist. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā’Ī’’’’’’’’’’’’’’’’’’’’’ Abschnitt ’’’’’’’’²’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’S’’’’’’’’’’’’’’’’’’’R’U’’’’’’’’’’’’’’’’’’’²’v’’’’’’’’’’’’’’’’’’’2’v’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’Š’’’’’’’’’’’’’’’’’’’’’ Abschnitt ’’’’’’’’’’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ’O’’’’’’’’’’’’’’’’’’’2’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r’M’’’’’’’’’’’’’’’’’’’Ā’A’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’2’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’’’ END REPEAT ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’r’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā’J’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’”’’’’’’’’’’’’’’’’’’’ ’c’’’’’’’’’’’’’’’’’’’’’ Abschnitt ’’’’’’’’r ’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’² ’Ī’’’’’’’’’’’’’’’’’’’’’ Abschnitt ’’’’’’’’‚!’g’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ!’c’’’’’’’’’’’’’’’’’’’’’ Abschnitt ’’’’’’’’b"’g’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ"’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’#’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö2#’N’’’’’’’’’’’’’’’’’’’‚#’N’’’’’’’’’’’’’’’’’’’Ņ#’L’’’’’’’’’’’’’’’’’’’"$’K’’’’’’’’’’’’’’’’’’’r$’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢$’L’’’’’’’’’’’’’’’’’’’ņ$’N’’’’’’’’’’’’’’’’’’’B%’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r%’-’’’’’’’’’’’’’’’’’’’¢%’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā%’M’’’’’’’’’’’’’’’’’’’2&’A’’’’’’’’’’’’’’’’’’’‚&’’’’’’’’’’’’’’’’’’’’¢&’’’’’’’’’’’’’’’’’’’’Ā&’’’’’’’’’’’’’’’’’’’’ā&’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’'’’’’’’’’’’’’’’’’’’’’’’ get (a); ’’’’’’’’’’ get (b). ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"'’’’’’’’’’’’’’’’’’’’’’’ x := a; ’’’’’’’’’’’ a := b; ’’’’’’’’’’’ b := x. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B'’’’’’’’’’’’’’’’’’’’’’’ put (a); ’’’’’’’’’’ put (b). ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’b'’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²'’R’’’’’’’’’’’’’’’’’’’(’P’’’’’’’’’’’’’’’’’’’r(’L’’’’’’’’’’’’’’’’’’’Ā(’P’’’’’’’’’’’’’’’’’’’")’L’’’’’’’’’’’’’’’’’’’’’ Refinements. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r)’!’’’’’’’’’’’’’’’’’’’¢)’L’’’’’’’’’’’’’’’’’’’ņ)’O’’’’’’’’’’’’’’’’’’’R*’M’’’’’’’’’’’’’’’’’’’¢*’M’’’’’’’’’’’’’’’’’’’ņ*’L’’’’’’’’’’’’’’’’’’’B+’R’’’’’’’’’’’’’’’’’’’¢+’L’’’’’’’’’’’’’’’’’’’ņ+’Q’’’’’’’’’’’’’’’’’’’R,’L’’’’’’’’’’’’’’’’’’’¢,’V’’’’’’’’’’’’’’’’’’’-’T’’’’’’’’’’’’’’’’’’’b-’M’’’’’’’’’’’’’’’’’’’²-’K’’’’’’’’’’’’’’’’’’’.’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B.’C’’’’’’’’’’’’’’’’’’’’.’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’².’’’’’’’’’’’’’’’’’’’’ā.’P’’’’’’’’’’’’’’’’’’’’’ barkeit ’’’’’’’’’’B/’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r/’’’’’’’’’’’’’’’’’’’’’/’Q’’’’’’’’’’’’’’’’’’’ņ/’O’’’’’’’’’’’’’’’’’’’R0’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚0’M’’’’’’’’’’’’’’’’’’’Ņ0’A’’’’’’’’’’’’’’’’’’’"1’!’’’’’’’’’’’’’’’’’’’R1’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ resultat: ’’’’’’’’’’r1’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’1’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā1’L’’’’’’’’’’’’’’’’’’’’’ben. ’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’22’’’’’’’’’’’’’’’’’’’’R2’O’’’’’’’’’’’’’’’’’’’²2’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā2’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’3’O’’’’’’’’’’’’’’’’’’’b3’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’3’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ3’`’’’’’’’’’’’’’’’’’’’B4’’’’’’’’’’’’’’’’’’’’b4’<’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢4’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ4’M’’’’’’’’’’’’’’’’’’’B5’A’’’’’’’’’’’’’’’’’’’’5’:’’’’’’’’’’’’’’’’’’’Ņ5’’’’’’’’’’’’’’’’’’’’ņ5’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’26’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚6’’’’’’’’’’’’’’’’’’’’¢6’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ6’G’’’’’’’’’’’’’’’’’’’"7’’’’’’’’’’’’’’’’’’’’B7’K’’’’’’’’’’’’’’’’’’’’7’J’’’’’’’’’’’’’’’’’’’ā7’Q’’’’’’’’’’’’’’’’’’’B8’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚8’O’’’’’’’’’’’’’’’’’’’ā8’C’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’29’M’’’’’’’’’’’’’’’’’’’‚9’A’’’’’’’’’’’’’’’’’’’’’ IF a > b ’’’’’’’’’’’Ņ9’’’’’’’’’’’’’’’’’’’’’’ END IF; ’’’’’’’’’’’’’’ put (a); ’’’’’’’’’’’’’ put (b); ’’’’’’’’’’’ņ9’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’:’’’’’’’’’’’’’’’’’’’’2:’’’’’’’’’’’’’’’’’’’’’’ a := b; ’’’’’’’’’’’ b := x. ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R:’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢:’M’’’’’’’’’’’’’’’’’’’ņ:’A’’’’’’’’’’’’’’’’’’’B;’’’’’’’’’’’’’’’’’’’’b;’’’’’’’’’’’’’’’’’’’’’’ a := b; ’’’’’’’’’’’ b := x ’’’’’’’’’’‚;’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ IF a > b ’’’’’’’’’’’¢;’’’’’’’’’’’’’’’’’’’’’’ END IF; ’’’’’’’’’’’’’’ put (a); ’’’’’’’’’’’’’ put (b); ’’’’’’’’’’’Ā;’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā;’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2<’M’’’’’’’’’’’’’’’’’’’‚<’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢<’L’’’’’’’’’’’’’’’’’’’ņ<’R’’’’’’’’’’’’’’’’’’’R=’N’’’’’’’’’’’’’’’’’’’¢=’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā=’Q’’’’’’’’’’’’’’’’’’’">’R’’’’’’’’’’’’’’’’’’’‚>’O’’’’’’’’’’’’’’’’’’’ā>’R’’’’’’’’’’’’’’’’’’’B?’P’’’’’’’’’’’’’’’’’’’¢?’S’’’’’’’’’’’’’’’’’’’@’I’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R@’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢@’Q’’’’’’’’’’’’’’’’’’’A’M’’’’’’’’’’’’’’’’’’’RA’J’’’’’’’’’’’’’’’’’’’¢A’P’’’’’’’’’’’’’’’’’’’B’O’’’’’’’’’’’’’’’’’’’bB’O’’’’’’’’’’’’’’’’’’’ĀB’P’’’’’’’’’’’’’’’’’’’"C’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BC’Q’’’’’’’’’’’’’’’’’’’¢C’R’’’’’’’’’’’’’’’’’’’D’R’’’’’’’’’’’’’’’’’’’bD’T’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀD’’’’’’’’’’’’’’’’’’’’āD’P’’’’’’’’’’’’’’’’’’’BE’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bE’Ē’’’’’’’’’’’’’’’’’’’2F’’’’’’’’’’’’’’’’’’’’RF’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’F’Q’’’’’’’’’’’’’’’’’’’ņF’J’’’’’’’’’’’’’’’’’’’BG’R’’’’’’’’’’’’’’’’’’’¢G’R’’’’’’’’’’’’’’’’’’’H’r’’’’’’’’’’’’’’’’’’’‚H’S’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āH’M’’’’’’’’’’’’’’’’’’’2I’A’’’’’’’’’’’’’’’’’’’‚I’!’’’’’’’’’’’’’’’’’’’²I’’’’’’’’’’’’’’’’’’’’’’ a := b; ’’’’’’’’’’’ b := x ’’’’’’’’’’ŅI’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņI’’’’’’’’’’’’’’’’’’’’J’’’’’’’’’’’’’’’’’’’’2J’’’’’’’’’’’’’’’’’’’’RJ’’’’’’’’’’’’’’’’’’’’rJ’’’’’’’’’’’’’’’’’’’’’J’’’’’’’’’’’’’’’’’’’’²J’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’āJ’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2K’O’’’’’’’’’’’’’’’’’’’’K’S’’’’’’’’’’’’’’’’’’’ņK’U’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’RL’’’’’’’’’’’’’’’’’’’’rL’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²L’U’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’M’­’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀM’U’’’’’’’’’’’’’’’’’’’"N’T’’’’’’’’’’’’’’’’’’’‚N’Q’’’’’’’’’’’’’’’’’’’āN’Q’’’’’’’’’’’’’’’’’’’BO’%’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rO’M’’’’’’’’’’’’’’’’’’’ĀO’A’’’’’’’’’’’’’’’’’’’P’5’’’’’’’’’’’’’’’’’’’RP’8’’’’’’’’’’’’’’’’’’’’P’(’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀP’’’’’’’’’’’’’’’’’’’’āP’&’’’’’’’’’’’’’’’’’’’Q’&’’’’’’’’’’’’’’’’’’’BQ’’’’’’’’’’’’’’’’’’’’’’ REPEAT ’’’’’’’’’’’’’bQ’’’’’’’’’’’’’’’’’’’’‚Q’)’’’’’’’’’’’’’’’’’’’’’ line; ’’’’’’’’’’’²Q’’’’’’’’’’’’’’’’’’’’ŅQ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņQ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R’’’’’’’’’’’’’’’’’’’’2R’9’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rR’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀR’’’’’’’’’’’’’’’’’’’’āR’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"S’Ó’’’’’’’’’’’’’’’’’’’T’ ’’’’’’’’’’’’’’’’’’’2T’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rT’P’’’’’’’’’’’’’’’’’’’ŅT’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’U’M’’’’’’’’’’’’’’’’’’’bU’A’’’’’’’’’’’’’’’’’’’²U’ ’’’’’’’’’’’’’’’’’’’’’ IF a > b ’’’’’’’’’’ THEN a ’’’’’’’’’’ ELSE b ’’’’’’’’’’ END IF ’’’’’’’’’’āU’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’V’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’"V’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rV’O’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅV’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööņV’M’’’’’’’’’’’’’’’’’’’BW’O’’’’’’’’’’’’’’’’’’’¢W’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ĀW’Ģ’’’’’’’’’’’’’’’’’’’’X’’’’’’’’’’’’’’’’’’’’²X’4’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņX’B’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’BY’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rY’E’’’’’’’’’’’’’’’’’’’ĀY’5’’’’’’’’’’’’’’’’’’’Z’P’’’’’’’’’’’’’’’’’’’bZ’’’’’’’’’’’’’’’’’’’’‚Z’’’’’’’’’’’’’’’’’’’’¢Z’$’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ŅZ’)’’’’’’’’’’’’’’’’’’’[’M’’’’’’’’’’’’’’’’’’’R[’A’’’’’’’’’’’’’’’’’’’¢[’$’’’’’’’’’’’’’’’’’’’Ņ[’#’’’’’’’’’’’’’’’’’’’\’"’’’’’’’’’’’’’’’’’’’2\’"’’’’’’’’’’’’’’’’’’’’’ FI ’’’’’’’’’’’’’’’’ END OP SIGN ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’b\’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²\’O’’’’’’’’’’’’’’’’’’’]’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2]’(’’’’’’’’’’’’’’’’’’’b]’M’’’’’’’’’’’’’’’’’’’²]’A’’’’’’’’’’’’’’’’’’’^’-’’’’’’’’’’’’’’’’’’’2^’ ’’’’’’’’’’’’’’’’’’’b^’’’’’’’’’’’’’’’’’’’’‚^’’’’’’’’’’’’’’’’’’’’¢^’!’’’’’’’’’’’’’’’’’’’Ņ^’’’’’’’’’’’’’’’’’’’’’’ END REP; ’’’’’’’’’’ ergebnis ’’’’’’’’’’ END OP *; ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’ņ^’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B_’8’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚_’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢_’N’’’’’’’’’’’’’’’’’’’ņ_’R’’’’’’’’’’’’’’’’’’’R`’Q’’’’’’’’’’’’’’’’’’’²`’S’’’’’’’’’’’’’’’’’’’a’P’’’’’’’’’’’’’’’’’’’ra’R’’’’’’’’’’’’’’’’’’’Ņa’M’’’’’’’’’’’’’’’’’’’"b’E’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rb’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²b’›’’’’’’’’’’’’’’’’’’’Rc’’’’’’’’’’’’’’’’’’’’bc’;’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢c’P’’’’’’’’’’’’’’’’’’’d’N’’’’’’’’’’’’’’’’’’’Rd’R’’’’’’’’’’’’’’’’’’’²d’L’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’e’O’’’’’’’’’’’’’’’’’’’be’3’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’¢e’/’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āe’’’’’’’’’’’’’’’’’’’’f’4’’’’’’’’’’’’’’’’’’’Bf’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rf’’’’’’’’’’’’’’’’’’’’’f’M’’’’’’’’’’’’’’’’’’’āf’A’’’’’’’’’’’’’’’’’’’2g’)’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bg’’’’’’’’’’’’’’’’’’’’‚g’’’’’’’’’’’’’’’’’’’’’’ b := a; ’’’’’’’’’’’ a := x ’’’’’’’’’’¢g’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Āg’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’ņg’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Bh’S’’’’’’’’’’’’’’’’’’’¢h’B’’’’’’’’’’’’’’’’’’’ņh’R’’’’’’’’’’’’’’’’’’’Ri’R’’’’’’’’’’’’’’’’’’’²i’M’’’’’’’’’’’’’’’’’’’j’P’’’’’’’’’’’’’’’’’’’bj’H’’’’’’’’’’’’’’’’’’’²j’N’’’’’’’’’’’’’’’’’’’k’J’’’’’’’’’’’’’’’’’’’Rk’M’’’’’’’’’’’’’’’’’’’¢k’N’’’’’’’’’’’’’’’’’’’ņk’5’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2l’1’’’’’’’’’’’’’’’’’’’rl’M’’’’’’’’’’’’’’’’’’’Āl’A’’’’’’’’’’’’’’’’’’’m’6’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Rm’’’’’’’’’’’’’’’’’’’’rm’<’’’’’’’’’’’’’’’’’’’²m’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņm’’’’’’’’’’’’’’’’’’’’ņm’’’’’’’’’’’’’’’’’’’’n’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2n’"’’’’’’’’’’’’’’’’’’’bn’’’’’’’’’’’’’’’’’’’’‚n’’’’’’’’’’’’’’’’’’’’¢n’(’’’’’’’’’’’’’’’’’’’Ņn’.’’’’’’’’’’’’’’’’’’’’’ END IF ’’’’’’’’’’o’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"o’’’’’’’’’’’’’’’’’’’’Bo’’’’’’’’’’’’’’’’’’’’bo’%’’’’’’’’’’’’’’’’’’’’o’.’’’’’’’’’’’’’’’’’’’Āo’ ’’’’’’’’’’’’’’’’’’’’’ END IF ’’’’’’’’’’ņo’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’p’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"p’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’rp’R’’’’’’’’’’’’’’’’’’’Ņp’#’’’’’’’’’’’’’’’’’’’’’#page# ’’’’’’’’’’’’’’q’M’’’’’’’’’’’’’’’’’’’Rq’A’’’’’’’’’’’’’’’’’’’’’ init stack; ’’’’’’’’¢q’’’’’’’’’’’’’’’’’’’’Āq’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’āq’’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’ REP ’’’’’’’’’’’’’2r’’’’’’’’’’’’’’’’’’’’Rr’’’’’’’’’’’’’’’’’’’’rr’’’’’’’’’’’’’’’’’’’’’r’"’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ār’’’’’’’’’’’’’’’’’’’’ār’’’’’’’’’’’’’’’’’’’’s’!’’’’’’’’’’’’’’’’’’’2s’’’’’’’’’’’’’’’’’’’’Rs’’’’’’’’’’’’’’’’’’’’’’ END REP. ’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’rs’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ās’O’’’’’’’’’’’’’’’’’’’"t’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Bt’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’bt’M’’’’’’’’’’’’’’’’’’’²t’A’’’’’’’’’’’’’’’’’’’u’’’’’’’’’’’’’’’’’’’’"u’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’Bu’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’u’H’’’’’’’’’’’’’’’’’’’āu’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’v’Q’’’’’’’’’’’’’’’’’’’bv’M’’’’’’’’’’’’’’’’’’’²v’N’’’’’’’’’’’’’’’’’’’w’S’’’’’’’’’’’’’’’’’’’bw’P’’’’’’’’’’’’’’’’’’’Āw’P’’’’’’’’’’’’’’’’’’’’’rŪhrt. ’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"x’'’’’’’’’’’’’’’’’’’’’Rx’T’’’’’’’’’’’’’’’’’’’²x’2’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņx’M’’’’’’’’’’’’’’’’’’’By’A’’’’’’’’’’’’’’’’’’’’y’:’’’’’’’’’’’’’’’’’’’Ņy’+’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’z’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"z’/’’’’’’’’’’’’’’’’’’’bz’’’’’’’’’’’’’’’’’’’’’’ END OP :=; ’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚z’’’’’’’’’’’’’’’’’’’’¢z’’’’’’’’’’’’’’’’’’’’’’ get (i); ’’’’’’’’Āz’’’’’’’’’’’’’’’’’’’’āz’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’{’ ’’’’’’’’’’’’’’’’’’’2{’’’’’’’’’’’’’’’’’’’’R{’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r{’.’’’’’’’’’’’’’’’’’’’¢{’*’’’’’’’’’’’’’’’’’’’Ņ{’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ{’1’’’’’’’’’’’’’’’’’’’2|’’’’’’’’’’’’’’’’’’’’R|’;’’’’’’’’’’’’’’’’’’’’|’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²|’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ņ|’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"}’J’’’’’’’’’’’’’’’’’’’r}’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’}’%’’’’’’’’’’’’’’’’’’’Ā}’ ’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ}’K’’’’’’’’’’’’’’’’’’’B~’R’’’’’’’’’’’’’’’’’’’¢~’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā~’1’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’O’’’’’’’’’’’’’’’’’’’b’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’Form: ’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚’e’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ņ’M’’’’’’’’’’’’’’’’’’’B€’A’’’’’’’’’’’’’’’’’’’’€’#’’’’’’’’’’’’’’’’’’’Ā€’’’’’’’’’’’’’’’’’’’’‒’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’’’ FI; ’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’B’!’’’’’’’’’’’’’’’’’’’r’’’’’’’’’’’’’’’’’’’’’’%’’’’’’’’’’’’’’’’’’’’%’’’’’’’’’’’’’’’’’’’’’ PER; ’’’’’’’’’’’ņ’’’’’’’’’’’’’’’’’’’’’’ END OP ** ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’‚’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R‚’>’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’‚’"’’’’’’’’’’’’’’’’’’’Ā‚’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’ā‚’L’’’’’’’’’’’’’’’’’’’2ƒ’K’’’’’’’’’’’’’’’’’’’‚ƒ’V’’’’’’’’’’’’’’’’’’’⃒’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’„’L’’’’’’’’’’’’’’’’’’’b„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ Beispiele: ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö‚„’’’’’’’’’’’’’’’’’’’’¢„’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ā„’Q’’’’’’’’’’’’’’’’’’’"…’!’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’R…’’’’’’’’’’’’’’’’’’’’r…’’’’’’’’’’’’’’’’’’’’’…’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²…’F’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’†’$’’’’’’’’’’’’’’’’’’’2†’Q’’’’’’’’’’’’’’’’’’’’†’O’’’’’’’’’’’’’’’’’’’ņ†’7’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2‡’’’’’’’’’’’’’’’’’’’’b‡’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‚‡’=’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’‡’M’’’’’’’’’’’’’’’’’’’ˆ’A’’’’’’’’’’’’’’’’’’’bˆ’#’’’’’’’’’’’’’’’’’’’’’ IF n > 0 ’’’’’’’’’ˆ’’’’’’’’’’’’’’’’’’’’’’ ELSE 1 ’’’’’’’’’’ END IF ’’’’’’’’’’ˆ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’−M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2‰’S’’’’’’’’’’’’’’’’’’’’‰’:’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’҉’M’’’’’’’’’’’’’’’’’’’"Š’A’’’’’’’’’’’’’’’’’’’rŠ’#’’’’’’’’’’’’’’’’’’’¢Š’’’’’’’’’’’’’’’’’’’’Š’’’’’’’’’’’’’’’’’’’’⊒’’’’’’’’’’’’’’’’’’’’’ END REP; ’’’’’’’’’’ prod ’’’’’’’’’’’’‹’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’"‹’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’r‹’Q’’’’’’’’’’’’’’’’’’’Ņ‹’R’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’2Œ’M’’’’’’’’’’’’’’’’’’’‚Œ’A’’’’’’’’’’’’’’’’’’’Ҍ’"’’’’’’’’’’’’’’’’’’’’’ IF m = 0 ’’’’’’’’’’’’’’’’’’’’’’’’’’’’"’’’’’’’’’’’’’’’’’’’’B’’’’’’’’’’’’’’’’’’’’b’+’’’’’’’’’’’’’’’’’’’’’ ENDIF ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’²’M’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’’’ ’’’’’’’’’’’’’’’’’’’’Ž’R’’’’’’’’’’’’’’’’’’’bŽ’Q’’’’’’’’’’’’’’’’’’’ĀŽ’O’’’’’’’’’’’’’’’’’’’"’8’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’N#headandbottom("1","EUMEL-Benutzerhandbuch","TEIL 2 : ELAN","2")# ’’’’’’’’’’’’>#pagenr("%",1)##setcount(1)##block##pageblock# ’’’’’’’’’’’’’’’.#center#EUMEL-Benutzerhandbuch ’’’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’#center#TEIL 2 : ELAN ’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’2 - % #right#GMD ’’’’’’’’’’’’’N#center#____________________________________________________________ ’’’’’’’’’GMD #right# 2 - % ’’’’’’’’’’’’TEIL 2: ELAN .2.1 Besondere Eigenschaften von ELAN ’’’’’’’’NKerneigenschaften von ELAN sind das #ib#Paketkonzept#ie# und die Methode des’’#ib#Refinements#ie#. ’’’’’’’’’.#on("b")#Paketkonzept:#off("b")# ’’’’’’’’’’’’’^ELAN bietet die MŚglichkeit, neue Datentypen sowie Prozeduren und Operatoren auf’’’’’’’’’’’’’’^diesen Datentypen zu definieren. Eine solche Definition von Algorithmen und DatenŻ’’’’’’’’’’’’^typen kann zu einer logischen Einheit, einem Paket, zusammengefaūt werden. Pakete’’’’’’’’’’’’’NkŚnnen in einer Task vorŪbersetzt werden und erweitern damit automatisch den’’Sprachumfang. .#on("b")#Methode des Refinements:#off("b")# ’’^Die Methode des Refinements erlaubt das schrittweise Herleiten von ProblemlŚsungen’’’’’’’’’’’’Nvon der jeweils geeigneten Terminologie herunter zu den von ELAN standardmŁūig^angebotenen Sprachelementen. Durch diese Vorgehensweise wird in Łuūerst starkem’’’’’’’’’’’’’’’NMaūe ein strukturierter Programmentwurf gemŁū dem Top-Down-Prinzip gefŚrdert. NDie Programmiersprache ELAN wird im EUMEL-System zu folgenden Zwecken’’’’’’’’’.- Systemimplementationssprache ’’’’’’’’’’’’’’- Kommandosprache ’’’’’’’’’’’- Anwenderprogrammiersprache 2.2 Lexikalische Elemente ’’’^Unter lexikalischen Elementen einer Programmiersprache versteht man die Elemente,’’’’’’’’’’’’’.in denen ein Programm notiert wird. ’’’’’’’’’’In ELAN sind dies: ’’’’’’’’’’’- SchlŪsselwŚrter ’’’’’’’’’’’- Bezeichner - Sonderzeichen ’’’’’’’’’’’’’- Kommentare 2.2.1 SchlŪsselwŚrter ’’’’’’’NEinige WŚrter haben in ELAN eine feste Bedeutung und kŚnnen somit nicht frei’’NgewŁhlt werden. Solche WŚrter werden im EUMEL-System in Groūbuchstaben’’’’’’’’>geschrieben, Leerzeichen dŪrfen nicht enthalten sein. ’’’’’’’’^Wie spŁter beschrieben wird, gibt es in ELAN auch die MŚglichkeit, neue SchlŪsselŻ’’’’’’’’’’’’wŚrter einzufŪhren. ’’’’’’’’’’2.2.2 Bezeichner ’’’’’’’’’’’’NBezeichner oder Namen werden benutzt, um Objekte in einem Programmtext zu’’’’’Nbenennen und zu identifizieren (z.B: Variablennamen, Prozedurnamen). ’’’’’’’’’>Namen werden in ELAN folgendermaūen formuliert: ’’’’’’’’’’’’’’^Das erste Zeichen eines Namens muū immer ein Kleinbuchstabe sein. Danach dŪrfen’’’’’’’’’’’’’’’^bis zu 254 Kleinbuchstaben, aber auch Ziffern folgen. Zur besseren Lesbarkeit kŚnnen’’’’’’’’’’^Leerzeichen in einem Namen erscheinen, die aber nicht zum Namen zŁhlen. SonderŻ’’’’’’’’’’’’’’’.zeichen sind in Namen nicht erlaubt. ’’’’’’’’’>Beispiele fŪr #on("b")#korrekte#off("b")# Bezeichner: ’’’’’’’’das ist ein langer name ’’’’’’>Beispiele fŪr #on("b")#falsche#off("b")# Bezeichner: ’’’’’’’’’2.2.3 Sonderzeichen ’’’’’’’’’NSonderzeichen sind Zeichen, die weder Klein- oder Groūbuchstaben, noch ZiffernNsind. Sie werden in ELAN als Trennzeichen oder als Operatoren benutzt. ’’’’’’’.In ELAN gibt es folgende Trennungszeichen: ’’’.- das Semikolon (';') trennt Anweisungen ’’’’>- der Doppelpunkt (':') trennt Definiertes und Definition ’’’^- der Punkt ('.') wird als Endezeichen fŪr bestimmte Programmabschnitte, als DeziŻ’’’’’’’’’’’N malpunkt und als Selektor-Zeichen fŪr Datenstrukturen benutzt ’’’’’’’’’’’’’.- das Komma (',') trennt Parameter ’’’’’’’’’’^- Klammernpaare ('(', ')') werden zum Einklammern von Parameterlisten oder TeilŻ’’’’’’’’’’’’’ ausdrŪcken benutzt ’’’’’’’’>- mit AnfŪhrungszeichen ('"') werden Text-Denoter umrahmt ’’’N- eckige Klammernpaare ('[', ']') werden zur Subskription benutzt. ’’’’’’’’’’>Als Operatornamen sind folgende Sonderzeichen erlaubt: ’’’’’’’N- ein Sonderzeichen, sofern es nicht als Trennzeichen benutzt wird: ’’’’’’’’’> ! $ % & ' * + - / < = > ? @ ^ ' ~ ’’’’’’’’’^- eine Kombination von zwei Sonderzeichen. Diese Kombination muū jedoch bereits’’’’’’’’’’’’’’ in ELAN existieren: ’’’’’’’ := <= >= <> ** ’’’’2.2.4 Kommentare ’’’’’’’’’’’’NKommentare dienen ausschlieūlich der Dokumentation eines Programms. Sie werdenNvom Compiler Ūberlesen und haben somit keinen Einfluū auf die AusfŪhrung einesNProgramms. Sie dŪrfen an beliebigen Stellen eines Programmtextes geschrieben’’^werden, jedoch nicht innerhalb von SchlŪsselwŚrtern und Namen. Ein Kommentar darf’’’’’’’’’’’’’^Ūber mehrere Zeilen gehen. In ELAN sind Kommentare nur in wenigen FŁllen notwenŻ’’’’’’’’’’’’’’Ndig, da Programme durch andere Mittel gut lesbar geschrieben werden kŚnnen. ’’NEin Kommentar in ELAN wird durch Kommentarklammern eingeschlossen. Es gibt’’’’.folgende Formen von Kommentarklammern: ’’’’’’’(* Kommentar *) ’’’’’’’{ Kommentar } ’’’’’’’Ž( Kommentar )# ’’’’’’’NDie letzte Version 'Ž( Kommentar )Ž' wird im EUMEL-System nicht’’’’’’’’’’’’’>unterstŪtzt; statt dessen gibt es noch folgende MŚglichkeit: ’Ž Kommentar Ž ’’’’’’’’’NDa bei der Kommentarkennzeichnung mit Ž fŪr Kommentaranfang und -ende das’’’’’Ngleiche Zeichen benutzt wird, ist eine Schachtööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööelung hier nicht mŚglich. ’’’’’’2.3 Datenobjekte ’’’’’’’’’’’’^Eine Klasse von Objekten mit gleichen Eigenschaften wird in Programmiersprachen’’’’’’’’’’’’’’’NDatentyp genannt. Dabei hat ein Datentyp immer einen Namen, der die Klasse von^Objekten sinnvoll kennzeichnet. Als ein Datenobjekt wird ein Exemplar eines DatenŻ’’’’’’’’’’’’>typs (also ein spezielles Objekt einer Klasse) bezeichnet. ’’’NDatentypen sind in ELAN ein zentrales Konzept. Jedes der in einem ELAN-’’’’’’’NProgramm verwandten Datenobjekte hat einen Datentyp; somit kann man DatentypenNauch als Eigenschaften von Datenobjekten ansehen. FŪr jeden Datentyp sind nur’^spezielle Operationen sinnvoll. Man kann nun Compilern die Aufgabe Ūberlassen zu’’’’’’’’’’’’’’^ŪberprŪfen, ob stets die richtige Operation auf einen Datentyp angewandt wird. ’’’’’’’’’’’’’’’2.3.1 Elementare Datentypen ^Einige Datentypen spielen bei der Programmierung eine besondere Rolle, weil sie’’’’’’’’’’’’’’’hŁufig benŚtigt werden. ’’’’’’.In ELAN sind das die Datentypen fŪr ’’’’’’’’’’- ganze Zahlen (INT) ’’’’’’’’- reelle Zahlen (REAL) ’’’’’’.- Zeichen und Zeichenfolgen (TEXT) ’’’’’’’’’’- Wahrheitswerte (BOOL). ’’’’NDiese Datentypen sind von der Sprache ELAN vorgegeben und werden elementare’’’^Datentypen genannt. FŪr effiziente Rechnungen mit elementaren Datentypen gibt es’’’’’’’’’’’’’’Nin den meisten Rechnern spezielle Schaltungen, so daū die Hervorhebung und beŻ^sondere Rolle, die sie in Programmiersprachen spielen, gerechtfertigt ist. Zudem hat’’’’’’’’’’Nman Werte-Darstellungen (Denoter) innerhalb von Programmen fŪr die elementarenDatentypen vorgesehen. ’’’’’’’.2.3.1.1 Denoter fŪr elementare Datentypen ’’’NDie Darstellung eines Werts in einem Rechner zur Laufzeit eines Programms wird^ReprŁsentation genannt. Wenn es eindeutig ist, daū es sich nur um die ReprŁsentaŻ’’’’’’’’’’’’’^tion im Rechner handelt, spricht man kurz von Werten. Um mit Objekten elementarer’’’’’’’’’’’’’NDatentypen arbeiten zu kŚnnen, muū es in einem Programm die MŚglichkeit geben,^Werte eines Datentyps zu bezeichnen (denotieren). Die Werte-Darstellungen, die in’’’’’’’’’’’’’^ELAN Denoter genannt werden, sind fŪr jeden Datentyp unterschiedlich. Wie bereits’’’’’’’’’’’’’NerwŁhnt, haben alle Datenobjekte in ELAN (also auch Denoter) nur einen - vom’’^Compiler feststellbaren - Datentyp. Aus der Form eines Denoters ist also der DatenŻ’’’’’’’’’’’typ erkennbar: ’’’’’’’’’’’’’’’>Sie bestehen aus einer Aneinanderreihung von Ziffern. ’’’’’’’’NFŪhrende Nullen spielen bei der Bildung des Wertes keine Rolle (sie werden vomNELAN-Compiler Ūberlesen). Negative INT-Denoter gibt es nicht. Negative Werte’’^werden durch eine Aufeinanderfolge des monadischen Operators '-' (siehe 2.4.1.1)’’’’’’’’’’’’’’.und eines INT- Denoters realisiert. ’’’’’’’’’’REAL-Denoter: Hier gibt es zwei Formen: ’’’’NDie erste besteht aus zwei INT-Denotern, die durch einen Dezimalpunkt getrennt^Der Dezimalpunkt wird wie ein Komma in der deutschen Schreibweise benutzt. NegaŻ’’’’’’’’’’’’’’.tive REAL-Denoter gibt es wiederum nicht. ’’’’^Die zweite Form wird als "wissenschaftliche Notation" bezeichnet. Sie findet dann’’’’’’’’’’’’’^Verwendung, wenn sehr groūe Zahlen oder Zahlen, die nahe bei Null liegen, dargeŻ’’’’’’’’’’’’’’stellt werden mŪssen. ’’’’’’’’nDer INT-Denoter hinter dem Buchstaben #on("b")#e#off("b")# gibt an, wie viele Stellen der DezimalŻ’’’’’’’’’’’’^punkt nach rechts (positive Werte) bzw. nach links (negative Werte) zu verschieben’’’’’’’’’’’’nist. Dieser Wert wird Exponent und der Teil vor dem Buchstaben #on("b")#e#off("b")# Mantisse genannt. ’’’’’’’’TEXT-Denoter: >Sie werden in AnfŪhrungszeichen eingeschlossen. ’’’’’’’’’’’’’’"Das ist ein TEXT-Denoter" ’’’>"Jetzt ein TEXT-Denoter ohne ein Zeichen: ein leerer Text" ’’’^Zu beachten ist, daū das Leerzeichen ebenfalls ein Zeichen ist. Soll ein AnfŪhrungsŻ’’’’’’’’’’^zeichen in einem TEXT erscheinen (also gerade das Zeichen, welches einen Denoter’’’’’’’’’’’’’’>beendet), so muū es doppelt geschrieben werden. ’’’’’’’’’’’’’’"Ein TEXT mit dem ""-Zeichen" ."Ein TEXT-Denoter nur mit dem ""-Zeichen:" ’’’NManchmal sollen Zeichen in einem TEXT-Denoter enthalten sein, die auf dem’’’’’NEingabegerŁt nicht zur VerfŪgung stehen. In diesem Fall kann der Code-Wert desZeichens angegeben werden. ’’’^ist gleichbedeutend mit "daū". Der Code-Wert eines Zeichens ergibt sich aus der’’’’’’’’’’’’’’’NEUMEL-Code-Tabelle (siehe 5.2.4.1), in der jedem Zeichen eine ganze Zahl zugeŻBOOL-Denoter: .Es gibt nur zwei BOOL-Denoter: ’’’’’’’’’’’’’’’.TRUE fŪr "wahr" und FALSE fŪr "falsch". ’’’’’’.2.3.1.2 LET-Konstrukt fŪr Denoter ’’’’’’’’’’’NNeben der Funktion der AbkŪrzung von Datentypen (siehe 2.6.3) kann das LET-’’’NKonstrukt auch fŪr die Namensgebung fŪr Denoter verwandt werden. ’’’’’’’’’’’’’>Die LET-Vereinbarung sieht folgendermaūen aus: ’’’’’’’’’’’’’’’n#on("i")##on("b")#LET#off("i")##off("b")# Name #on("i")##on("b")#=#off("i")##off("b")# Denoter ’’’’’’’’’’’’’’’>Mehrere Namensgebungen kŚnnen durch Komma getrennt werden. ’’’N____________________________________________________________________________ ’N .......................... Beispiele: ......................... ’’’’’’’’’’’’’ LET anzahl = 27; ’’’’’’’’’’’’ LET pi = 3.14159, ’’’’’’’ blank = " "; ’’’’’’’’’’’N____________________________________________________________________________ ’>Der Einsatz von LET-Namen fŪr Denoter hat zwei Vorteile: ’’’’’^- feste Werte im Programm sind leicht zu Łndern, da nur an einer Stelle des ProŻ’’’’’’’’’’’’’. gramms der Denoter geŁndert werden muū ’’’’N (z.B.: In Vereinbarungen von Reihungen (siehe 2.6.1) kŚnnen LET-Denoter, imN Gegensatz zu Konstanten, als Obergrenze angegeben werden. Dieser’’’’^ Wert kann dann auch an anderen Stellen des Programms, z.B. in SchleiŻ’’’’’’’’’’’’’’’N fen (siehe 2.4.2.5), benutzt werden. Bei Önderung der ReihungsgrŚūe’N braucht dann nur an einer Stelle des Programms der Wert geŁndert zu’ werden.) ’’’’’’’’’’’N- der Name gibt zusŁtzliche Information Ūber die Bedeutung des Denoters. ’’’’2.3.2 Zugriffsrecht ’’’’’’’’NVon manchen Datenobjekten weiū man, daū sie nur einmal einen Wert erhalten’’’’^sollen. Sie sollen also nicht verŁndert werden. Oder man weiū, daū in einem ProŻ’’’’’’’’’’’’’’^grammbereich ein Datenobjekt nicht verŁndert werden soll. Um ein unbeabsichtigtes’’’’’’’’’’’’’NVerŁndern zu verhindern, wird in ELAN dem Datenobjekt ein zusŁtzlicher Schutz’>mitgegeben: das Zugriffsrecht oder Accessrecht. ’’’’’’’’’’’’’’^In der Deklaration eines Datenobjekts kŚnnen folgende Accessattribute angegeben’’’’’’’’’’’’’’’n- #on("i")##on("b")#VAR #off("i")##off("b")# fŪr lesenden und schreibenden (verŁndernden) Zugriff ’’’’’’’’’N- #on("i")##on("b")#CONST#off("i")##off("b")# fŪr nur lesenden Zugriff. ’’’’2.3.3 Deklaration ’’’’’’’’’’’NDamit man Datenobjekte in einem Programm ansprechen kann, gibt man einem’’’’’’^Datenobjekt einen Namen (wie z.B. einen Personennamen, unter der sich eine wirkŻ’’’’’’’’’’’’’’^liche Person "verbirgt"). Will man ein Datenobjekt in einem Programm verwenden, so’’’’’’’’’’’’Nmuū man dem Compiler mitteilen, welchen Datentyp und welches Accessrecht das’’^Objekt haben soll. Das dient u.a. dazu, nicht vereinbarte Namen (z.B. verschriebene)’’’’’’’’’’^vom Compiler entdecken zu lassen. Weiterhin ist aus dem bei der Deklaration angeŻ’’’’’’’’’’’’’^gebenen Datentyp zu entnehmen, wieviel Speicherplatz fŪr das Objekt zur Laufzeit zu’’’’’’’’’’’reservieren ist. ’’’’’’’’’’’’’>Eine Deklaration oder Vereinbarung besteht aus der Angabe von ~- Zugriffsrecht ( #on("i")##oöööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööön("b")#VAR#off("i")##off("b")# oder #on("i")##on("b")#CONST#off("i")##off("b")#) ’’’’’’’’’’’’’’’- Name des Datenobjekts. ’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ INT VAR mein datenobjekt; ’’’N____________________________________________________________________________ ^Verschiedene Datenobjekte mit gleichem Datentyp und Accessrecht dŪrfen in einer’’’’’’’’’’’’’’’^Deklaration angegeben werden; sie werden durch Kommata getrennt. Mehrere DeklaŻ’’’’’’’’’’’’’’’Nrationen werden - genauso wie Anweisungen - durch das Trennzeichen Semikolon’’voneinander getrennt. ’’’’’’’’N____________________________________________________________________________ ’N .......................... Beispiele: ......................... ’’’’’’’’’’’’’. INT VAR mein wert, dein wert, unser wert; ’’’ BOOL VAR listen ende; ’’’’’’’ TEXT VAR zeile, wort; ’’’’’’’N____________________________________________________________________________ ’2.3.4 Initialisierung ’’’’’’’NUm mit den vereinbarten Datenobjekten arbeiten zu kŚnnen, muū man ihnen einen’^Wert geben. Hat ein Datenobjekt noch keinen Wert erhalten, so sagt man, sein Wert’’’’’’’’’’’’’^sei undefiniert. Das versehentliche Arbeiten mit undefinierten Werten ist eine beliebte’’’’’’’^Fehlerquelle. Deshalb wird von Programmierern streng darauf geachtet, diese FehlerŻ’’’’’’’’’’’Nkuelle zu vermeiden. Eine Wertgebung an ein Datenobjekt kann (muū aber nicht)’^bereits bei der Deklaration erfolgen. In ELAN wird dies Initialisierung genannt. FŪr mit’’’’’’^CONST vereinbarte Datenobjekte ist die Initialisierung die einzige MŚglichkeit, ihnen’’’’’’’’’^einen Wert zu geben. Die Initialisierung von Konstanten ist zwingend vorgeschrieben’’’’’’’’’’’.und wird vom Compiler ŪberprŪft. ’’’’’’’’’’’’’>Die Initialisierung besteht aus der Angabe von ’’’’’’’’’’’’’’’~- Zugriffsrecht ( #on("i")##on("b")#VAR#off("i")##off("b")# oder #on("i")##on("b")#CONST#off("i")##off("b")#) ’’’’’’’’’’’’’’’- Name des Datenobjekts ’’’’’n- Operator #on("i")##on("b")#::#off("i")##off("b")# oder #on("i")##on("b")#:=#off("i")##off("b")# ’’’’’’’’’’’N- Wert, den das Datenobjekt erhalten soll (Denoter, Ausdruck). ’’’’’’’’’’’’’’N____________________________________________________________________________ ’N .......................... Beispiele: ......................... ’’’’’’’’’’’’’. INT CONST gewuenschtes gehalt :: 12 000; ’’’’ TEXT VAR zeile :: ""; ’’’’’’’> REAL CONST pi :: 3.14159, zwei pi := 2.0 * pi; ’’’’’’’’’’’’’’. BOOL VAR bereits sortiert :: TRUE; ’’’’’’’’’’N____________________________________________________________________________ ’2.4 Programmeinheiten ’’’’’’’^Neben Deklarationen (Vereinbarungen) sind Programmeinheiten die Grundbestandteile’’’’’’’’’’’’’.Programmeinheiten kŚnnen sein: ’’’’’’’’’’’’’’’>#on("b")#- elementare Programmeinheiten #off("b")# ’’’’’’’’’’ - Ausdruck ’’’’’’’’’’’’’’’ - Zuweisung ’’’’’’’’’’’’’’ - Refinementanwendung ’’’’ - Prozeduraufruf ’’’’’’’’’>#on("b")#- zusammengesetzte Programmeinheiten #off("b")# ’’’’ - Abfrage  - Auswahl  - Wiederholung ’’’’’’’’’’’>#on("b")#- abstrahierende Programmeinheiten #off("b")# ’’’’’’ - Refinementbvereinbarung  - Prozedurvereinbarung ’’’ - Operatorvereinbarung ’’’ - Paketvereinbarung. ’’’’’.2.4.1 Elementare Programmeinheiten ’’’’’’’’’’2.4.1.1 Ausdruck ’’’’’’’’’’’’NAusdrŪcke sind eine Zusammenstellung von Datenobjekten (Denoter, VAR- oder’’’’NCONST-Objekte) und Operatoren. Jeder korrekte Ausdruck liefert einen Wert. DerNTyp des Ausdrucks wird bestimmt durch den Typ des Wertes, den der Ausdruck’’’’NOperatoren werden in ELAN durch ein oder zwei Sonderzeichen oder durch GroūŻ’’>buchstaben als SchlŪsselwort dargestellt (siehe 2.4.3.3). ’’’’^Als Operanden (also die Datenobjekte, auf die ein Operator "wirken" soll) dŪrfen’’’’’’’’’’’’’’NVAR- und CONST-Datenobjekte, Denoter oder AusdrŪcke verwendet werden. Typ’’’’’^der Operanden und des Resultats eines Operators werden in der OperatorvereinbaŻ’’’’’’’’’’’’’’’.rung festgelegt (siehe 2.4.3.3). ’’’’’’’’’’’’’.Man unterscheidet zwei Arten von Operatoren: ’.#on("b")#- monadische Operatoren #off("b")# ’N Monadischen Operatoren haben nur einen Operanden, der rechts vom OperatorŻ’. zeichen geschrieben werden muū. ’’’’’’’’’’’N Der '-' - Operator liefert den Wert von a mit umgekehrten Vorzeichen. a muū. dabei vom Datentyp INT oder REAL sein. ’’’’^ Der Operator 'NOT' realisiert die logische Negation. y muū vom Datentyp BOOL’’’’’’’’’’’’’’’.#on("b")#- dyadische Operatoren #off("b")# ’’N Dyadische Operatoren haben zwei Operanden. Das Operatorzeichen steht zwiŻ’’. schen den beiden Operanden. ’’’’’’’’’’’’’’’ Beispiele: ^ In den ersten fŪnf Beispielen werden jeweils die Werte von zwei INT-Objekten a’’’’’’’’’’’’’^ und b addiert (Operatorzeichen: '+'), subtrahiert ('-'), multipliziert ('*'), dividiert’’’’N (ganzzahlige Division ohne Rest: 'DIV') und potenziert ('**'). ’’’’’’’’’’’’N Im sechsten und siebten Beispiel werden zwei BOOL-Werte x und y verglichen’^ und im achten und neunten Beispiel die logische Operation 'und' (Operator 'AND')’’’’’’’’’’’. bzw. 'oder' (Operator 'OR') durchgefŪhrt. ’PrioritŁt von Operatoren ’’’’’NEs ist erlaubt, einen Ausdruck wiederum als Operanden zu verwenden. Praktisch’Nbedeutet dies, daū mehrere Operatoren und Datenobjekte zusammen in einem AusŻ’.druck geschrieben werden dŪrfen. ’’’’’’’’’’’’’a + 3 - b * c NDie Reihenfolge der Auswertung kann man durch Angabe von Klammern steuern. ’’’(a + b) * (a + b) ’’’’’’’’’’’’^Es wird jeweils erst 'a + b' ausgewertet und dann erst die Multiplikation durchgeŻ’’’’’’’’’’’’^fŪhrt. In ELAN ist es erlaubt, beliebig viel Klammernpaare zu verwenden (Regel: die’’’’’’’’’’’^innerste Klammer wird zuerst ausgefŪhrt). Es ist sogar zulŁssig, Klammern zu verŻ’’’’’’’’’’’’’^wenden, wo keine notwendig sind, denn ŪberflŪssige Klammernpaare werden ŪberleŻ’’’’’’’’’’’’’’’^sen. Man muū jedoch beachten, daū AusdrŪcke, und damit auch z.B. #on("b")#(a)#off("b")#, immerAccessrecht CONST haben. ’’’’’.((a - b)) * 3 * ((c + d) * (c - d)) ’’’’’’’’’’NSomit kŚnnen beliebig komplizierte AusdrŪcke formuliert werden. ’’’’’’’’’’’’’’^Um solche AusdrŪcke einfacher zu behandeln und sie so Łhnlich schreiben zu kŚnŻ’’’’’’’’’’’’’’’Nnen, wie man es in der Mathematik gewohnt ist, wird in Programmiersprachen dieNReihenfolge der Auswertung von Operatoren festgelegt. In ELAN wurden neun EbeŻ.nen, PrioritŁten genannt, festgelegt: ’’’’’’’’>#on("bold")#PrioritŁt Operatoren ’’’’’’’’’’’’’’’#off("bold")# > 9 alle monadischen Operatoren ’’’’’’’’’ 8 ** ’’. 7 *, /, DIV, MOD ’’’’’’ 6 +, - . 5 =, <>, <, <=, >, >= ’ 4 AND ’ 3 OR ’’N 2 alle Ūbrigen, nicht in dieser Tabelle aufgefŪhrten ’’> dyadischen Operatoren ’’’’’’’’’’’’’’’ 1 := ’’^(Die erwŁhnten Operatoren in der Tabelle werden in der Beschreibung der StandardŻ’’’’’’’’’’’’’.prozeduren und -Operatoren besprochen). ’’’’’’^Operatoren mit der hŚchsten PrioritŁt werden zuerst ausgefŪhrt, dann die mit der’’’’’’’’’’’’’’^nŁchst niedrigeren PrioritŁt usw.. Operatoren mit gleicher PrioritŁt werden von links’’’’’’’’’^nach rechts ausgefŪhrt. Dadurch ergibt sich die gewohnte Abarbeitungsfolge wie beim’’’’’’’’’’’-2 + 3 * 2 ** 3 ’’’’’’’’’’’’’’c) 3 * (2 ** 3) ’’’’’’’’’’’’’’ööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööd) ((-2)) + (3 * (2 ** 3)) ’’’^Wie bereits erwŁhnt, ist es immer erlaubt, Klammern zu setzen. Ist man sich also’’’’’’’’’’’’’’^Ūber die genaue Abarbeitungsfolge nicht im Klaren, so kann man Klammern verwenŻ’’’’’’’’’’’’’’’2.4.1.2 Zuweisung ’’’’’’’’’’’.Ein spezieller Operator ist die Zuweisung. ’’’>Variable #on("i")##on("b")#:=#off("i")##off("b")# Wert ’’’’’’’^Dieser Operator hat immer die geringste PrioritŁt, wird also immer als letzter einer’’’’’’’’’’NAnweisung ausgefŪhrt. Die Zuweisung wird verwendet, um einer Variablen einen’’^neuen Wert zu geben. Der Operator ':=' liefert kein Resultat (man sagt auch, er’’’’’’’’’’’’’’’^liefert keinen Wert) und verlangt als linken Operanden ein VAR-Datenobjekt, an den’’’’’’’’’’’’^der Wert des rechten Operanden zugewiesen werden soll). Der Wert des linken OperŻ’’’’’’’’’’’’’Nanden wird also verŁndert. Der rechte Operand wird nur gelesen. ’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’N____________________________________________________________________________ ^Hier wird der Wert von 'b' der Variablen 'a' zugewiesen. Der vorher vorhandene Wert’’’’’’’’’’’Nvon 'a' geht dabei verloren. Man sagt auch, der Wert wird Ūberschrieben. ’’’’’NAls rechter Operand des ':='-Operators darf auch ein Ausdruck stehen. ’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’N____________________________________________________________________________ NHier wird das Resultat von 'b + c' an die Variable 'a' zugewiesen. Man beachte^dabei die PrioritŁten der Operatoren '+' (PrioritŁt 6) und ':=' (PrioritŁt 1): die Addition’’’^wird vor der Zuweisung ausgefŪhrt. Die Auswertung von Zuweisungen mit AusdrŪcken’’’’’’’’’’’’’’^muū immer so verlaufen, da die Zuweisung stets die niedrigste PrioritŁt aller OperatoŻ’’’’’’’’^Oft kommt es vor, daū ein Objekt auf der linken und rechten Seite des ZuweisungsŻ’’’’’’’’’’’’’>operators erscheint, z.B. wenn ein Wert erhŚht werden soll. ’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’N____________________________________________________________________________ ^Hier wird der "alte", aktuelle Wert von 'a' genommen, um '1' erhŚht und dem Objekt’’’’’’’’’’’’^'a' zugewiesen. Man beachte, daū hier in einer Anweisung ein Datenobjekt unterŻ’’’’’’’’’’’’’’’Nschiedliche Werte zu unterschiedlichen Zeitpunkten haben kann. ’’’’’’’’’’’’’’’2.4.1.3 Refinementanwendung ’NIn ELAN ist es mŚglich, Namen fŪr AusdrŪcke oder eine bzw. mehrere AnweisungenNzu vergeben. Das Sprachelement, das diese Namensgebung ermŚglicht, heiūt RefiŻNnement. Die AusfŪhrung eines solchen Namens heiūt Refinementanwendung, die’’’’NNamensgebung heiūt Refinementvereinbarung (siehe 2.4.3.1). Die AusdrŪcke oder’NAnweisungen bilden den Refinementrumpf. Ein Refinement kann man in einem ProŻ’Ngramm unter dem Refinementnamen ansprechen. Man kann sich die AusfŪhrung so’’’^vorstellen, als wŪrden der Refinementrumpf immer dort eingesetzt, wo der Name des’’’’’’’’’’’’’.Refinements als Operation benutzt wird. ’’’’’’2.4.1.4 Prozeduraufruf ’’’’’’^Eine Prozedur ist eine Sammlung von Anweisungen und Daten, die zur LŚsung einer’’’’’’’’’’’’’’’^bestimmten Aufgabe benŚtigt werden. Eine Prozedur wird in einer ProzedurvereinbaŻ’’’’’’’’’’’’’^rung definiert (siehe 2.4.3.2). Eine solche Prozedur kann man in einem Programm’’’’’’’’’’’’’’’Nunter einem Namen (eventuell unter Angabe von Parametern) ansprechen. Man’’’’’Nspricht dann vom Aufruf einer Prozedur oder einer Prozeduranweisung. ’’’’’’’’’Formen des Prozeduraufrufs: ’’^- #on("b")#Prozeduren ohne Parameter#off("b")# werden durch den Prozedurnamen angesprochen. ’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’N____________________________________________________________________________ N (Die Prozedur 'pause' wartet bis ein Zeichen eingegeben wird) ’’’’’’’’’’’’’>- #on("b")#Prozeduren mit Parameter#off("b")# werden durch ’’~ Prozedurnamen #on("i")##on("b")#(#off("i")##off("b")# aktuelle Parameterliste #on("i")##on("b")#)#off("i")##off("b")# ’’’’’^ aufgerufen. Eine Parameterliste ist entweder ein Datenobjekt oder mehrere durch’’’’’’’’’’’’. Kommata getrennte Datenobjekte. ’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’N____________________________________________________________________________ ’^ (Mit der Prozedur 'pause (INT CONST zeitgrenze)' kann fŪr eine Zeitdauer von’’’’’’’’’’’’’’’N 'zeitgrenze' in Zehntel-Sekunden gewartet werden. Die Wartezeit wird durch’N Erreichen der Zeitgrenze oder durch Eingabe eines Zeichens abgebrochen) ’’’> Bei den aktuellen Parametern ist folgendes zu beachten: ’’’^ a) Wird ein VAR-Parameter in der Definition der Prozedur vorgeschrieben, darf’’’’’’’’’’’’’’N kein Ausdruck als aktueller Parameter "Ūbergeben" werden, weil an einen’N Ausdruck nichts zugewiesen werden kann. AusdrŪcke haben - wie bereits’’’. erwŁhnt - das Accessrecht CONST. ’’’’’’’N____________________________________________________________________________ ’N ........................ Gegenbeispiel: ....................... ’’’’’’’’’’’’’ TEXT VAR text1, text2; ’’’’’’ text1 := "Dieses Beispiel ";  text2 := "Fehlermeldung"; ’’’> insert char (text1 + text2, "liefert eine", 17); ’’’’’’’’’’’’N____________________________________________________________________________ ’N (Die Prozedur 'insert char (TEXT VAR string, TEXT CONST char, INT CONST’^ pos)' fŪgt das Zeichen 'char' in den Text 'string' an der Position 'pos' ein) ’’’’’’’’’’N b) Wird ein CONST-Parameter verlangt, dann darf in diesem Fall ein Ausdruck^ als aktueller Parameter geschrieben werden. Aber auch ein VAR-Datenobjekt’’’’’’’’’’’’’’’^ darf angegeben werden. In diesem Fall wird eine Wandlung des Accessrechts’’’’’’’’’’’’’’’N (CONSTing) vorgenommen: der aktuelle Parameter erhŁlt sozusagen fŪr die’N Zeit der Abarbeitung der Prozedur das Accessrecht CONST. ’’’’’’’’’’’’’’’^ In ELAN sind auch Prozeduren als Parameter erlaubt. Die Prozedur als aktueller’’’’’’’’’’’’’N Parameter wird in der Parameterliste folgendermaūen angegeben: ’’’’’’’’’’’’® Resultattyp #on("i")##on("b")#PROC#off("i")##off("b")# #on("i")##on("b")#(#off("i")##off("b")# virtuelle Parameterliste #on("i")##on("b")#)#off("i")##off("b")# Procname ’’^ Die Angabe des Resultattyps entfŁllt, wenn es sich nicht um eine wertliefernde’’’’’’’’’’’’’^ Prozedur handelt. Die virtuelle Parameterliste inklusive der Klammern entfŁllt, falls’’’’’’^ die Prozedur keine Parameter hat. Die virtuelle Parameterliste beschreibt die’’’’’’’’’’’’’’N Parameter der Parameterprozedur. Es werden Datentyp und Zugriffsrecht eines> jeden Parameters angegeben, jedoch ohne Namen. ’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. wertetabelle (REAL PROC (REAL CONST) sin, ’’’> untergrenze, obergrenze, schrittweite); ’’’’’’’N (Die Prozedur 'sin' wird an die Prozedur 'wertetabelle' Ūbergeben) ’’’’’’’’N______________________________________________________________öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö______________ ’.2.4.2 Zusammengesetzte Programmeinheiten ’’’’’2.4.2.1 Folge ’’’’’’’’’’’’’’’NMehrere in einer bestimmten Reihenfolge auszufŪhrende Anweisungen werden als’’NFolge bezeichnet. In ELAN kann man eine oder mehrere Anweisungen in eine ProŻ’Ngrammzeile schreiben oder eine Anweisung Ūber mehrere Zeilen. Das setzt jedoch^voraus, daū die Anweisungen voneinander getrennt werden. Die Trennung von AnweiŻ’’’’’’’’’’’’’’^sungen erfolgt in ELAN durch das Trennsymbol Semikolon. Es bedeutet soviel wie:’’’’’’’’’’’’’’’."fŪhre die nŁchste Anweisung aus". ’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ put ("mein"); ’’’’’’’’’’’’’’’ put (". Programm") ’’’’’’’’’’N____________________________________________________________________________ ’^(Die Prozedur 'put' gibt den als Parameter angegebenen Wert auf dem AusgabegerŁt’’’’’’’’’’’’’’2.4.2.2 Abfrage ’’’’’’’’’’’’’NMit Abfragen steuert man die bedingte AusfŪhrung von Anweisungen. AbhŁngig vonNeiner Bedingung wird in zwei verschiedene Programmabschnitte verzweigt. ’’’’’’>Der formale Aufbau einer Abfrage sieht folgendermaūen aus: ’’’>#on("i")##on("b")#IF#off("i")##off("b")# Bedingung ’’’’’’’’’’’> #on("i")##on("b")#THEN#off("i")##off("b")# Abschnitt ’’’’’’> #on("i")##on("b")#ELSE#off("i")##off("b")# Abschnitt ’’’’’’.#on("i")##on("b")#END IF#off("i")##off("b")# ’ĪDer ELSE-Teil darf dabei auch fehlen. Anstelle von #on("i")##on("b")#END IF#off("i")##off("b")# darf auch die AbkŪrzung #on("i")##on("b")#FI#off("i")##off("b")# (IF von hinten gelesen) benutzt werden.’’’’’’NIn folgenden Beispielen wird der Absolutbetrag von 'a' ausgegeben: ’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ THEN a := -a ’’’’’’’’’’’’’N____________________________________________________________________________ ’NDie Umkehrung des Vorzeichens von a im THEN-Teil wird nur durchgefŪhrt, wenn’’Nder BOOLesche Ausdruck ('a < 0') den Wert TRUE liefert. Liefert er den Wert’’’^FALSE, wird die Anweisung, die der bedingten Anweisung folgt (nach END IF), ausgeŻ’’’’’’’’’’’’NfŪhrt. Das obige Programm kann auch anders geschrieben werden: ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ THEN put (-a) ’’’’’’’’’’’’ ELSE put (a) ’’’’’’’’’’’’’N____________________________________________________________________________ ’NDer THEN-Teil wird wiederum ausgefŪhrt, wenn die BOOLesche Bedingung erfŪllt’’Nist. Liefert sie dagegen FALSE, wird der ELSE-Teil ausgefŪhrt. ’’’’’’’’’’’’’’’NDie bedingte Anweisung ermŚglicht es, abhŁngig von einer Bedingung eine oder’’Nmehrere Anweisungen ausfŪhren zu lassen. Dabei kŚnnen im THEN- bzw. ELSE-’’’’’>Teil wiederum bedingte Anweisungen enthalten sein. ’’’’’’’’’’’^Bei Abfrageketten kann das ELIF-Konstrukt eingesetzt werden. (ELIF ist eine ZuŻ’’’’’’’’’’’’’’’.sammenziehung der Worte ELSE und IF). ’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ IF bedingung1 ’’’’’’’’’’’’’’’ THEN aktion1 ’’’’’’’’’’’’’ ELSE IF bedingung2 ’’’’’’’ THEN aktion2 ’’’’’ ELSE aktion3 ’’’’’ END IF ’’’’’’’’’’’’’’N____________________________________________________________________________ ’kann man besser ’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ IF bedingung1 ’’’’’’’’’’’’’’’ THEN aktion1 ’’’’’’’’’’’’’ ELIF bedingung2 ’’’’’’’’’’’’’ THEN aktion2 ’’’’’’’’’’’’’ ELSE aktion3 ’’’’’’’’’’’’’N____________________________________________________________________________ ’2.4.2.3 Auswahl ’’’’’’’’’’’’’^Die Auswahl wird benutzt, wenn alternative Anwendungen in AbhŁngikeit von Werten’’’’’’’’’’’’’’.eines Datenobjekts ausgefŪhrt werden sollen. ’>Der formale Aufbau der Auswahl sieht folgendermaūen aus: ’’’’’n#on("i")##on("b")#SELECT#off("i")##off("b")# INT-Ausdruck #on("i")##on("b")#OF#off("i")##off("b")# ’’’’’’’’’’’~ #on("i")##on("b")#CASE#off("i")##off("b")# 1. Liste von INT-Denotern #on("i")##on("b")#:#off("i")##off("b")# Abschnitt ’’’’~ #on("i")##on("b")#CASE#off("i")##off("b")# 2. Liste von INT-Denotern #on("i")##on("b")#:#off("i")##off("b")# Abschnitt ’’’’ . ’’’’’’’’’ . ’’’’’’’’’ . ’’’’’’’’’~ #on("i")##on("b")#CASE#off("i")##off("b")# n. Liste von INT-Denotern #on("i")##on("b")#:#off("i")##off("b")# Abschnitt ’’’’> #on("i")##on("b")#OTHERWISE#off("i")##off("b")# Abschnitt ’>#on("i")##on("b")#END SELECT#off("i")##off("b")# ’’’’’’’’’’’’’NEine Liste von INT-Denotern besteht aus einem oder mehreren durch Kommata geŻ’Ntrennten INT-Denotern. Der OTHERWISE-Teil darf auch fehlen. Man sollte ihn’’’’.jedoch verwenden, um FehlerfŁlle abzufangen. ’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ SELECT monat OF ’’’’’’’’’’’’’ CASE 2: IF schaltjahr ’’’’. THEN tage := 29 ’’’’’’’’’’’’’’’. ELSE tage := 28 ’’’’’’’’’’’’’’’ END IF ’’’’’’’’’’’. CASE 4, 6, 9, 11: tage := 30 ’’’’’’’’’’’’’. CASE 1, 3, 5, 7, 8, 10 ,12: tage := 31 ’’’ OTHERWISE kein monat ’’’’’N____________________________________________________________________________ ’N(In diesem Programmausschnitt werden die Tage eines Monats bestimmt) ’’’’’’’’’.2.4.2.4 Wertliefernde Abfrage und ’’’’’’’’’’’ wertliefernde Auswahl^Soll eine Abfrage oder eine Auswahl einen Wert liefern, dann darf der ELSE- bzw.’’’’’’’’’’’’’’Nder OTHERWISE-Teil nicht fehlen und alle Zweige mŪssen einen Wert liefern. ’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ SELECT monat OF ’’’’’’’’’’’’’ CASE 2: IF schaltjahr ’’’’ THEN 29 ’’’’’’’ ELSE 28 ’’’’’’’ END IF ’’’’’’’’’’’ CASE 4, 6, 9, 11: 30 ’’’’’. CASE 1, 3, 5, 7, 8, 10 ,12: 31 ’’’’’’’’’’’ OTHERWISE kein monat; 0 ’’N____________________________________________________________________________ ’2.4.2.5 Wiederholung ’’’’’’’’NDie Wiederholung dient zur mehrfachen AusfŪhrung von Anweisungen, meist in AbŻNhŁngigkeit von einer Bedingung. Darum wird die Wiederholungsanweisung oft auchNSchleife genannt und die in ihr enthaltenen Anweisungen Schleifenrumpf. ’’’’’’.Es gibt verschiedene Schleifentypen: ’’’’’’’’’- Endlosschleife ’’’’’’’’’’’’- abweisende Schleife ’’’’’’’- nicht abweisende Schleife ’- ZŁhlschleife. ’’’’’’’’’’’’’Endlosschleife ’’’’’’’’’’’’’’’^Bei der Endlosschleife wird nicht spezifiziert, wann die Schleife beendet werden soll. ’’’’’’’.#on("i")##on("b")#REPEAT#off("i")##off("b")# ’>#on("i")##on("b")#END REPEAT#off("i")##off("b")# ’’’’’’’’’’’’’¾Anstelle von #on("i")##on("b")#REPEAT#off("i")##off("b")# darf die AbkŪrzung #on("i")##on("b")#REP#off("i")##off("b")# und anstelle von #on("i")##on("b")#END REPEAT#off("i")##off("b")# ’’’’’^das SchlŪsselwort #on("i")##on("b")#PER#off("i")##off("b")# (REP von hinten gelesen)’’’’’’’’’’benutzt werden. ’’’’’’’’’’’’’’N______________________________öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö______________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ fixpoint;  pause (18000) ’’’’’’’’’’’’N____________________________________________________________________________ ’NWird dieses Programm in einer Task im SYSUR-Zweig ausgefŪhrt, so fŪhrt diese’’>Task Fixpunkte im Abstand von 30 Minuten durch. ’’’’’’’’’’’’’’Abweisende Schleife ’’’’’’’’’’^Bei der abweisenden Schleife wird die Abbruchbedingung an den Anfang der Schleife’’’’’’’’’’’’’n#on("i")##on("b")#WHILE#off("i")##off("b")# Bedingung #on("i")##on("b")#REPEAT#off("i")##off("b")# ’’’’’’’’’’’>#on("i")##on("b")#END REPEAT#off("i")##off("b")# ’’’’’’’’’’’’’^Bei jedem erneuten Durchlauf der Schleife wird ŪberprŪft, ob der BOOLesche AusŻ’’’’’’’’’’’’’’’^druck den Wert TRUE liefert. Ist das nicht der Fall, wird die Bearbeitung mit der’’’’’’’’’’’’’^Anweisung fortgesetzt, die auf das Schleifenende folgt. Die Schleife wird abweisende’’’’’’’’’’^Schleife genannt, weil der Schleifenrumpf nicht ausgefŪhrt wird, wenn die Bedingung’’’’’’’’’’’>vor Eintritt in die Schleife bereits FALSE liefert. ’’’’’’’’’’Nicht abweisende Schleife ’’’’^Anders verhŁlt es sich bei der nicht abweisenden Schleife. Bei der nicht abweisenden’’’’’’’’’’NSchleife wird die Abbruchbedingung an das Ende der Schleife geschrieben. ’’’’’.#on("i")##on("b")#REPEAT#off("i")##off("b")# ’n#on("i")##on("b")#UNTIL#off("i")##off("b")# Bedingung #on("i")##on("b")#END REPEAT#off("i")##off("b")# ’’’’’’’^Hier wird der Schleifenrumpf auf jeden Fall einmal bearbeitet. Am Ende des Rumpfes’’’’’’’’’’’’Nwird die BOOLesche Bedingung abgefragt. Liefert sie den Wert FALSE, wird die’’^Schleife erneut abgearbeitet. Liefert die Bedingung den Wert TRUE, wird die Schleife’’’’’’’’’’^abgebrochen und mit der ersten Anweisung hinter der Schleife in der Bearbeitung’’’’’’’’’’’’’’’fortgefahren. ^Bei den beiden letztgenannten Arten der Wiederholungsanweisung ist es wichtig, daū’’’’’’’’’’’’NElemente der BOOLeschen Bedingung in der Schleife verŁndert werden, damit das’NProgramm terminieren kann, d.h. die Schleife abgebrochen wird. ’’’’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ TEXT VAR wort, satz :: ""; ’’ get (wort); ’’’’’’’’’’’’’’’ satz CAT wort; ’’’’’’’’’’’’ satz CAT " " ’’’’’’’’’’’’’’ UNTIL wort = "." PER; ’’’’’’’N____________________________________________________________________________ ’^Dises Programm liest solange WŚrter ein und verbindet diese zu einem Satz, bis ein’’’’’’’’’’’’Punkt eingegeben wurde. ’’’’’’^ZŁhlschleifen werden eingesetzt, wenn die genaue Anzahl der SchleifendurchlŁufe’’’’’’’’’’’’’’’Ī#on("i")##on("b")#FOR#off("i")##off("b")# Laufvariable #on("i")##on("b")#FROM#off("i")##off("b")# Anfangswert #on("i")##on("b")#UPTO#off("i")##off("b")# Endwert #on("i")##on("b")#REPEAT#off("i")##off("b")# >#on("i")##on("b")#END REPEAT#off("i")##off("b")# ’’’’’’’’’’’’’^Bei ZŁhlschleifen wird eine Laufvariable verwendet, die die INT-Werte von 'AnfangsŻ’’’’’’’’’’’^wert' bis 'Endwert' in Schritten von 1 durchlŁuft. 'Anfangswert' und 'Endwert' kŚnnen’’’’’’’’’~beliebige INT-AusdrŪcke sein. Diese Schleife zŁhlt "aufwŁrts". Wird anstatt #on("i")##on("b")#UPTO#off("i")##off("b")#’’’’’’’’~das SchlŪsselwort #on("i")##on("b")#DOWNTO#off("i")##off("b")# verwendet, wird mit Schritten von 1 "abwŁrts" gezŁhlt. ’’’’’’’’Ž#on("i")##on("b")#FOR#off("i")##off("b")# Laufvariable #on("i")##on("b")#FROM#off("i")##off("b")# Endwert #on("i")##on("b")#DOWNTO#off("i")##off("b")# Anfangswert #on("i")##on("b")#REPEAT#off("i")##off("b")# ’’’’’’’’’’’’’’>#on("i")##on("b")#END REPEAT#off("i")##off("b")# ’’’’’’’’’’’’’^Die Laufvariable darf in der Schleife nicht verŁndert werden. Nach dem normalen’’’’’’’’’’’’’’’>Schleifenende ist der Wert der Laufvariablen nicht definiert. N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ INT VAR summe :: 0, i; ’’’’’’ FOR i FROM 1 UPTO 100 REPEAT  summe INCR i ’’’’’’’’’’’’’N____________________________________________________________________________ ’NDieses Programm berechnet die Summe der natŪrlichen Zahlen von 1 bis 100. ’’’’>Die verschiedenen Schleifenarten kŚnnen kombiniert werden: ’’’®#on("i")##on("b")#FOR#off("i")##off("b")# Laufvariable #on("i")##on("b")#FROM#off("i")##off("b")# Anfangswert #on("i")##on("b")#UPTO#off("i")##off("b")# Endwert ’’’’’’’’’’’’’n#on("i")##on("b")#WHILE#off("i")##off("b")# Bedingung #on("i")##on("b")#REPEAT#off("i")##off("b")# ’’’’’’’’’’’>#on("i")##on("b")#END REPEAT#off("i")##off("b")# ’’’’’’’’’’’’’Ī#on("i")##on("b")#FOR#off("i")##off("b")# Laufvariable #on("i")##on("b")#FROM#off("i")##off("b")# Anfangswert #on("i")##on("b")#UPTO#off("i")##off("b")# Endwert #on("i")##on("b")#REPEAT#off("i")##off("b")# n#on("i")##on("b")#UNTIL#off("i")##off("b")# Bedingung #on("i")##on("b")#END REPEAT#off("i")##off("b")# ’’’’’’’n#on("i")##on("b")#WHILE#off("i")##off("b")# Bedingung #on("i")##on("b")#REPEAT#off("i")##off("b")# ’’’’’’’’’’’n#on("i")##on("b")#UNTIL#off("i")##off("b")# Bedingung #on("i")##on("b")#END REPEAT#off("i")##off("b")# ’’’’’’’.2.4.3 Abstrahierende Programmeinheiten ’’’’’’.2.4.3.1 Refinementvereinbarung ’’’’’’’’’’’’’’NIn ELAN ist es mŚglich, Namen fŪr AusdrŪcke oder eine bzw. mehrere AnweisungenNzu vergeben. Das Sprachelement, das diese Namensgebung ermŚglicht, heiūt RefiŻNnement. Die AusfŪhrung eines solchen Namens heiūt Refinementanwendung (siehe’’N2.4.1.3), die Namensgebung heiūt Refinementvereinbarung. Die AusdrŪcke oder’’’.Anweisungen bilden den Refinementrumpf. ’’’’’’NWerden in einem Programm Refinements benutzt, dann wird der Programmteil bis’’Nzum ersten Refinement durch einen Punkt abgeschlossen. Die RefinementvereinbaŻ.rung sieht folgendermaūen aus: ’’’’’’’’’’’’’’’.Name #on("i")##on("b")#:#off("i")##off("b")# ’> Abschnitt #on("i")##on("b")#.#off("i")##off("b")# ’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ INT VAR a, b, x; ’’’’’’’’’’’’ einlesen von a und b; ’’’’’’’ vertauschen von a und b; ’’’’ vertauschte werte ausgeben. ’ einlesen von a und b: ’’’’’’’ vertauschen von a und b: ’’’’ vertauschte werte ausgeben: ’N____________________________________________________________________________ ’^FŪr den Namen 'einlesen von a und b' werden die Anweisungen 'get (a); get (b)' vom’’’’’’’’’’’’^ELAN-Compiler eingesetzt. Man kann also die ersten vier Zeilen des Programms als’’’’’’’’’’’’’’Neigentliches Programm ansehen, wobei die Namen durch die betreffenden AnweiŻ’’^sungen ersetzt werden. Ein Refinement hat also keinen eigenen Datenbereich, d.h.’’’’’’’’’’’’’’NVereinbarungen, die in Refinements gemacht werden, gelten auch auūerhalb des’’.Vorteile der Refinementanwendung ’’’’’’’’’’’’’NDurch die sinnvolle Verwendung von Refinements wird ein Programm im Programm’’^und nicht in einer separaten Beschreibung dokumentiert. Weiterhin kann ein ProŻ’’’’’’’’’’’’’’’Ngramm "von oben nach unten" ("top down") entwickelt werden: Das obige - zugeŻ’Ngeben einfache - Beispielprogramm wurde in drei Teile zerlegt und diese durch’NNamen beschrieben. Bei der Beschreibung von Aktionen durch Namen wird gesagt’’^was gemacht werden soll. Es wird noch nicht beschrieben wie, denn auf dieser Stufe’’’’’’’’’’’’Nder Programmentwicklung braucht man sich um die Realisierung der Refinements’’^(noch) keine Sööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööorgen zu machen. Das erfolgt erst, wenn das Refinement programmiert’’’’’’’’’’’’’Nwerden muū. Dabei kŚnnen wiederum Refinements verwendet werden usw., bis man’’^auf eine Ebene "heruntergestiegen" ist, bei der eine (jetzt: Teil-) ProblemlŚsung sehr’’’’’’’’^einfach ist und man sie direkt hinschreiben kann. Man beschŁftigt sich also an jedem’’’’’’’’’’NPunkt der ProblemlŚsung nur mit einem Teilaspekt des gesamten Problems. Zudem’Nsieht man - wenn die Refinements einigermaūen vernŪnftig verwendet werden -’’’>dem Programm an, wie die ProblemlŚsung entstanden ist. ’’’’’’’NDie Verwendung von Refinements hat also eine Anzahl von Vorteilen. ’’’’’’’’’’’Refinements ermŚglichen: ’’’’’.- "top down" - Programmierung ’’’’’’’’’’’’’’’^- Strukturierung von Programmen und damit effiziente Fehlersuche und gute WartŻ’’’’’’’’’’’’’’.- Dokumentation im Programmtext. ’’’’’’’’’’’’Wertliefernde Refinements ’’’’^Refinements kŚnnen auch dort verwendet werden, wo ein Wert erwartet wird, z.B. in’’’’’’’’’’’’’^einem Ausdruck oder einer 'put'-Anweisung. In diesem Fall muū die letzte AnweiŻ’’’’’’’’’’’’’’’.sung des Refinements einen Wert liefert. ’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT VAR a :: 1, b :: 2, c :: 3; ’’’’’’’’’’’’’ put (resultat). ’’’’’’’’’’’’’ (a * b + c) ** 3. ’’’’’’’’N____________________________________________________________________________ ’NMan kann auch ein wertlieferndes Refinement mit mehreren Anweisungen schreiŻ’’Allgemeine Regel: ’’’’’’’’’’’’^Die letzte Anweisung eines Refinements bestimmt, ob es einen Wert liefert - und’’’’’’’’’’’’’’’.wenn ja, von welchen Datentyp. ’’’’’’’’’’’’’’’2.4.3.2 Prozedurvereinbarung ^Eine Prozedur ist eine Sammlung von Anweisungen und Daten, die zur LŚsung einer’’’’’’’’’’’’’’’.bestimmten Aufgabe benŚtigt werden. ’’’’’’’’’’>Der formale Aufbau einer Prozedur sieht folgendermaūen aus: ’’n#on("i")##on("b")#PROC#off("i")##off("b")# Prozedurname #on("i")##on("b")#:#off("i")##off("b")# ’’’’’’’’’’’’’’ Prozedurrumpf ’’’’’’’’’’’’’>#on("i")##on("b")#END PROC#off("i")##off("b")# Prozedurname ’’NDer Prozedurrumpf kann Deklarationen, Anweisungen und Refinements enthalten. ’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> PROC loesche bildschirm ab aktueller cursorposition: ’’’’ out (""4"") ’’’’’’’’’’> END PROC loesche bildschirm ab aktueller cursorposition ’N____________________________________________________________________________ ’Verwendung von Prozeduren ’’’’.Prozeduren werden verwendet, wenn ’’’’’’’’’’’’N- Anweisungen und Datenobjekte unter einem Namen zusammengefaūt werden’’’’’’’ sollen ("Abstraktion") ’’’’N- gleiche Anweisungen von mehreren Stellen eines Programms verwandt werden’’’N sollen (Codereduktion), u.U. mit verschieden Datenobjekten (Parameter) ’’’’^- Datenobjekte nur innerhalb eines Programmteils benŚtigt werden und diese nicht’’’’’’’’’’’’’> von dem gesamten Programm angesprochen werden sollen. ’’’’’^In den folgenden Programmfragmenten werden zwei Werte vertauscht. In der ersten’’’’’’’’’’’’’’’NLŚsung wird ein Refinement, in der zweiten eine Prozedur verwandt. ’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ THEN vertausche a und b ’’’ vertausche a und b. ’’’’’’’’’ vertausche a und b: ’’’’’’’’’ INT CONST x :: a; ’’’’’’’’N____________________________________________________________________________ ’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’ PROC vertausche a und b: ’’’’ INT CONST x :: a; ’’’’’’’’ END PROC vertausche a und b;  THEN vertausche a und b ’’’ vertausche a und b; ’’’’’’’’’N____________________________________________________________________________ ’NBeim ersten Hinsehen leisten beide Programme das Gleiche. Es gibt jedoch drei’wichtige Unterschiede: ’’’’’’’N1) Das Refinement 'vertausche a und b' wird zweimal (vom ELAN-Compiler) einŻ’’^ gesetzt, d.h. der Code ist zweimal vorhanden. Die Prozedur dagegen ist vom Code’’’’’’’’’’’’N nur einmal vorhanden, wird aber zweimal - durch das AuffŪhren des ProzedurŻ namens - aufgerufen. ’’’’’’^2) Die Variable 'x' ist in der ersten Programmversion wŁhrend des gesamten Ablauf’’’’’’’’’’’’’^ des Programms vorhanden, d.h. ihr Speicherplatz ist wŁhrend dieser Zeit belegt.’’’’’’’’’’’’^ Solche Datenobjekte nennt man statische Datenobjekte oder auch (aus GrŪnden,’’’’’’’’’’’’’’’^ die erst etwas spŁter offensichtlich werden) Paket-Objekte. Das Datenobjekt 'x'’’’’’’’’’’’’^ der rechten Version dagegen ist nur wŁhrend der Bearbeitung der Prozedur vorŻ’’’’’’’’’’’’’’^ handen, sein Speicherplatz wird danach freigegeben. Solche Datenobjekte, die nur’’’’’’’’’’’N kurzfristig Speicher belegen, werden dynamische Datenobjekte genannt. ’’’’’N Prozeduren sind also ein Mittel, um die Speicherbelegung zu beeinflussen. ’^3) Da Refinements keinen eigenen Datenbereich haben, kann die Variable 'x' in der’’’’’’’’’’’’’N ersten Programmversion - obwohl sie in einem Refinement deklariert wurde -’N von jeder Stelle des Programms angesprochen werden. Solche Datenobjekte’’’’^ werden globale Datenobjekte genannt. Das Datenobjekt 'x' der Prozedur dagegen’’’’’’’’’’’’’’^ kann nur innerhalb der Prozedur angesprochen werden, es ist also ein lokales’’’’’’’’’’’’’’’^ Datenobjekt der Prozedur. Innerhalb der Prozedur dŪrfen globale Datenobjekte’’’’’’’’’’’’’’’^ (also Objekte, die auūerhalb von Prozeduren deklariert wurden) auch angesproŻ’’’’’’’’’’’’’’ chen werden. ’’’’’’’’’’’’’’^ Eine Prozedur in ELAN bildet im Gegensatz zu Refinements einen eigenen GŪltigŻ’’’’’’’’’’’’’^ keitsbereich hinsichtlich Datenobjekten und Refinements, die innerhalb der ProŻ’’’’’’’’’’’’^ zedur deklariert werden. Prozeduren sind somit ein Mittel, um die in ihr deklaŻ’’’’’’’’’’’’^ rierten Datenobjekte hinsichtlich der Ansprechbarkeit nach Auūen "abzuschotten". ’’’’’’’’’’Prozeduren mit Parametern ’’’’^Prozeduren mit Parametern erlauben es, gleiche Anweisungen mit unterschiedlichen’’’’’’’’’’’’’’Datenobjekten auszufŪhren. ’’’Ī#on("i")##on("b")#PROC#off("i")##off("b")# Prozedurname #on("i")##on("b")#(#off("i")##off("b")# formale Parameterliste #on("i")##on("b")#)#off("i")##off("b")# #on("i")##on("b")#:#off("i")##off("b")# ’’’’’’’ Prozedurrumpf ’’’’’’’’’’’’’>#on("i")##on("b")#END PROC#off("i")##off("b")# Prozedurnamen ’^Die Parameterliste besteht aus einem oder mehreren durch Kommata getrennten ParaŻ’’’’’’’’’’’’’Nmetern. Ein Parameter wird mit Datentyp, Accessrecht und Namen angegeben. ’’’’^Öhnlich wie bei der Datendeklaration braucht man fŪr aufeinanderfolgende Parameter’’’’’’’’’’’’^mit gleichem Datentyp und gleichem Accessrecht die Attribute nur einmal anzugeben.’’’’’’’’’’’’~Parameter mit Accessrecht #on("i")##on("b")#CONST#off("i")##off("b")# sind Eingabeparameter, Parameter mit AccessŻ’’’’’’’’’’’’^recht #on("i")##on("b")#VAR#off("i")##off("b")# realisieren Ein-/Ausgabeparameter. ’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. PROC vertausche (INT VAR a, b): ’’’’’’’’’’’’’ INT VAR x :: a; ’’’’’’’’’’ END PROC vertausche; ’’’’’’’’ INT VAR eins öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö:: 1, ’’’’’’’’’’ zwei :: 2, ’’’’’’’’’’ drei :: 3; ’’’’’’’’’’ vertausche (eins, zwei); ’’’’ vertausche (zwei, drei); ’’’’ vertausche (eins, zwei); ’’’’. put (eins); put (zwei); put (drei) ’’’’’’’’’’N____________________________________________________________________________ ’^Die Datenobjekte 'a' und 'b' der Prozedur 'vertausche' werden formale Parameter’’’’’’’’’’’’’’’^genannt. Sie stehen als Platzhalter fŪr die bei einem Prozeduraufruf einzusetzenden’’’’’’’’’’’^aktuellen Parameter (in obigen Beispiel die Datenobjekte 'eins', 'zwei' und 'drei'). ’’’’’’’’’Prozeduren als Parameter ’’’’’>Es ist auch mŚglich, Prozeduren als Parameter zu definieren. ’^Eine Prozedur als Parameter wird folgendermaūen in der Parameterliste spezifiziert: ’’’’’’’’’®Resultattyp #on("i")##on("b")#PROC#off("i")##off("b")# #on("i")##on("b")#(#off("i")##off("b")# virtuelle Parameterliste #on("i")##on("b")#)#off("i")##off("b")# Prozedurname ’^Die Angabe des Resultattyps entfŁllt, wenn es sich nicht um eine wertliefernde ProzeŻ’’’’’’’’’^dur handelt. Die virtuelle Parameterliste inklusive der Klammern entfŁllt, falls die’’’’’’’’’’^Prozedur keine Parameter hat. Die virtuelle Parameterliste beschreibt die ParameŻ’’’’’’’’’’’’’^ter der Parameterprozedur. Es werden Datentyp und Zugriffsrecht eines jeden ParaŻ’’’’’’’’’’’’’.meters angegeben, jedoch ohne Namen. ’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’> PROC wertetabelle (REAL PROC (REAL CONST) funktion, ’’’’’’’’’> REAL CONST untergrenze, obergrenze, ’’’’’’. schrittweite): ’’’’’’ REAL VAR wert; ’’’’’’’’’’’’’’. putline ("W E R T E T A B E L L E"); ’’’’’’’’. putline ("-----------------------"); ’’’’’’’’ wert := untergrenze; ’’’’’’’’ put (text (wert, 10, 5)); . put (text (funktion (wert), 10, 5)); ’’’’’ wert INCR schrittweite ’’’ UNTIL wert > obergrenze PER ’ END PROC wertetabelle; ’’’’’’ (* Prozeduraufruf: *) ’’’’’’’> wertetabelle (REAL PROC (REAL CONST) sin, 0.0, pi, 0.2) ’’’’’N____________________________________________________________________________ ’Wertliefernde Prozeduren ’’’’’>Eine wertliefernde Prozedur sieht folgendermaūen aus: ’’’’’’’’ŽResultattyp #on("i")##on("b")#PROC#off("i")##off("b")# Prozedurname #on("i")##on("b")#(#off("i")##off("b")# formale Parameterliste #on("i")##on("b")#)#off("i")##off("b")# #on("i")##on("b")#:#off("i")##off("b")# ’’’’’’’’’’’. wertliefernder Prozedurrumpf ’’’’’’’’’’’’’’>#on("i")##on("b")#END PROC#off("i")##off("b")# Prozedurnamen ’^Die Parameterliste inklusive Klammerung kann fehlen. Der Prozedurrumpf muū einen’’’’’’’’’’’’’’>Wert mit dem in Resultattyp angegeben Datentyp liefern. ’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT PROC max (INT CONST a, b): ’’’’’’’’’’’’’’ END PROC max; ’’’’’’’’’’’’’’’ put (max (3, 4)) ’’’’’’’’’’’’N____________________________________________________________________________ ’^(In diesem Beispiel wird das Maximum von 'a' und 'b' ermittelt und ausgegeben) ’’’’’’’’’’’’’’’2.4.3.3 Operatorvereinbarung NOperatoren kŚnnen in ELAN Łhnlich wie Prozeduren definiert werden. Operatoren’^mŪssen einen und kŚnnen maximal zwei Operatoren besitzen (monadische und dyadiŻ’’’’’’’’’’’’’’’sche Operatoren). ’’’’’’’’’’’’ĪResultattyp #on("i")##on("b")#OP#off("i")##off("b")# Opname #on("i")##on("b")#(#off("i")##off("b")# ein oder zwei Parameter #on("i")##on("b")#)#off("i")##off("b")# #on("i")##on("b")#:#off("i")##off("b")# ’’ Operatorrumpf ’’’’’’’’’’’’’>#on("i")##on("b")#END OP#off("i")##off("b")# Opname ’’’’’’’’’’NDer Resultattyp wird nur bei wertliefernden Operatoren angegeben. ’’’’’’’’’’’’.Als Operatornamen sind erlaubt: ’’’’’’’’’’’’’’N- ein Sonderzeichen, sofern es nicht als Trennzeichen benutzt wird: ’’’’’’’’’> ! $ % & ' * + - / < = > ? @ ^ ' ~ ’’’’’’’’’^- eine Kombination von zwei Sonderzeichen. Diese Kombination muū jedoch bereits’’’’’’’’’’’’’’ in ELAN existieren: ’’’’’’’ := <= >= <> ** ’’’’.- ein SchlŪsselwort (siehe 2.2.1). ’’’’’’’’’’.Vereinbarung eines monadischen Operators ’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. INT OP SIGN (REAL CONST argument): ’’’’’’’’’’. IF argument < 0.0 THEN -1 ’’’’’’’’’’’. ELIF argument = 0.0 THEN 0 ’’’’’’’’’’’’. ELSE 1 ’’’’’’’’’’’’N____________________________________________________________________________ ’^(Der Operator 'SIGN' liefert abhŁngig vom Vorzeichen des Ūbergebenen Wertes den’’’’’’’’’’’’’’’INT-Wert -1, 0 oder 1) ’’’’’’’.Vereinbarung eines dyadischen Operators ’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. TEXT OP * (INT CONST anzahl, TEXT CONST t): ’. INT VAR zaehler :: anzahl; ’’’’’’’’’’’’’’ TEXT VAR ergebnis :: ""; ’ WHILE zaehler > 0 REP ’’’’. ergebnis := ergebnis + t; ’’’’’’’’’’’’’ zaehler := zaehler - 1 N____________________________________________________________________________ ’>(Der Operator '*' verkettet 'anzahl'- mal den Text 't') ’’’’’’2.4.3.4 Paketvereinbarung ’’’NPakete sind in ELAN eine Zusammenfassung von Datenobjekten, Prozeduren, OperaŻ^toren und Datentypen. Diese bilden den Paketrumpf. Elemente eines Pakets (ProzeduŻ’’’’’’’’’’’’^ren, Operatoren, Datentypen) kŚnnen auūerhalb des Pakets nur angesprochen werden,’’’’’’’’’’’’’^wenn sie in der Schnittstelle des Pakets, die auch "interface" genannt wird, aufgeŻ’’’’’’’’’’’^fŪhrt werden. Mit anderen Worten: es kŚnnen alle Elemente eines Pakets von auūen’’’’’’’’’’’’’’^nicht angesprochen werden, sofern sie nicht Ūber die Schnittstelle "nach auūen geŻ’’’’’’’’’’’’Nreicht" werden. Pakete kŚnnen separat Ūbersetzt werden, so daū der "ZusammenŻ’Nbau" eines umfangreichen Programms aus mehreren Paketen mŚglich ist. ’’’’’’’’’>Der formale Aufbau eines Pakets sieht folgendermaūen aus: ’’’’ž#on("i")##on("b")#PACKET#off("i")##off("b")# Paketname #on("i")##on("b")#DEFINES#off("i")##off("b")# Schnittstelle #on("i")##on("b")#:#off("i")##off("b")# ’’’ Paketrumpf >#on("i")##on("b")#END PACKET#off("i")##off("b")# Paketname ’’’^In der Schnittstelle werden Prozeduren und Operatoren nur mit ihrem Namen, durch’’’’’’’’’’’’’’NKommata getrennt, angegeben. Weiterhin kŚnnen Datentypen und mit CONST vereinŻ^barte Datenobjekte in der Schnittstelle aufgefŪhrt werden, aber keine VAR-DatenobŻ’’’’’’’’’’’’Njekte, weil diese sonst Ūber Paket-Grenzen hinweg verŁndert werden kŚnnten. ’’^Im Gegensatz zu einer Prozedur kann ein PACKET nicht aufgerufen werden (nur die’’’’’’’’’’’’’’’>Elemente der Schnittstelle kŚnnen benutzt werden). ’’’’’’’’’’’>Pakete werden zu folgenden Zwecken eingesetzt: ’’’’’’’’’’’’’’’- Spracherweiterung ’’’’’’’’’>- Schutz vor fehlerhaftem Zugriff auf Datenobjekte ’’’’’’’’’’.- Realisierung von abstrakten Datentypen. ’’’Spracherweiterung ’’’’’’’’’’’’N____________________________________________________________________________ ’N ........................... Beispiel: ......................... ’’’’’’’’’’’’’. PACKET fuer eine prozedur DEFINES swap: ’’’’’ PROC swap (INT VAR a, b): ’’’ INT CONST x :: a; ’’’’’’’’ END PROC swap ’’’’’’’’’’’’’’’. END PACKET fuer eine prozedur ’’’’’’’’’’’’’’’N______________öööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö