MP: Jahrgang 4, Heft 3 [Reprint 2022 ed.]
 9783112610909, 9783112610893

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

ZEITSCHRIFT

FÜR M I K R O E L E K T R O N I K

• COMPUTERTECHNIK • INFORMATIK

Mikroprozessortechnik VEB Verlag Technik Berlin ISSN 0 2 3 2 - 2 8 9 2

Clipper

Notation < > [] |

Teile, die in d e n C l i p p e r - K o m m a n d o s vorn Nutzer z u ersetzen sind, Teile, die wahlweise a n g e g e b e n w e r d e n können. Alternativen

{} wahlweise W i e d e r h o l u n g S C H L Ü S S E L W Ö R T E R v o n C l i p p e r - K o m m a n d o s w e r d e n in g r o ß e n B u c h s t a b e n gedruckt. Einige e l e m e n t a r e Sprachkonstruktionen (Metasymbole) werden w e g e n ihrer Einfachheit nur verbal erklärt oder als selbsterklärend betrachtet: < a u s d r > Ausdruck < b e d i n g u n g > u n d < l _ a u s d r > logischer A u s d r u c k < c _ a u s d r > A u s d r u c k v o m T y p Z e i c h e n k e t t e (character, Zeichen) < c m _ > a u s d r > A u s d r u c k v o m T y p Zeichenkette oder M e m o < c L a u s d r > Ausdruck v o m Typ Datum < n _ a u s d r > numerischer A u s d r u c k < g b > Gültigkeitsbereich ( N E X T < n _ a u s d r > oder R E C O R D < n _ a u s d r > oder ALL). Kommandos ! | RUN < D O S _ k o m m a n d o > Aufruf eines D O S - K o m m a n d o s . && < t e x t > Leitet einen K o m m e n t a r in K o m m a n d o z e i l e n ein. * | NOTE < t e x t > K o m m e n t a r z e i l e mit Makroersetzung, ? [ < a u s d r _ l i s t e > ] Ü b e r g a n g zur nächsten Zeile (er, If) und A u s g a b e einer Folge von A u s d r ü c k e n auf d e m Bildschirm. ?? < a u s d r _ l i s t e > A u s g a b e einer Folge v o n A u s d r ü c k e n auf d e m Bildschirm, o h n e vorherigen Z e i l e n w e c h s e l (er, If). @ coben>,,,BOX Zeichnen eines R a h m e n s auf d e m Bildschirm. Die ersten n e u n Z e i c h e n v o n < c _ a u s d r > definieren die Rand- und Fülizeichen, b e g i n n e n d mit d e m Z e i c h e n für die linke obere Ecke. @ < o b e n > , < l i n k s > CLEAR [TO < u n t e n > , < r e c h t s > ] Löschen e i n e s Rechtecks auf d e m Bildschirm. @ < z e i l e > , < s p a l t e > PROMPT < c _ a u s d r _ 1 > [MESSAGE < c _ a u s d r _ 2 > ] A u s g a b e e i n e s M e n ü t e x t e s (c_ausdr_1) und eines Erläuterungstextes ( c _ a u s d r _ 2 ) b e g i n n e n d auf der a n g e g e b e n e n Position (vgl. S E T M E S S A G E und M EN U TO). @ , [SAY < a u s d r > [ P I C T U R E < k l a u s e l > ] ] [[GET < v a r > [ P I C T U R E < k l a u s e l > ] [RANGE < a u s d r _ 1 > , < a u s d r _ 2 > j [VALID < b e d i n g u n g > ] ] A u s g a b e d e s b e r e c h n e t e n Wertes v o n < a u s d r > auf d e m Bildschirm a b der a n g e g e b e n e n Z e i l e u n d Spalte. A n f o r d e r u n g eines W e r t e s für die Variable oder für das Feld nach G E T . < k l a u s e l > enthält Formatfunktionen und -zeichen. R A N G E definiert einen Gültigkeitsbereich für n u m e r i s c h e und D a t u m s w e r t e . V A L I D legt eine Bedingung fest, d i e die W e r t e erfüllen müssen (vgl. READ), @ c o b e n > , < l i n k s > TO < u n t e n > , < r e c h t s > [DOUBLE] Z e i c h n e n eines R a h m e n s auf d e m Bildschirm mit einfacher o d e r doppelter Umrandung (DOUBLE). ACCEPT [ < p r o m p t > ] TO < s p e i c h e r v a r > Eingabe einer Z e i c h e n k e t t e v o n der Tastatur. APPEND BLANK A n f ü g e n eines Datensatzes an das Ende des aktiven Datenbankfiles, APPEND FROM < f i l e n a m e > [ < g b > ] [FOR j WHILE < b e d i n g u n g > ] [FIELDS < f e l d l i s t e > ] [SDF] | [DELIMITED [WITH BLANK | < z e i c h e n > ] ] A n f ü g e n eines Datenbankfiles oder eines Textfiles (SDF) a n d a s E n d e d e s aktiven Datenbankfiles. AVERAGE [ < g b > ] < a u s d r _ l i s t e > TO < v a r _ l i s t e > [FOR | WHILE < b e d i n g u n g > ] B e r e c h n u n g d e s Mittelwertes numerischer Felder. BOX Siehe @ . . , BOX. BEGIN SEQUENCE [] [BREAK] [] END Strukturierte A n w e i s u n g zur privaten Fehlerbehandlung. D i e A b a r b e i t u n g von B R E A K bewirkt die Übergabe der P r o g r a m m s t e u e r u n g an d a s Komm a n d o nach d e m END. CALL < e x t e r n _ p r o g > [WITH < p a r a m e t e r _ l i s t e > ] Aufruf separat übersetzter P r o g r a m m e anderer Sprachen. CASE Siehe DO CASE. CANCEL | QUIT A b b r u c h der P r o g r a m m a u s f ü h r u n g , Schließen aller Dateien und Rückkehr z u m rufenden Programm. CLEAR Löschen des Bildschirms u n d Deaktivieren der aktiven @ . . . G E T - K o m mandos. CLEAR ALL Abschließen aller in Benutzung befindlichen Files ( D a t e n b a n k - , Index-, Formatfiles usw.), Freigabe aller Speichervariablen u n d A u s w a h l d e s Arbeitsbereichs 1. CLEAR GETS Deaktivieren der aktiven @ . , . G E T - K o m m a n d o s . CLEAR MEMORY L ö s c h e n aller Speichervariablen. CLEAR SCREEN Löschen des Bildschirms. CLEAR TYPEAHEAD Löschen aller Zeichen im internen Tastaturpuffer. CLOSE [ALL | ALTERNATIVE | DATABASES | FORMAT | INDEX] Abschließen der a u s g e w ä h l t e n Files. COMMIT Ü b e r g a b e aller Clipper-Puffer an das Betriebssystem ( D O S 3.2) u n d Ausg a b e auf Platte ( D O S 3.3). CONTINUE Fortsetzen d e r S u c h e nach L O C A T E . COPY FILE < q u e l l _ f i l e n a m e > | ( < c _ a u s d r > ) TO < z i e l _ f i l e n a m e > | ( < c _ a u s d r _ 2 > ) Kopieren beliebiger Files. COPY STRUCTURE TO < f i l e n a m e > ] < c _ a u s d r > ) [FIELDS < f e l d l i s t e > ] Es wird ein neues Datenbankfile erstellt, mit der Struktur d e s aktiven Da-

tenbankfiles und null S ä t z e n . COPY STRUCTURE EXTENDED TO < s t r u k t u r f i l e > | ( < c _ a u s d r > ) Die Struktur des aktiven Datenbankfiles wird z u m Inhalt d e s Datenbankfiles. COPY TO < f i l e n a m e > | ( < c ^ a u s d r > ) [ < g b > ] [FIELDS < f e l d l i s t e > [FOR | WHILE < b e d i n g u n g > ] [SDF | DELIMITED [WITH BLANK | < z e i c h e n > ] ] K o p i e r e n d e s aktiven Datenbankfiles in e i n anderes D a t e n b a n k - oder Textfile. COUNT [ < g b > ] [FOR | WHILE < b e d i n g u n g > ] TO < s p e i c h e r v a r > Anzahl der Datensätze. CREATE < f i l e n a m e > | ( < c _ a u s d r > ) E r z e u g e n eines leeren Strukturfiles. CREATE < f i l e n a m e > | ( < c _ a u s d r _ 1 > ) E r z e u g e n eines leeren Strukturfiies. CREATE < f i l e n a m e > | ( < c _ a u s d r _ 1 > ) FROM < s t r u k t u r f i l e > | ( < c _ a u s d r _ 2 > ) Erzeugen eines Datenbankfiles mit d e r im Strukturfile b e s c h r i e b e n e n Struktur. DECLARE < s p e i c h e r v a r > [ < n _ a u s d r > ] { < s p e i c h e r v a r > [ < n _ a u s d r > ] . . . } Deklaration eindimensionaler Felder. Beachte: Hier sind die e c k i g e n K l a m m e r n keine Hilfssymbole! ( D E C L A R E a[5]). DELETE [ < g b > ] [FOR | WHILE < b e d i n g u n g > ] L ö s c h m a r k i e r u n g für D a t e n s ä t z e setzen. DELETE FILE < f i l e n a m e > | ( < c _ a u s d r > ) Löschen d e s a n g e g e b e n e n Files. DIR [ < g e r ä t > : ] [ < p f a d > \ ] [ < f i l e g r u p p e > | ( < c _ a u s d r > ) ] Anzeige der ausgewählten Filenamen, DISPLAY [ < g b > ] [ < a u s d r _ l i s t e > ] [FOR [ WHILE < b e d i n g u n g > ] [OFF] [TO PRINT | TO FILE < f i l e n a m e > | ( < c _ a u s d r > ) ] A u s g a b e der berechneten Werte. DO < f i l e n a m e > [WITH < p a r a m e t e r _ l i s t e > ] A u f r u f e i n e s K o m m a n d o f i l e s oder einer Prozedur. DO CASE CASE < b e d i n g u n g >

{CASE < b e d i n g u n g > ...} [OTHERWISE < k o m r n a n d o f o l g e > ] ENDCASE Strukturierte A n w e i s u n g zur Ü b e r g a b e der P r o g r a m m s t e u e r u n g a n d e n ersten Fall, dessen B e d i n g u n g erfüllt ist. 00 WHILE < b e d i n g u n g > [] ENDDO Strukturierte A n w e i s u n g zur zyklischen A b a r b e i t u n g der K o m m a n d o f o l g e , s o l a n g e d i e Bedingung erfüllt ist (siehe L O O P , EXIT). EJECT S e i t e n v o r s c h u b auf d e m Drucker. ERASE < f i l e n a m e > | ( < c _ a u s d r > ) Löschen d e s a n g e g e b e n e n Files. EXIT Verlassen eines D O - W H I L E - oder eines FOR-Zyklus und Fortsetzung mit dem auf d a s zugehörige E N D D O folgenden K o m m a n d o , EXTERNAL < p r o z _ l i s t e > E r z w u n g e n e B e z u g n a h m e auf e i n e x t e r n e s S y m b o l . FIND < z e i c h e n f o l g e > | ( < c _ a u s d r > ) Voraussetzung; Die aktive D a t e n b a n k ist mit e i n e m Indexfile in Benutzung. Dann bewirkt F I N D d i e Positionierung d e s Dateizeigers auf d e n ersten Datensatz, für d e n Indexschlüssel u n d b e rechnete Z e i c h e n k e t t e gleich sind. FOR < s p e i c h e r v a r > = < a n f a n g s w e r t > TO < e n d w e r t > [STEP < s c h r i t t w e i t e > ]

NEXT Strukturierte A n w e i s u n g für die zyklische A b a r b e i t u n g d e r K o m m a n d o folge in Abhängigkeit v o n Zählwerten (Laufanweisung). FUNCTION < f u n k _ n a m e > [PARAMETERS < p a r _ l i s t e > ]

RETURN < a u s d r > Deklaration einer Funktion. GET S i e h e ® . . . S A Y . . . GET. GO | GOTO BOTTOM TOP | < n _ a u s d r > Positionieren des Dateizeigers. IF

< kommandof o i g e >

{ELSEIF ...} [ELSE ] ENDIF Bedingte A n w e i s u n g . INDEX ON < a u s d r > TO < f i l e n a m e > | ( < c _ a u s d r > ) Indizieren der aktiven Datenbank nach d e m a n g e g e b e n e n Ausdruck. Es entsteht ein Indexfile (.ndx). INPUT [ < p r o m p t > ] TO < s p e i c h e r v a r > Sequentielle Eingabe von d e r Tastatur u n d Z u w e i s u n g des e i n g e g e b e n e n W e r t e s an die Speichervariable. JOIN WITH < a l i a s > | ( < c _ a u s d r _ 1 > ) TO < f i l e n a m e > | ( < c _ a u s d r _ 2 > ) FOR < b e d i n g u n g > [FIELDS < f e l d l i s t e > ] Vereinigen a n g e g e b e n e r Felder von z w e i Datenbankfiles. KEYBOARD < c _ a u s d r > Füllen d e s internen Tastaturpuffer. LABEL FORM < f i l e n a m e > | ( < c _ a u s d r _ 1 > ) [SAMPLE] [ < g b > ] [FOR | WHILE < b e d i n gung>] [TO PRINT] [TO FILE] < f i l e n a m e > | ( < c _ a u s d r _ 2 > ) ] A u s g a b e v o n Briefadressen. LIST [OFF] [ < g b > ] [ < a u s d r _ l i s t e > ] [FOR | WHILE < b e d i n g u n g > ] [TO PRINT] [TO FILE < f i l e n a m e > | ( < c _ a u s d r > ) ] A u s g a b e der berechneten Werte der Ausdrucksliste.

Z e i t s c h r i f t für M i k r o e l e k t r o n i k • C o m p u t e r t e c h n i k • I n f o r m a t i k 4. J a h r g a n g • I S S N 0 2 3 2 - 2 8 9 2

Mikroprozessortechnik, Heft 3 • 90 Herausgeber Kammer der Technik, Fachverband Elektrotechnik

Inhalt

Verlag VEB Verlag Technik, Oranienburger Str. 13/14, D D R - 1 0 2 0 Berlin; Telegrammadresse: Technikverlag Berlin; Telefon; 28700, Telex: 011 2228 techn dd

Referenzkarte Clipper

Verlagsdirektor Klaus Hieronimus

MP-Dialog

66

Redaktion Hans Weiß, Verantwortlicher Redakteur (Tel. 2870371); Redakteure: Herbert Hemke (Tel. 2 8 7 0 2 0 3 ) , Hans-Joachim Hill (Tel. 2 8 7 0 2 0 9 ) ; Sekretariat Tel. 2870381

Wilfried Grafik: Clipper im Überblick

67

Gestaltung Christina Bauer

Michael Krapp, Volker Zerbe, Detlef Jahn: Systemprogrammierung in Modula-2 69

Titelbild Stefan Seebold, Thomas Neumann Beirat Dr. Ludwig Claßen, Dr. Heinz Florin, Prof. Dr. sc. Rolf Giesecke, Joachim Hahne, Prof. Dr. sc. Dieter Hammer, Prof. Dr. sc. Thomas Horn, Prof. Dr. Albert Jugel, Prof. Dr. Bernd Junghans, Dr. Dietmar Keller, Prof, Dr. sc. Gernot Meyer, Prof. Dr. sc. Bernd-Georg Münzer, Prof. Dr. sc. Peter Neubert, Prof. Dr. sc. Rudolf Arthur Pose, Prof. Dr, sc. Dr. Michael Roth (Vorsitzender), Dr. Gerhard Schulze, Prof. Dr. sc, Manfred Seifart, Dr. Dieter Simon, Dr. Rolf Wätzig, Prof. Dr. sc. Dr. Jürgen Zaremba Lizenz-Nr. 1710 des Presse- und Informationsdienstes der Regierung der DDR Gesamtherstellung Druckerei Märkische Volksstimme Potsdam Erfüllungsort und Gerichtsstand Berlin-Mitte. Der Verlag behält sich alle Rechte an den von ihm veröffentlichten Aufsätzen und Abbildungen, auch das der Übersetzung in fremde Sprachen, vor. Auszüge, Referate und Besprechungen sind nur mit voller Quellenangabe zulässig.

Die Bezeichnung Clipper steht im Englischen unter anderem für Schnellsegler und Transozeanflugzeug. Vermutlich kommt in der nächsten Zeit eine weitere Bedeutung hinzu: schneller Compiler für eine Datenbanksprache. Auf der Seite 67 stellen wir Ihnen die Version Sommer '87 im Überblick vor und ergänzen den Beitrag mit einer Referenzkarte auf der 2. und 3. Umschlagseite, die alle Befehlsund Schlüsselwörter enthält und Ihnen so den Einstieg und die Arbeit mit Clipper, dem erfolgreichen Compiler der Firma Nantucket, erleichtern soll. Die Funktionen von Clipper folgen im Heft 4/1990.

Redaktionsschluß 9. Januar 1990 AN (EDV) 49837

Bezugsmöglichkeiten DDR: sämtliche Postämter; SVR Albanien: Direktorije Quendrore e Perhapjes dhe Propaganditit te Librit Rruga Konference e Pezes, Tirana; VR Bulgarien: Direkzia R.E.P., 11 a, Rue Paris, Sofia; VR China: China National Publications Import and Export Corporation, West Europe Department, P.O. Box 88, Beijing; ÖSSR: PNS - Ustfedni Expedicia a Dovoz Tisku Praha, Slezskä 11,120 00 Praha 2, PNS, Üstredna Expedicia a Dovoz Tlaöe, Po§ta 022,885 47 Bratislava; SFR Jugoslawien: Jugoslovenska Knjiga, Terazija 27, Beograd; Izdavadko Knjiiarsko Produzede MLADOST, llica 30, Zagreb; Koreanische DVR: CHULPANMUL Korea Publications Export & Import Corporation, Pyongyang; Republik Kuba: Empresa de Comercio Exteriorde Publicaciones, O'Reilly No. 407, Ciudad Habana; Republik Polen: C.K.P.i.W. Ruch, Towarowa 28, 00-958 Warszawa; Rumänien: D.E.P. Bucure§ti, Piata ScTnteii, Bucure§ti; UdSSR: Sämtliche Abteilungen von Sojuzpeöat' oder Postämter und Postkontore; Republik Ungarn: P.K.H.I., Külföldi Elöfizetösi Osztäly, P.O. Box 16,1426 Budapest; SR Vietnam: XUNHASABA, 32, Hai Ba Trung, Hä Nöi; BRD und Berlin (West): ESKABE Kommissions-Grossobuchhandlung, Postfach 36, 8222 Ruhpolding/Obb.; Helios-Literatur-VertriebsGmbH, Eichborndamm 141-167, Berlin (West) 52; Kunst und Wissen Erich Bieber OHG, Postfach 46,7000 Stuttgart 1; Gebrüder Petermann, BUCH + ZEITUNG INTERNATIONAL, Kurfürstenstraße 111, Berlin (West) 30; Österreich: Helios-Literatur-Vertriebs-GmbH &Co. KG, Industriestraße B 13,2345 Brunn am Gebirge; Schweiz: Verlagsausfieferung Wissenschaft der Freihofer AG, Weinbergstr, 109, 8033 Zürich; Alle anderen Länder: örtlicher Fachbuchhandel; BUCHEXPORT Volkseigener Außenhandelsbetrieb der Deutschen Demokratischen Republik, Postfach 160, DDR - 7 0 1 0 Leipzig und Leipzig Book Service, Talstraße 29, D D R - 7 0 1 0 Leipzig

Mikroprozessortechnik, Berlin 4 (1990) 3

Rainer Ploss: Kodierung von Wordstar-Files

71

Peter E. Nebe: Neuer Funktionsinterpreter für Turbo-Pascal

72

Uwe Schulze: Im Test: Programmiersprachen für CP/M

74

Ralf Bergmann, Mathias Weidner: Die serielle Schnittstelle unter DOS

75

Detlef Grell: Systeme mit System (Teil 1)

78

MP-Kurs: Manfred Zander: Turbo-Pascal-Praxis

Erscheinungsweise monatlich 1 Heft Heftpreis 5 , - M , Abonnementspreis vierteljährlich 1 5 , - M ; Auslandspreise sind den Zeitschriftenkatalogen des Außenhandelsbetriebes BUCH EXPORT zu entnehmen.

2. US

im fest: Laufzeiten

79

Michael Bach, Karl-Friedrich Probst: UeberAII das gleiche

86

Christian Hanisch: Schreibschutz per Software

88

OlafGinter:

Auf der Seite 74 finden Sie einen Testbericht zu Compilern, Interpretern und zu einem Z 80-Assembler unter CP/M. Dieser Beitrag stellt eine Weiterführung des Beitrages zu C-Compilern unter CP/M in MP 1/90 dar. Beide Tests sollen die Auswahl einer Sprache für die Lösung bestimmter Probleme erleichtern helfen.

Prozedurrufe zurückverfolgen

90

MP-Computer-Club

91

Dietmar Gratia: Strukturiert programmieren in Basic Torsten Schmidt, Marco Thäle: Plottersimulation mit KC 85/3 in Förth MP-Börse

93

MP-Bericht

94

INTERKAMA89 Vorschau Für das Heft 4/1990 bereiten wir für Sie unter anderem Beiträge zu folgenden Themen vor: • Der Cache • Im Test: Programmiersprachen für MS-DOS • Lernmethoden der Künstlichen Intelligenz • Mikroprozessorsteuerungen

Entwicklungen und Tendenzen

95

Verbindung aufnehmen

96

vorgestellt 4. US Multiprozessor-PC Compaq Systempro 65

Dialog Liebe Leserinnen und Leser, im vorigen Heft informierten wir Sie bereits über eine Vereinbarung zwischen unserer Redaktion und der Redaktion c't, die den gegenseitigen Nachdruck von Beiträgen regelt. Die seit 1984 im Verlag Heinz Heise erscheinende c't kann nicht zuletzt dank der Qualität der Beiträge heute eine monatliche Verkaufsauflage von etwa 105000 Exemplaren vorweisen und wird als führend unter den technisch orientierten Computerfachzeitschriften der BRD angesehen. Auch sie wurde bei Gründung der MP von Lesern hinsichtlich des Profils verschiedentlich als Vorbild genannt (wobei leider allzuoft die gravierenden Unterschiede in den jeweiligen Medienlandschaften und den äußeren Bedingungen übersehen wurden); so daß Artikel aus der c't zweifellos ein nützlicher Beitrag sind, um vorhandenes Know-how den Lesern in unserem Lande zugänglich zu machen. Für dieses Heft haben wir als erstes einen Überblicksartikel ausgewählt - Systeme mit System - , der mit dem Aufzeigen des Entwicklungsweges des IBM-PCs und der Kompatiblen auch Kriterien der PC-Auswahl bietet. Der zweite Beitrag stellt ein kleines Programm zum Abtippen vor, mit dem DOS-Kommandos wie Dir oder Erase im aktuellen Verzeichnis und in dessen Unterverzeichnissen ausgeführt werden können. (Nicht übersehen sollten Sie auch die Ost-West-Kontaktbörse auf den Seiten 95 und 96, eine Gemeinschaftsaktion mit der c't, die wir noch nach Redaktionsschluß ins Heft nehmen konnten.) Daraus ist zu ersehen, daß wir uns bei der Auswahl der c't-Artikel vom gleichen Prinzip leiten lassen, das für die MP insgesamt gilt: Vielfalt. Das bedeutet eine Mischung aus leichtverständlichen Überblicks- und Einführungsartikeln und „knackigen" Tips und Tricks mit komplettem Listing oder einer Schaltung zum unmittelbaren Nachnutzen. Wenn es um internationale Trends und Tendenzen der Computerbranche geht, werden wir uns um höchste Aktualität bemühen; Wissensvermittlung als Hilfe bei der praktischen Arbeit wird sich vor allem an den in unserem Lande vorhandenen Gegebenheiten orientieren. Die Erstveröffentlichung darf dann wohl auch einmal etwas weiter zurückliegen. Unsere besonders aufmerksamen Leser bitten wir um Verständnis dafür, daß es - aus technischen Gründen - bei einigen Begriffen noch zu Abweichungen gegenüber der in der MP üblichen Schreibweise kommen kann; beispielsweise bei MS-DOS oder Basic. Da diese Abweichungen jedoch unbedeutender Natur sind, kann sie der Interessierte als kleine Schönheitsfehler sicherlich verschmerzen. Aus den genannten Gründen muß hin und wieder auch auf Fotos-insbesondere Farbfotos-verzichtet werden, die zur Verständlichkeit eines Beitrages nicht dringend notwendig sind. Insgesamt meinen wir, daß dieser unser erster Schritt zur Kooperation mit einem westlichen Partner die Zustimmung der Mehrheit unserer Leser finden wird; wir würden uns aber dennoch freuen, Ihre Meinungen zu erfahren. In diesem Sinne: Postkarte oder Anruf genügt! Ihre Redaktion MP

Dieser Kurs ist

richtig

Der Kurs Turbo-Pascal-Praxis fand bei unseren Lesern großen Anklang, und so erhielten wir auch Verbesserungsvorschläge zu einigen Programmlösungen und Angebote, einzelne Themen ausführlicher darzustellen. Wir bedanken uns auf diesem Wege für alle Zuschriften, können aber aus Platzgründen nicht näher darauf eingehen. Durch den Kurs konnten wir aber offensichtlich auch erreichen, daß einige PC-Nutzer die Sprache TurboPascal für sich neu oder überhaupt erst entdeckten.

66

So fand Peter Busch aus Johanngeorgenstadt „angeregt durch . . . (den) Kurs ,Turbo-Pascal-Praxis' rasch großes Interesse an dieser Programmiersprache. Der Kurs ist sehr anschaulich und leicht verständlich, so daß auch mir a l s . . . Anfänger . . . der Einstieg recht schnell gelang." Dieses Lob haben wir gerne an Herrn Zander weitergeleitet und hoffen, daß sich noch mehr Autoren als bisher um einen solchen leichtverständlichen Schreibstil bemühen. Um noch einmal auf Herrn Busch zurückzukommen, er nutzte

nicht nur den Kurs, sondern entwickelte selbst eine kleine Prozedur, die wir Ihnen nicht vorenthalten wollen, weniger um damit Profis hinter dem Ofen hervorzulocken, als mehr den Unentschlossenen unter Ihnen noch eine Anregung zu geben, sich dieser interessanten und vielseitigen Programmiersprache zu widmen. Redaktion MP

Zum Beitrag „Logischer Entwurf' von Datenbanken" aus MP 7189 Mit diesem Beitrag wird ein wichtiges, oft unterschätztes Problem aufgegriffen. Gerade auch deshalb sind aus meiner Sicht einige kritische Bemerkungen und Ergänzungen unerläßlich, wobei ich aus Platzgründen leider nicht auf Einzelheiten eingehen kann. Insgesamt ist einzuschätzen, daß die Problematik des logischen Entwurfs von Datenbanken unzureichend, unexakt und fehlerbehaftet dargestellt ist. Zum Verständnis dringend notwendiges Kontextwissen (relationales Konzept, Verhältnis Großcomputer-DBMS - Mikrocomputer-DBMS) wird nicht vermittelt. Verschiedene Begriffe werden nicht exakt verwendet bzw. verwechselt (Datei - Datenbank, Vermischung der logisch orientierten mit der speichertechnisch geprägten Terminologie). Statt des üblichen Begriffs „Normalform" wird überflüssigerweise „Strukturform" verwendet. Die Motivation für die Überprüfung einer Datenstruktur in die 1. Normalform wird unzureichend, die 2. Normalform wird schlicht falsch erklärt. Die Erläuterungen zur 3. Normalform treffen nicht das Wesentliche, da die gezeigten Redundanzen immer auf die

program feiertag; ueeß crt.dos;

beschriebene Art beseitigt werden können, unabhängig von der Betrachtung der Normalformen. Genauerund umfassender kann sich der Leser zu diesem Problemkreis in der im Beitrag zitierten Broschüre bzw. der darin aufgeführten Literatur informieren. Die in Bild 5 dargestellte Datenstruktur ist zwar nicht falsch, aber unter dem Gesichtspunkt einer Mikrocomputeranwendung (die eingangs explizit betont wird) völlig unrealistisch. Dies begründet sich, kurz gesagt, mit unzumutbar hohen Abarbeitungszeiten, die infolge der Aufsplittung der Datenstruktur in eine Vielzahl von Dateien entstehen. Dieser Sachverhalt ist Ausdruck einer immer wieder auftretenden Fragestellung, die jeweils in Abhängigkeit vom Anwendungsfall entschieden werden muß, und zwar unter Berücksichtigung der Anforderungen an die Datenbanklösung. Dabei geht es wesentlich um das Verhältnis von Update und Retrieval, welches über den Grad der Aufsplittung bzw. über die strenge Umsetzung der Normalformenlehre entscheidet. Oftmals ist eine Priorität des Retrieval zu verzeichnen, was in der Regel einen Verzicht auf die angestrebte 3. Normalform (manchmal sogar die 1. Normalform) bedingt. Kurz gesagt: Die Normalformen sind nicht als Dogma zu betrachten, sondern als Entwurfsrichtlinien, die allerdings bei Mikrocomputeranwendungen wegen der resultierenden zu langen Abarbeitungszeiten oft nicht konsequent berücksichtigt werden können. Trotzdem ist die Auseinandersetzung mit diesen Normalformen zu empfehlen, da sie eine Abkehr von der meist empirischen Herangehensweise beim Datenbankentwurf unterstützen.

{Turbo-Pascal

Dr. D.

Langbein

5.0}

procedure feiertage; { G ü l t i g f ü r d i e J a h r e 1900 b i s 2 0 9 9 } var i,o,p:integer; m;etring[5]; begin clrScr; g o t o x y ( 3 0 , 1 0 ) ; w r i t e ( ' J a h r : '); r e a d ( i ) ; o : = ( 2 0 4 - l l * ( i m o d 19)) m o d 30; case o of 2 8 , 2 9 : o : = p r e d ( o ) ; end; o ; = 2 8 + o - ( i + i d i v 4 + o - 1 3 ) m o d 7; if o > 3 1 t h e n b e g i n o : = o - 3 1 ; m ; = ' A p r i l '; e l s e m : - ' M a r z '; gotoxy(30,13); write('Osterßonntag : '); w r i t e ( o : 2 , ' . '+m, ',i,' ; end if m ^ ' M ä r z ' t h e n b e g i n p : = o - l l ; m : - ' M a i e l e e if o < 1 2 t h e n b e g i n p : = o -20; m : = ' A p r i 1 '; e n d e l s e b e g i n p : - o - l l ; m : = ' J u n i '; e n d ; gotoxy(30,15); write{"Pfingstmontag wri t e l n ( p : 2 , ' . '); w r i t e l n ; begin feiertage end .

de lay(5000)

Mikroprozessortechnik, Berlin 4 (1990) 3

Clipper im Überblick Dr. Wilfried Grafik,

Berlin

Clipper ist ein Programm, mit dem in Clipper, dBase III, dBase III Plus oder auch Foxbase geschriebene Kommandofiles compiliert werden können. Im engeren Sinne handelt es sich also um einen Compiler. Im weiteren Sinne versteht man darunter eine Sammlung von Programmen, die eine Arbeitsumgebung für diesen Clipper-Compiler bilden. Dieser Beitrag beantwortet die häufigsten Fragen, die beim Ersteinsatz von oder beim Umstieg auf Clipper auftreten. Die Referenztabelle auf der 2. und 3. Umschlagseite faßt die Syntax der Kommandos zusammen, die Funktionen folgen im Heft 4. Interpreter und Compiler Die Programme dBase III und dBase III Plus sind Interpreter. Sie akzeptieren eine Anfragesprache (query language), die aus allen Kommandos besteht, die im Dialog von der Tastatur aus eingegeben werden können. Außerdem können Kommandofolgen in Kommandofiles gespeichert und abgearbeitet werden. Das wesentliche Merkmal eines Interpreters besteht jedoch darin, daß er eine Einheit der Eingabesprache, hier eine Zeile, analysiert, sie anschließend ausführt, zur logisch nächsten Zeile geht, diese analysiert, ausführt usw. Werden Zeilen mehrfach abgearbeitet, etwa in DO WHILE-Zyklen, so werden diese Zeilen auch mehrfach analysiert, was eigentlich nicht nötig wäre, da ihre Korrektheit bereits durch die erste Analyse festgestellt wurde. In dieser wiederholten Analyse besteht ein entscheidener Nachteil von Interpretern, der die Abarbeitungsgeschwindigkeit interpretierter Programme erheblich senkt. Der Vorteil eines Interpreters besteht darin, daß die unmittelbare Verbindung von Quelltext und intern ausgeführten Anweisungen erhalten bleibt. Interpreter eignen sich deshalb sehr gut für die interaktive Arbeit und zum Test von Programmen. Ein Compiler ist dagegen ein Programm, welches eine Quellsprache, hier die Kommandosprache von Clipper, in eine Zielsprache übersetzt. Zielsprache des Clipper-Compilers ist die Maschinensprache. Genauer gesagt: Bei der Übersetzung wird ein Objektmodul (Namenserweiterung .obj) erzeugt, der im Speicher verschieblich ist. Seine endgültige Lage im Speicher kann erst dann bestimmt werden, wenn alle Objektmodule, die zu einem Programm gehören, verfügbar sind und zu einem ausführbaren File zusammengefügt werden (Namenserweiterung .exe). Diesen Vorgang bezeichnet man als Linken (verbinden). Da zur Ausführung verschiedener Programme gleiche Routinen benötigt werden, etwa zum Sortieren, werden diese vorübersetzt und in einer Bibliothek zusammengestellt (clipper.lib) Aus dieser Bibliothek holt sich der Linker die für ein Programm erforderlichen Objektmodule. Sie muß dem Linker deshalb als zu benutzende Bibliothek angegeben werden. Die Erstellung eines Clipper-Programms besteht also aus drei Schritten: der Eingabe der Kommandofiles mit einem Editor, der Übersetzung der einzelnen Kommandofiles und dem Linken.

Mikroprozessortechnik, Berlin 4 (1990) 3

Anforderungen und Grenzen Clipper und dBase III (Plus) stellen die gleichen Anforderungen an die Hard- und Software, das heißt, ein Rechner, auf dem dBase III läuft, ist auch für Clipper geeignet (XT oder AT, 256 KByte Hauptspeicher, ein Laufwerk). Ob ein konkretes Projekt mit diesen Minimalanforderungen auskommt, ist allerdings fraglich. Möchte man eine akzeptable Arbeitsumgebung für Clipper zusammenstellen, so muß mit einem Festplattenbedarf von etwa 1,5 MByte gerechnet werden, zuzüglich der Anwenderprogramme, Datenbankfiles, Editor usw. Für ein realistisches Projekt sollte deshalb unbedingt ein Rechner mit Festplatte verwendet werden. Die internen Grenzen von Clipper sind im Vergleich zu dBase III erweitert. Die markantesten Änderungen sind in Tafel 1 zusammengestellt.

i§!f§i

Clipper

dBase III

Zeichen je Zeichenfeld Zeichen je Momo-Feld im .dbt-File Zeichen je Satz

&

32KByte

Ii 254

§ 64KByte begrenzt durch RAM S 1024 FelderjeSatz aktive Speichervariablen a 2048 Prozeduren je Prozedurfile S 255 gleichzeitig eröffnete Files S 255 gleichzeitig eröffnete Indexfiles S 15 Länge eines Indexschlüssels S 250

S 4096 S 4000 a a

128 256 § 3 2 S 15 a 7 S 100

Erweitert ist ebenfalls die Anzahl der mit einem Datenbankfile verbundenen Datenbankfiles (SET RELATION). Während dBase III und dBase III Plus von einem Datenbankfile aus nur eine Verbindung zulassen, gestattet Clipper bis zu acht solcher Verbindungen (Bild 1). o) trollt

x2.dbf

Schlüsselfelder

Bild 1 Verbindungsstrukturen zwischen bankfiles (SET RELATION) a) dBase III und dBase III Plus b) Clipper

Daten-

Übernahme von Datenbanken Datenbankfiles (.dbf), einschließlich der zugehörigen Memo-Files (.mem), aus dBase III, dBase III Plus oder FoxBase werden von Clipper akzeptiert. Umgekehrt akzeptieren diese Interpreterversionen auch unter Clipper erstellte Datenbankfiles, selbst wenn diese mehr als 4000 Zeichen je Datensatz enthalten.

Bildschirmmasken (.fmt), Berichtsformate (.frm), Adreßformate (.Ibl) und Memoryfiles (.mem) aus dBase III werden von Clipper akzeptiert. Indexfiles von dBase III und dBase III Plus (.ndx) können übernommen werden, obwohl Clipper eine eigene Verwaltung seiner Indexfiles besitzt. Neben einer anderen Namenserweiterung (.ntx) ist auch ihr interner Aufbau anders. Sollen Indexfiles von dBase III verwendet werden, so liegt der einzige Unterschied zur Venwendung Clipper-eigener Indexfiles beim Linken: Den zu verbindenen Modulen wird der Standardmodul ndx.obj hinzugefügt. Die Übernahme der Kommandofiles bedarf einer genaueren Betrachtung, die nachfolgend in groben Zügen erfolgen soll. Prinzipiell kann festgestellt werden, daß Clipper alle Kommandos aus dBase III akzeptiert, die nicht unmittelbar oder mittelbar die Arbeit im Direktmodus betreffen. Zusätzlich gibt es aber eine Fülle neuer, leistungsfähiger Kommandos und Funktionen, die der Nutzer bei einiger Erfahrung im Umgang mit Clipper nicht mehr missen möchte. Damit erscheint ein ständiger Wechsel zwischen dBase und Clipper nicht sehr vorteilhaft. Vorteile Neben den erweiterten Grenzen gegenüber dBase III besitzt Clipper eine Reihe von Vorteilen, die in ihrer Gesamtheit erst durch die praktische Anwendung deutlich werden. Sie hängen unter anderem auch von der Zielstellung konkreter Projekte ab. So kann für ein kleines Projekt mit viel Dateiarbeit und häufigen Veränderungen durch dBase lll-kundige Nutzer eine Interpreterversion durchaus geeignet sein. Die meisten Nutzer kommen über dBase III zu Clipper, wenn ihre Datenbankfiles zu groß werden (über 3000 Datensätze), die Bildschirmarbeit zu langsam wird oder eine akzeptable Nutzeroberfläche mit dBase III nicht mehr programmierbar ist. Weitere Entwicklungen werden dann gleich in Clipper geschrieben, da neue Projekte, die von vornherein mit Clipper konzipiert werden, eine höhere Qualität im Vergleich zu dBase Ill-Projekten haben. Imfolgenden betrachten wir einige dieser Vorteile. Durch die Kompilation steigt die Abarbeitungsgeschwindigkeit, insbesondere für Operationen im Speicher und mit dem Bildschirm, erheblich. Dazu ein Beispiel: Das Kommando @ . . . BOX aus Clipper wurde unter dBase III als Prozedur nachgebildet. Baut man mit dieser BOX-Prozedur das erste Menübild von SET unter dBase III auf, so werden auf einem XT dafür etwa 40 Sekunden benötigt. Ein Clipper-Programm baut das gleiche Menü in weniger als 2 Sekunden auf. Ungeachtet der Tatsache, daß in dBase III und dBase III Plus durch geschicktes Programmieren für diesen speziellen Fall auch etwas kürzere Zeiten erreichbar sind, beispielsweise durch Benutzung von SPACE, sind auch Fortschritte bei den einzelnen ClipperVersionen zu verzeichnen. Auf einem ATRechner können mit Clipper Menübilder, einschließlich der Bewegung eines Balkenkursors, erstellt werden, die praktisch sofort erscheinen. Erst diese Qualität gestattet den Aufbau komfortabler Nutzeroberflächen. Ein weiterer Vorteil ist darin zu sehen, daß fertige Clipper-Projekte vom Endnutzer nicht veränderbar sind, da nur ausführbare Files ausgeliefert werden. Die Quellprogramme verbleiben beim Entwickler. Für mehrfach genutzte Projekte, beispielsweise in ver67

schiedenen Betriebsteilen, bleibt dadurch die Kompatibilität erhalten. Erweiterungen Clipper enthält kompakte Kommandos zum Bildschirmaufbau (@ ... BOX, @ ... TO), zum Menüaufbau (SET MESSAGE TO, MENUE TO, @ ... PROMPT), zum Retten und Wiederherstellen von Bildschirminhalten (SAVE SCREEN, RESTORE SCREEN), Funktionen zur Abfrage der Tastatur (INKEYQ, LASTKEY(), NEXTKEYQ) und zur Fensterarbeit (SAVESCREEN (...), RESTSCREEN (...)), die sehr kurze Abarbeitungszeiten haben. Sie tragen wesentlich zur Akzeptanz von Clipper durch den Nutzer bei. In den verschiedenen Clipper-Versionen wurden sie ständig erweitert und beschleunigt. Die Grundfunktionen von Clipper und das Laufzeitsystem sind in der Bibliothek Clipper.lib enthalten. Zusätzliche Funktionen befinden sich in der Bibliothek Extend.lib. Eng damit verbunden sind auf den Endnutzer orientierte (private) Hilfen. Sie werden in zwei Gruppen eingeteilt: kontextbezogene und allgemeine Hilfen. Kontextbezogene Hilfen können immer dann aktiviert werden, wenn eine Eingabe von der Tastatur über READ angefordert wird, der Zusammenhang, in dem die Hilfe erfolgen soll, also genau feststeht. Durch Drücken der [F1]-Taste wird an den Anfang des Prozedurfiles Help.prg verzweigt, wobei drei Parameter vom Laufzeitsystem übergeben werden: Name der Prozedur, in der [F1] gedrückt wurde, die Zeilennummer im Kommandofile (nicht in der Prozedur!) und der Name der Variablen, für die eine Eingabe erwartet wird. Die erste Zeile des Prozedurfiles Help.prg ist deshalb das Kommando PARAMETERS: PARAMETERS calledBy, fromLine, varName Das Kommandofile Help.prg muß vom Anwender geschrieben und mit dem Hauptprogramm durch Linken verbunden werden. Durch Auswertung der Parameter, gegebenenfalls nur durch deren Ausgabe, wird eine geeignete Hilfestellung programmiert, etwa das Retten des Bildschirminhalts (SAVE SCREEN TO) und die Ausgabe eines Kastens (@... BOX) mit entsprechendem Inhalt. Allgemeine Hilfen können zu jeder Zeit des Programmlaufs erreicht werden. Auch hier muß ein Prozedurfile Help.prg mit dem Hauptprogramm verbunden sein. Für den Informationsaustausch zwischen Programm und Helpfile wird die Benutzung globaler Variabler empfohlen. Clipper gestattet es dem Nutzer, Funktionen zu definieren. Eine Funktion kann als eine Prozedur aufgefaßt werden, die einen bestimmten Ergebniswert liefert. Syntaktisch unterscheiden sich Prozedur- und Funktionsdefinitionen durch das einleitende Schlüsselwort (PROCEDURE, FUNCTION) und durch ihre Rückkehranweisung. Funktionen erfordern die Rückkehr über RETURN mit einem nachfolgenden Ausdruck. Die Berechnung dieses Ausdrucks liefert den Ergebniswert der Funktion. Beim Übersetzen überprüft Clipper, ob PROCEDURE und RETURN bzw. FUNCTION und RETURN zusammenpassen. Fehlermeldungen erscheinen, wenn bei der Rückkehr aus einer Prozedur ein Ergebniswert angegeben ist und wenn eine Funktion durch RETURN ohne Ergebniswert beendet wird. Fehlt RETURN am Ende einer Funktionsdefinition allerdings völlig, so wird kein Fehler gemel-

68

det. Tests ergaben, daß der Ergebniswert .F. geliefert wird. Die Typverträglichkeit der zurückgegebenen Werte wird nicht überprüft. Der Aufruf einer vom Nutzer definierten Funktion ohne Parameter muß, wie auch bei den Standardfunktionen, immer mit Parameterklammern erfolgen. Da dBase III keine Felder kennt, müssen sie unter Ausnutzung der Makrotechnik mühselig nachgebildet werden. Als Erweiterung wurden in Clipper deshalb eindimensionale Felder aufgenommen. Ihre Vereinbarung wird mit dem Schlüsselwort DECLARE eingeleitet. DECLARE a[3] vereinbart beispielsweise ein Feld mit dem Namen a, das aus drei Elementen besteht. Diese werden durch a[1], a[2] und a[3] erreicht. Die untere Indexgrenze ist immer 1. Während des Laufes erfolgt ein Test auf Einhaltung dieser Indexgrenzen. Wird ein Indexwert berechnet, der außerhalb dieser Grenzen liegt, so erfolgt eine Fehlermitteilung (subscript ränge). Felder in Clipper haben nur wenig Ähnlichkeit mit Feldern in bekannten höheren Programmiersprachen wie Pascal, Modula oder C. Ihre Feldelemente müssen nicht vom gleichen Typ sein. Die Bibliothek Extend.lib enthält unter anderem Prozeduren und Funktionen zur Manipulation von Feldern. Im Zusammenhang mit der Deklaration von Feldern ist die Aufnahme des neuen Kommandos FOR... NEXT zu sehen. Es dient in erster Linie der zyklischen Behandlung von Feldelementen. Mehrdimensionale Felder müssen auch in Clipper durch Makros nachgebildet werden. Durch die Übersetzung mit Clipper fehlt dem Nutzer die Dialogebene von dBase III (obwohl es Nachbildungen der Dialogebene als Prg-Files gibt), insbesondere der Bezug zu den Zeilen und Bezeichnern in den Kommando- und Datenbankfiles. Für inhaltsreiche Fehlernachrichten ist der Zugriff auf diese Informationen wichtig. Deshalb wurden die zusätzlichen Funktionen FIELDNAME(), PROCLINEO und PROCNAME() aufgenommen. Weitere Funktionen dienen dem Aufbau eines Nutzerdialogs, beispielsweise dem Zugriff auf Memofelder (MEMOEDIT, MEMOREAD, MEMOTRAN), was in dBase III ausschließlich auf der Dialogebene erfolgt. Auch bezüglich der Arbeit im Direktmodus stellt die Bibliothek Extend.lib einige Prozeduren bereit. Unterschiede Im Vergleich zu dBase III und dBase III Plus existieren einige syntaktische und semantische Unterschiede, die nicht immer offensichtlich sind und bei der Überführung beachtet werden müssen. So bewirkt das Weglassen der Ausdrucksliste bei DISPLAY oder LIST nicht die Ausgabe von Feldinhalten. Fehlt OFF in diesen Kommandos, so werden nur die Satznummern ausgegeben, mit OFF leere Sätze. Die Kommandos AVERAGE und SUM verlangen eine Variablenliste, da ansonsten unklar wäre, was mit den berechneten Werten geschehen soll. Würde eine Ausgabe auf dem Bildschirm erfolgen, wie in dBase III, so wäre es im allgemeinen schwer, den Sinn dieser Ausgaben zu erfassen. Erweitert wurde die Semantik des CALLKommandos und der Parameterübergabe. CALL kann für den Aufruf beliebiger Routi-

nen, die in Fremdsprachen (C, Assembler) geschrieben sind, verwendet werden. Diese müssen beim Linken mit dem Clipper-Programm verbunden werden. Das trifft insbesondere für in Fremdsprachen geschriebene Routinen zu, die beispielsweise in einer Bibliothek abgelegt sein können. So können einige Passagen im Clipper-Programm noch effektiver geschrieben werden, was allerdings mit einer verminderten Portabilität solcher Programme bezahlt werden muß. Mit CALL können keine in Clipper geschriebenen Programme gerufen werden. CALL nutzt für die Parameterübergabe, die in C-Systemen auf XT-/AT-Rechnern gebräuchliche Verfahrensweise. Diese Konventionen zur Parameterübergabe in Clipper und in einigen C-Implementationen sind aber unterschiedlich. In der gerufenen Prozedur müssen alle Parameter als Referenzparameter vereinbart sein (Pointer). Für eine Zeichenkette wird die Adresse des ersten Bytes übergeben. Die Zeichenkette selbst wird durch ein Nullbyte abgeschlossen. Für numerische Werte wird ein Pointer auf eine Gleitkommazahl übergeben. Möchte man einen ganzzahligen Typ erzwingen, so ist im Clipper-Programm die Typkonvertierungsfunktion WORD anzuwenden. Beispiel: CALL far_proc WITH "string", 1, WORD (1) Hierbei ist Far-proc der Name der gerufenen Prozedur, die drei Parameter hat. Die Typverträglichkeit und die Anzahl der Parameter in rufender und gerufener Prozedur können von Clipper nicht überprüft werden. Für den Aufruf in Clipper geschriebener Prozeduren ist die Verwendung von WORD sinnlos. Das Laufzeitsystem von Clipper erkennt beispielsweise in der Zeile DO clipper_proc WITH WORD (1) eine Typunverträglichkeit (type mismatch). Es sind je CALL-Prozedur höchstens 7 Parameter zugelassen. Das Kommando PARAMETERS, das nur eine deklarative Wirkung hat, ist in Clipper auch für Kommandofiles zugelassen. Insbesondere kann es im Hauptmodul als erstes Kommando verwendet werden und gestattet dann einen Zugriff auf die Parameter der Kommandozeile beim Aufruf. Betrachten wir dazu als Beispiel das Kommandofile Param.prg: * File param.prg * Test der Parametübergabe aus der Kommandozeile PARAMETERS pari, par2 ? "1. Parameter:", pari ? "2. Parameter:", par2 RETURN * eof param.prg Nach dem Übersetzen und Linken rufen wir das Programm mit c: >param abc 123 auf und erhalten dann: 1. Parameter: abc 2. Parameter: 123 Der Aufruf c: >param abc, 123 liefert dagegen die folgende Ausschrift: 1. Parameter: abc,123 2. Parameter: und eine Fehlerausschrift in der ersten Bildschirmzeile (... undefined identifier PAR2). Insgesamt sind die Fragen der Parameterübergabe, einschließlich der Typverträglichkeit und der Parameterarten (WerteparameMikroprozessortechnik, Berlin 4 (1990) 3

ter, Referenzparameter), die Vermittlung von Ergebnissen nach außen, die Anpassung oder Neubestimmung von Typen, der Aufruf von und die Rückkehr aus fremdsprachigen Prozeduren derart umfangreich, daß sie einer gesonderten Betrachtung bedürfen. Ein Nutzer, der eine höhere Programmiersprache kennt, wird die ihm vertrauten Prinzipien in Clipper nicht durchgängig wiederfinden. Ein weiterer Unterschied zu dBase III besteht in der Verwendung von Makros. Makroersetzungen in Clipper-Quelltexten dürfen keine Schlüsselwörter, jedoch Namen von Funktionen enthalten. Des weiteren sind solche Makroersetzungen verboten, die für die Übersetzung relevante Begrenzer enthalten. Diese Festlegung kann leider nicht exakter erfolgen, da sie nicht nur von den Zeichen an sich, sondern auch vom Kontext, in dem sie verwendet werden, abhängen. Zwei Beispiele sollen das verdeutlichen: open = "USE myfile" &open Dies ist für Clipper falsch, da das Schlüsselwort USE ersetzt wird. Nach der Anweisung feld = "a[3]" ist var = &feld möglich, nicht aber DECLARE &feld. Die Makroersetzung in Clipper liegt dennoch

auf einer anderen Ebene als Makroersetzungen in dBase, C oder Assemblersprachen. Allgemein versteht man unter einem Makro eine Zeichenfolge, beispielswiese Befehle, die durch einen Namen bezeichnet sind. Die Zuordnung der Zeichenfolge zum Makronamen erfolgt in der Makrodefinition. In Clipper ist das die Zuweisung einer Zeichenkette zu einer Speichervariablen. Das Auftreten des Makronamens in einem Text bewirkt dann das Einfügen der durch diesen Namen definierten Zeichenkette an dieser Stelle des Textes. Diese Ersetzung erfolgt im allgemeinen auf Quelltextebene und vor der Analyse durch den Compiler oder Interpreter. In Clipper muß sie aber zur Abarbeitungszeit des übersetzten Programms erfolgen, das heißt, das Laufzeitsystem von Clipper muß die Ersetzung, Analyse, Übersetzung und Ausführung während der Abarbeitung des Nutzerprogramms durchführen. Hingewiesen sei noch auf die veränderte Semantik von CREATE. CREATE erzeugt eine leere Strukturdatei. In diese leere Datei kann über APPEND BLANK und REPLACE die Struktur eines Datenbankfiles auch ohne Nutzerdialog eingegeben werden. Mit CREATE FROM wird dann das eigentliche Datenbankfile erzeugt. Zum Erstellen von Berichtsformaten oder Adreßformaten fehlen solche Kommandos. Dafür existieren in der Clipper-Umgebung zusätzliche Programme (.exe-Files).

Systemprogrammierung in Modula-2 Dr. Michael Krapp, Volker Detlef Jahn, Ilmenau

Zerbe,

In IM wurde die Programmiersprache Modula-2 bereits vorgestellt und auch eine geschichtliche Einordnung getroffen. Hervorgehoben sei nochmals, daß Modula-2 eine universelle Programmiersprache und besonders gut geeignet ist, Betriebssystemerweiterungen auf Hochsprachniveau programmieren zu können - Modula-2 ist also eine sogenannte Systemprogrammiersprache. Nachfolgend sollen die neuen Aspekte, welche Modula-2 in diesen Anwendungsbereich einbringt, genauer diskutiert und anhand von Programm-Fragmenten aus einem Multitasksystem veranschaulicht werden. Modul-Konzept Module sind Kompilationseinheiten und stellen Sammlungen von Konstanten, Variablen, Typen oder Prozeduren dar. Man unterscheidet im wesentlichen drei Modultypen: Hauptmodule, Definitionsmodule und Implementationsmodule. Ein Hauptmodul besteht aus einem Deklarationsteil und dem Ausführungsteil, ist gleichzeitig eine Programmeinheit und entspricht dem Hauptprogramm in konventionellen Programmiersprachen (z. B. program in Pascal). Der Hauptmodul kann mit Importlisten durch die Befehle FROM IMPORT auf Objekte anderer Module über ihre Definitionsmodule zugreifen. Er stellt aber nach außen eine geschlossene Einheit dar und exportiert keine Mikroprozessortechnik, Berlin 4 (1990) 3

Leistungen. Definitionsmodule und Implementationsmodule treten immer paarweise auf und sind durch gleiche Namen gekennzeichnet. Im weiteren wird mit Modul dieses Paar aus Definitions- und Implementationsmodul bezeichnet. Ein Definitionsmodul kann nur Deklarationen von Konstanten, Variablen, Typen oder Prozedurköpfen enthalten; ein Implementationsmodul dagegen kann neben Deklaration von Konstanten, Variablen und Typen auch vollständige Prozeduren enthalten. Wenn im Definitionsmodul Prozedurköpfe auftreten, müssen im Implementationsmodul diese Prozeduren vollständig deklariert sein. Alle sonstigen Deklarationen des Definitionsmoduls sind im zugehörigen Implementationsmodul verfügbar. Ein Definitionsmodul ist die Schnittstelle zur Umwelt, das heißt, alle Variablen, Konstanten, Typen oder Prozeduren, die im Definitionsmodul benannt sind, werden automatisch exportiert und somit dem Anwender zur Verfügung gestellt. Ein Implementationsmodul kann neben dem Deklarationsteil noch einen Ausführungsteil enthalten, der von den Schlüsselwörtern BEGIN und END cmodulnam e > eingeschlossen sein muß, wobei die Ausführungsteile von importierten Modulen vor diesem Ausführungsteil ausgeführt werden. Dies gilt auch für den Ausführungsteil des Hauptmoduls. Durch diesen Mechanismus können die in einem Modul verborgenen Datenobjekte vor ihrer Benutzung initialisiert werden. Sowohl Definitionsmodul als auch Implementationsmodul können über Importlisten auf andere Definitionsmodule zugreifen.

Clipper-Umgebung Zur Umgebung eines Compilers gehören mindestens ein Editor, ein Linker, ein Laufzeitsystem (Bibliothek) und ein Debugger. Weitere Servicefunktionen werden in sogenannten Toolboxen bereitgestellt. Clipper besitzt mit Ausnahme eines speziellen Editors alle diese Werkzeuge. Als Linter wird meist eine Version des PLINK86 empfohlen. Er ist im Vergleich zu anderen Linkern relativ langsam, gestattet aber dafür die Bildung von Überlagerungen. Für Cllpper-Programme werden erfolgreich auch andere, schnellere Linker des MS-DOS eingesetzt. So kann ein übersetztes Programm (Myprog.obj), welches Indexfiles von dBase III (Ndx.obj) und Funktionen der Extend.lib benutzt, beispielsweise mit einem Linker des MSC-Systems (link) durch linkmyprog+ndx„nul,extend+clipper verbunden werden. Die beiden aufeinanderfolgenden Kommas dienen als Platzhalter für die nicht benutzte Angabe des Ergebnisfilenamens. In diesem Beispiel entsteht ein ausführbares File mit dem Namen Myprog.exe. Die Bezeichnung nul gibt an, daß kein MapFile erstellt werden soll. Neben diesen Hilfsmitteln gehören zur Clipper-Umgebung Programme, die einige Kommandos von dBase III nachbilden, die im Direktmodus arbeiten.

Die Frage, was man in Definitions- und Implementationsmodulen deklariert, kann rein pragmatisch entschieden werden. So sind im Extremfall reine Datenstrukturmodule möglich, die nicht als Programmeinheiten interpretiert werden. Da Importlisten auf Definitionsmodule verweisen, diese aber nur ganz bestimmte Teile von Deklarationen eines Moduls offenbaren (exportieren), ist die Möglichkeit des Verbergens von Implementierungsdetails gegeben. Damit ergeben sich qualitativ neuartige und weitreichende Abstraktionsmöglichkeiten beim Programmentwurf. Außerdem resultieren daraus Möglichkeiten zur separaten Kompilation. Der Hauptmodul oder die Definitionsmodule können bereits übersetzt werden, wenn lediglich die von ihnen importierten Definitionsmodule übersetzt vorliegen. Ein Implementationsmodul kann dann übersetzt werden, wenn sein gleichnamiger Definitionsmodul und alle von ihm importierten Definitionsmodule übersetzt sind. Damit können Programmteile von verschiedenen Mitarbeitern bearbeitet und bei strenger Bindung an formale Schnittstellen gut entkoppelt werden, was bei komplexen Systementwicklungen bekannterweise eine praktische Notwendigkeit ist. Abschließend sei erwähnt, daß es außer den genannten Modultypen noch den Typ des lokalen Moduls gibt. Dieser stellt keine Kompilationseinheit dar, da er in Haupt- oder Implementationsmodule eingebettet ist. In Erweiterung von lokalen Prozeduren kann man durch Exportlisten mit dem Befehl EXPORT ; oder durch Importlisten den Sichtbarkeitsbereich von Programmobjekten explizit steuern.

69

ter, Referenzparameter), die Vermittlung von Ergebnissen nach außen, die Anpassung oder Neubestimmung von Typen, der Aufruf von und die Rückkehr aus fremdsprachigen Prozeduren derart umfangreich, daß sie einer gesonderten Betrachtung bedürfen. Ein Nutzer, der eine höhere Programmiersprache kennt, wird die ihm vertrauten Prinzipien in Clipper nicht durchgängig wiederfinden. Ein weiterer Unterschied zu dBase III besteht in der Verwendung von Makros. Makroersetzungen in Clipper-Quelltexten dürfen keine Schlüsselwörter, jedoch Namen von Funktionen enthalten. Des weiteren sind solche Makroersetzungen verboten, die für die Übersetzung relevante Begrenzer enthalten. Diese Festlegung kann leider nicht exakter erfolgen, da sie nicht nur von den Zeichen an sich, sondern auch vom Kontext, in dem sie verwendet werden, abhängen. Zwei Beispiele sollen das verdeutlichen: open = "USE myfile" &open Dies ist für Clipper falsch, da das Schlüsselwort USE ersetzt wird. Nach der Anweisung feld = "a[3]" ist var = &feld möglich, nicht aber DECLARE &feld. Die Makroersetzung in Clipper liegt dennoch

auf einer anderen Ebene als Makroersetzungen in dBase, C oder Assemblersprachen. Allgemein versteht man unter einem Makro eine Zeichenfolge, beispielswiese Befehle, die durch einen Namen bezeichnet sind. Die Zuordnung der Zeichenfolge zum Makronamen erfolgt in der Makrodefinition. In Clipper ist das die Zuweisung einer Zeichenkette zu einer Speichervariablen. Das Auftreten des Makronamens in einem Text bewirkt dann das Einfügen der durch diesen Namen definierten Zeichenkette an dieser Stelle des Textes. Diese Ersetzung erfolgt im allgemeinen auf Quelltextebene und vor der Analyse durch den Compiler oder Interpreter. In Clipper muß sie aber zur Abarbeitungszeit des übersetzten Programms erfolgen, das heißt, das Laufzeitsystem von Clipper muß die Ersetzung, Analyse, Übersetzung und Ausführung während der Abarbeitung des Nutzerprogramms durchführen. Hingewiesen sei noch auf die veränderte Semantik von CREATE. CREATE erzeugt eine leere Strukturdatei. In diese leere Datei kann über APPEND BLANK und REPLACE die Struktur eines Datenbankfiles auch ohne Nutzerdialog eingegeben werden. Mit CREATE FROM wird dann das eigentliche Datenbankfile erzeugt. Zum Erstellen von Berichtsformaten oder Adreßformaten fehlen solche Kommandos. Dafür existieren in der Clipper-Umgebung zusätzliche Programme (.exe-Files).

Systemprogrammierung in Modula-2 Dr. Michael Krapp, Volker Detlef Jahn, Ilmenau

Zerbe,

In IM wurde die Programmiersprache Modula-2 bereits vorgestellt und auch eine geschichtliche Einordnung getroffen. Hervorgehoben sei nochmals, daß Modula-2 eine universelle Programmiersprache und besonders gut geeignet ist, Betriebssystemerweiterungen auf Hochsprachniveau programmieren zu können - Modula-2 ist also eine sogenannte Systemprogrammiersprache. Nachfolgend sollen die neuen Aspekte, welche Modula-2 in diesen Anwendungsbereich einbringt, genauer diskutiert und anhand von Programm-Fragmenten aus einem Multitasksystem veranschaulicht werden. Modul-Konzept Module sind Kompilationseinheiten und stellen Sammlungen von Konstanten, Variablen, Typen oder Prozeduren dar. Man unterscheidet im wesentlichen drei Modultypen: Hauptmodule, Definitionsmodule und Implementationsmodule. Ein Hauptmodul besteht aus einem Deklarationsteil und dem Ausführungsteil, ist gleichzeitig eine Programmeinheit und entspricht dem Hauptprogramm in konventionellen Programmiersprachen (z. B. program in Pascal). Der Hauptmodul kann mit Importlisten durch die Befehle FROM IMPORT auf Objekte anderer Module über ihre Definitionsmodule zugreifen. Er stellt aber nach außen eine geschlossene Einheit dar und exportiert keine Mikroprozessortechnik, Berlin 4 (1990) 3

Leistungen. Definitionsmodule und Implementationsmodule treten immer paarweise auf und sind durch gleiche Namen gekennzeichnet. Im weiteren wird mit Modul dieses Paar aus Definitions- und Implementationsmodul bezeichnet. Ein Definitionsmodul kann nur Deklarationen von Konstanten, Variablen, Typen oder Prozedurköpfen enthalten; ein Implementationsmodul dagegen kann neben Deklaration von Konstanten, Variablen und Typen auch vollständige Prozeduren enthalten. Wenn im Definitionsmodul Prozedurköpfe auftreten, müssen im Implementationsmodul diese Prozeduren vollständig deklariert sein. Alle sonstigen Deklarationen des Definitionsmoduls sind im zugehörigen Implementationsmodul verfügbar. Ein Definitionsmodul ist die Schnittstelle zur Umwelt, das heißt, alle Variablen, Konstanten, Typen oder Prozeduren, die im Definitionsmodul benannt sind, werden automatisch exportiert und somit dem Anwender zur Verfügung gestellt. Ein Implementationsmodul kann neben dem Deklarationsteil noch einen Ausführungsteil enthalten, der von den Schlüsselwörtern BEGIN und END cmodulnam e > eingeschlossen sein muß, wobei die Ausführungsteile von importierten Modulen vor diesem Ausführungsteil ausgeführt werden. Dies gilt auch für den Ausführungsteil des Hauptmoduls. Durch diesen Mechanismus können die in einem Modul verborgenen Datenobjekte vor ihrer Benutzung initialisiert werden. Sowohl Definitionsmodul als auch Implementationsmodul können über Importlisten auf andere Definitionsmodule zugreifen.

Clipper-Umgebung Zur Umgebung eines Compilers gehören mindestens ein Editor, ein Linker, ein Laufzeitsystem (Bibliothek) und ein Debugger. Weitere Servicefunktionen werden in sogenannten Toolboxen bereitgestellt. Clipper besitzt mit Ausnahme eines speziellen Editors alle diese Werkzeuge. Als Linter wird meist eine Version des PLINK86 empfohlen. Er ist im Vergleich zu anderen Linkern relativ langsam, gestattet aber dafür die Bildung von Überlagerungen. Für Cllpper-Programme werden erfolgreich auch andere, schnellere Linker des MS-DOS eingesetzt. So kann ein übersetztes Programm (Myprog.obj), welches Indexfiles von dBase III (Ndx.obj) und Funktionen der Extend.lib benutzt, beispielsweise mit einem Linker des MSC-Systems (link) durch linkmyprog+ndx„nul,extend+clipper verbunden werden. Die beiden aufeinanderfolgenden Kommas dienen als Platzhalter für die nicht benutzte Angabe des Ergebnisfilenamens. In diesem Beispiel entsteht ein ausführbares File mit dem Namen Myprog.exe. Die Bezeichnung nul gibt an, daß kein MapFile erstellt werden soll. Neben diesen Hilfsmitteln gehören zur Clipper-Umgebung Programme, die einige Kommandos von dBase III nachbilden, die im Direktmodus arbeiten.

Die Frage, was man in Definitions- und Implementationsmodulen deklariert, kann rein pragmatisch entschieden werden. So sind im Extremfall reine Datenstrukturmodule möglich, die nicht als Programmeinheiten interpretiert werden. Da Importlisten auf Definitionsmodule verweisen, diese aber nur ganz bestimmte Teile von Deklarationen eines Moduls offenbaren (exportieren), ist die Möglichkeit des Verbergens von Implementierungsdetails gegeben. Damit ergeben sich qualitativ neuartige und weitreichende Abstraktionsmöglichkeiten beim Programmentwurf. Außerdem resultieren daraus Möglichkeiten zur separaten Kompilation. Der Hauptmodul oder die Definitionsmodule können bereits übersetzt werden, wenn lediglich die von ihnen importierten Definitionsmodule übersetzt vorliegen. Ein Implementationsmodul kann dann übersetzt werden, wenn sein gleichnamiger Definitionsmodul und alle von ihm importierten Definitionsmodule übersetzt sind. Damit können Programmteile von verschiedenen Mitarbeitern bearbeitet und bei strenger Bindung an formale Schnittstellen gut entkoppelt werden, was bei komplexen Systementwicklungen bekannterweise eine praktische Notwendigkeit ist. Abschließend sei erwähnt, daß es außer den genannten Modultypen noch den Typ des lokalen Moduls gibt. Dieser stellt keine Kompilationseinheit dar, da er in Haupt- oder Implementationsmodule eingebettet ist. In Erweiterung von lokalen Prozeduren kann man durch Exportlisten mit dem Befehl EXPORT ; oder durch Importlisten den Sichtbarkeitsbereich von Programmobjekten explizit steuern.

69

Koroutinen-Konzept Als eine Verallgemeinerung des Prozedurkonzeptes (auch Unterprogramm- oder Routinen-Konzept) lassen sich mit diesem Konzept Programme quasiparallel (concurrent) ausführen. Eine Koroutine kann also ihren Ablauf unterbrechen und zwischenzeitlich den Befehlszähler einer anderen Koroutine überlassen. Diese Umschaltung erfolgt explizit. Im Unterschied zum Prozedurkonzept gibt es keinen Return-Mechanismus; eine Fortsetzung der unterbrochenen Koroutine ist daher nur über eine gleichartige explizite Umschaltung möglich. Alle Werte lokaler Datenobjekte bleiben während der Unterbrechungszeit erhalten. Damit sind Koroutinen nicht wie Prozeduren hierarchisch geordnete, sondern gleichberechtigte Programme, wobei in einem Einprozessorsystem sich jeweils genau eine im Laufzustand befindet. Der fehlende Return-Mechanismus hat zur Folge, daß keine Parameterübergabe wie bei Prozeduren möglich ist. Modula-2 beinhaltet zur Nutzung des Koroutinen-Konzeptes spezielle Sprachelemente in Form von Prozeduraufrufen, die von dem in jedem Modula-2-System vorhandenen Modul SYSTEM exportiert werden /2/. Eine Koroutine wird durch NEWPROCESS (proc WorkSpaceAdr WorkSpaceSize VAR process

:PROC; ADDRESS; :CARDINAL; :PROCESS)

definiert, wobei proc eine parameterlose, nicht terminierende Prozedur sein muß; process ist der Ausgabeparameter und identifiziert die neue Koroutine. Die explizite Umschaltung zwischen Koroutinen erfolgt mit TRANSFER (VAR processl, process2 :PROCESS) Die laufende Koroutine wird unterbrochen, ihr Laufzustand in processl abgelegt und die Koroutine fortgesetzt, die durch den Wert von

process2 identifiziert wird. Grundsätzlich gilt, daß der Ausführungsteil des Hauptmoduls die Eigenschaft einer Koroutine besitzt (welche als einzige terminieren darf!) und deshalb Ausgangspunkt und Ziel von TRANSFER-Operationen sein kann. Dies ist zum Start der Koroutinen-Arbeit notwendig. Task-Manipulationen Das Koroutinen-Konzept ist relativ elementarer Natur und verlangt vom Anwender eine explizite Organisation der Task-Umschaltung sowie der Konstruktion von Synchronisations- und Kommunikationsmechanismen. Wünschenswert ist ein Multitasksystem, das entsprechende Dienste bereitstellt, wobei die Konzeption der Koroutine zur Konstruktion von Tasks benutzt werden kann. Dies soll nachfolgend anhand von Programmfragmenten gezeigt werden. Der Begriff der Task wird dabei als bekannt vorausgesetzt (siehe /3/) und ist u. a. dadurch gekennzeichnet, daß eine Task verschiedene Zustände annehmen kann. Als Teil eines solchen Systems könnte ein Modul TaskHandler geschaffen werden, welcher Definitionen von und Operationen über Tasks beinhalten soll. Der Definitionsteil könnte folgendes Muster besitzen: DEFINITION MODULE TaskHandler; TYPE TASK; VAR current:TASK;

f* wird durch Hauptmodul initialisiert *) size :CARDINAL; PROCEDURE CreateTask (proc:PROC; VAR task:TASK); PROCEDURE Schedule;

es folgen gegebenenfalls weitere Deklarationen *)

Importe und

tenobjekte zur komfortablen Multitask-Organisation. Die parameterlose Prozedur proc wird durch CreateTask in eine Task verwandelt und in den Zustand READY überführt. Die Prozedur Schedule unterbricht die laufende (RUN-)Task und überführt sie in den Zustand READY. Danach wird die am längsten wartende Task aus dem Zustand READY in den Zustand RUN versetzt. Dies sind natürlich nur stark vereinfachte Konstruktionen, die aber zunächst zur Erläuterung der Problematik ausreichend sind. Ein zugehöriges Programm könnte etwa ein Aussehen wie in Bild 1 haben. Task-Synchronisation Jedes Multitasksystem stellt Mechanismen zur Synchronisation von Tasks zur Verfügung. Hier soll am Beispiel des bekannten Semaphores ein Synchronisationsmuster in Modula-2 diskutiert werden. Ziel dieser Konstruktion ist der wechselseitige Ausschluß von Tasks beim Zugriff auf gemeinsame Betriebsmittel. DEFINITION MODULE Semaphor; TYPE SEMAPHOR; PROCEDURE Request (VAR s:SEMAPHOR); PROCEDURE Release (VAR s:SEMAPHOR);

(* eventuell weitere Deklarationen *) END Semaphor.

Mit Request wird ein Semaphor besetzt, mit Release erfolgt dessen Freigabe. Falls das Semaphor nicht frei ist, wird die anfordernde Task in einer zugehörigen WAIT-Liste verwaltet. Der zugehörige Implementationsmodul hätte dann etwa den Aufbau wie in Bild 2. Auf ähnliche Art können weitere Synchronisations- und Kommunikationsstrukturen aufgebaut werden.

END TaskHandler.

Interrupt-Einbindung

Der abstrakte Datentyp TASK repräsentiert im Kern eine Koroutine sowie zusätzliche Da-

Bei der Entwicklung von Betriebssystemen spielt die Interrupt-Behandlung eine wesent-

IMPLEMENTATION MODULE TaskHandler; FROM ListenHandler IMPORT RUN,READY,FirstTask,GetTask,PutTask; {* READY und RUN sind Listen, GetTask und PutTask trafen Listenelemente ein bzw. aus, FirstTask kopiert erstes Listenelement *) FROM SYSTEM IMPORT TSIZE,ADDRESS,PROCESS,NEWPROCESS, TRANSFER; FROM Storage IMPORT ALLOCATE;

IMPLEMENTATION MODULE Semaphor; FROM ListenHandler IMPORT RUN,READY,STATELIST, FirstTask,GetTask, PutTask,StateListEmpty; (* StateListEmpty gibt TRUE zurück, wenn sich kein Listenelement in der spezifizierten Liste des Typs STATELIST befindet *) FROM SYSTEM IMPORT TRANSFER;

TYPE TASK = POINTER TO TaskDescriptor; TaskDescriptor = RECORD ProcessDescriptor : PROCESS; {* weitere taskspezifische Parameter END (* record * ) ; VAR old : TASK;

TYPE SEMAPHOR = POINTER TO SemaphorDescriptor; SemaphorDescriptor = R E C O R D Wert : BOOLEAN; SemaphorWait : STATELIST; E N D (* record *);• (* Semaphor beset2t: Wert = TRUE, sonst FALSE; SemaphorWait repräsentiert WAIT-Liste des Semaphor

PROCEDURE CreateTask (proc : PROC; VAR task : TASK); VAR WorkSpaceAdr : ADDRESS; BEGIN NEW (task); (* Arbeitsspeicherreservierung für d i e Taskverwaltung WITH task" DO ALLOCATE (WorkSpaceAdr,size); {* Arbeitsspeicherreservierung für d i e Task-Routine NEWPROCESS (proc,WorkSpaceAdr,size,ProcessDescriptor); (* ... END (* with *); PutTask (READY,task); (* Task wird in READY-Liste eingetragen END CreateTask; PROCEDURE Schedule; BEGIN PutTask (READY,GetTask

(* Hole RUN-Task und trage sie als letzte in READY-Liste ein (* Austragen der ersten Task aus der READY-Liste und in den Zustand RUN überführen old : - current; (* alte RUN-Task wird zwischengespeichert current := FirstTask (RUN); (* current wird gleich der RUNTask gesetzt TRANSFER (old".ProcessDescriptor,current".ProcessDescriptor); END Schedule;

#)

*) *) *) *)

(RUN));

*)

PutTask (RUN,GetTask (READY));

BEGIN size 800H; END TaskHandler.

Bild 1 Modul TaskHandler

70

(* Ausführungsteil,

für Initialisierung!

*) *) *)

*)

Bild 2 Modul Semaphor

PROCEDURE CreateSem (VAR s : SEMAPHOR); (* Einrichten einer Datenstruktur vom Typ SEMAPHOR, ren der Variablen des Descriptors END CreateSem;

*) Initialisie-

PROCEDURE Request (VAR s : SEMAPHOR); BEGIN IF s~. Wert THEN (* wenn Semaphor besetzt ist, P u t T a s k (s".SemaphorWait,GetTask (RUN)); (* dann wird d i e R U N - T a s k in eine WAIT-Liste eingetragen PutTask (RUN,GetTask (READY)); old current; current := FirstTask (RUN); TRANSFER (old".ProcessDescriptor, current".ProcessDescriptor); ELSE s".Wert .= TRUE; (* Besetzen des Semaphor END (* if *); END Request; PROCEDURE Release (VAR s : SEMAPHOR); BEGIN IF StateListEmpty (s".SemaphorWait) THEN (* wenn W A I T - L i s t e leer ist, s".Wert := FALSE; (* dann Freigabe d e s Semaphor ELSE PutTask (READY,GetTask (s".SemaphorWait)); (* ansonsten Task aus WAIT-Liste holen, und in d i e READY-Liste eintragen, wobei das Semaphor b e setzt bleibt END (* if *); END Release;

END semaphor .

(# Modul Semaphor ohne Ausführungsteil

*)

*) *)

*)

*) *)

*)

*)

Mikroprozessortechnik, Berlin 4 (1990) 3

MODULE Testinterrupt; F R O M T a s k H a n d l e r IMPOET c u r r e n t , s i z e , C r e a t e T a s k ; F R O M L i s t e n H a n d l e r IMPORT RUN,READY, F i r s t T a s k , P u t T a s k , GetTask; F R O M S Y S T E M IMPORT A D D R E S S , P R O C E S S , T R A N S F E R , I O T R A N S F E R , N E W P R O C E S S ; F R O M S t o r a g e IMPORT ALLOCATE; C O N S T IntVector = (* e n t s p r e c h e n d e V e c t o r a d r e s s e e i n e s Interrupt *); VAR Workspace ADDRESS; tl TASK; PR0CES6; IntHandler main PROCESS; (* A u s f ü h r u n g s t e i l e i n e s H a u p t m o d u l s ist Coroutine, d e r e n Identi f i k a t o r in m a i n a b g e l e g t w i r d *) PROCEDURE taskl; BEGIN LOOP

BEGIN A L L O C A T E (Workspace,size);

*)

END;

(* n i c h t

terminierend!

*)

E N D taskl; PROCEDURE InterruptHandler; V A R t e m p : PROCESS; BEGIN t e m p := main; (* R ü c k s p r u n g zum Ausführungsteil moduls wird vorbereitet

Bild 3 Modul

LOOP I O T R A N S F E R (IntHandler, temp, IntVector); (* T R A N S F E R v o n I n t H a n d l e r zu t e m p bei g l e i c h zeitiger Initialisierung des Interrupt's c u r r e n t " . P r o c e s s D e s c r i p t o r : =temp; (* R e t t e n des Descriptors der unterbrochenen Task {* I n t e r r u p t b e h a n d l u n g einschließlich eventueller Taskmanipulationen *> c u r r e n t := F i r s t T a s k ( R U N ) ; (* c u r r e n t w i r d a k t u a l i s i e r t *) temp c u r r e n t ' . P r o c e s s D e s c r i p t o r ; (* V o r b e r e i t u n g d e s R ü c k sprungs aus d e r Interruptroutine *) E N D (* loop *); END InterruptHandler;

des

Haupt-

(* A r b e i t s s p e i c h e r r e s e r v i e r u n g für den Interrupt-Handler NEWPROCESS (InterruptHandler,Workspace,size,IntHandler); T R A N S F E R {main,IntHandler); (* I n s t a l l i e r u n g d e s I n t e r r u p t C r e a t e T a s k (taskl,tl); (* . . . P u t T a s k (P'.'N, G e t T a s k (READY); c u r r e n t := F i r s t T a s k (RUN); TRANSFER (main,current".ProcessDescriptor); (* S t a r t d e r M u l t i t a s k a r b e i t m i t I n t e r r u p t E N D Testinterrupt.

Testinterrupt

liehe Rolle. Sie ist ein wichtiges Kriterium für die Beurteilung von Multitasksystemen. Modula-2 bietet mit der SYSTEM-Prozedur IOTRANSFER die Möglichkeit, die Behandlung von Interrupts auf einem hohen Abstraktionsniveau durchzuführen. IOTRANSFER (VAR lntHandler:PROCESS; lnterruptedProcess:PROCESS; lntVector:CARDINAL) IOTRANSFER bietet die Möglichkeit, die Auslösung von TRANSFER als Reaktion auf einen Interrupt, spezifiziert durch eine Vektoradresse IntVector, zu installieren. Nach dieser Installation wird bei einem Interrupt ein TRANSFER asynchron in die laufende Koroutine zur Koroutine IntHandler eingefügt. Der Laufzustand der unterbrochenen Koroutine wird in InterruptedProcess abgelegt. Mit dem Aufruf von IOTRANSFER in IntHandler kann somit zur vorher unterbrochenen Koroutine zurückgesprungen werden. Im Bild 3 wird ein Hauptmodul vorgestellt, der ein Startpunkt für die Multitaskarbeit ist und gleich-

Kodierung von Rainer Ploss,

Berlin

Mitunter besteht die Notwendigkeit der Überführung von Wordstar-Files in andere Formate oder umgekehrt. Abhängig von den speziellen Anforderungen hat dies mit oder ohne Konvertierung der Steuerzeichen zu erfolgen. Im vorliegenden Beitrag möchte ich auf die Kodierung der Files von Wordstar 3.2x und 3.3x im allgemeinen und die der Steuerzeichen im besonderen sowie auf Probleme beim Erarbeiten von Konvertierungsprogrammen eingehen. Denkbare Anwendungsbeispiele für solche Konvertierungen sind: • Übernahme und Übergabe von Daten durch andere Programmsysteme (beispielsweise dBase, Druckvorlagen) • Überführung von Daten von bzw. auf Betriebssystemebene (beispielsweise zur Weiterverarbeitung unter der Regie von BatchFiles oder zum beschleunigten Drucken von Wordstar-Files) Mikroprozessortechnik, Berlin 4 (1990) 3

zeitig die Möglichkeit der Einbindung von Interrupts in die Multitaskarbeit demonstriert. Mit dem Übergang zu 16-Bit-Rechnern ist nicht nur eine quantitativ, sondern auch eine qualitativ neue Softwareentwicklung für diese Systeme notwendig. Modula-2 eignet sich besonders für die Entwicklung umfangreicher Systemsoftware einschließlich Echtzeitanwendungen, wobei das Hochsprächenniveau nicht verlassen werden muß. Ein strenges Typkonzept erhöht außerdem die Softwarezuverlässigkeit. Am Wissenschaftsbereich Technische Informatik der Sektion Technische und Biomedizinische Kybernetik der TH Ilmenau wird aufbauend auf den gewonnenen Erfahrungen bei der Entwicklung von multiFORTH /4/ ein konfigurierbares Multitaskbetriebssystem in Modula-2 für die flexibel automatisierte Fertigung entwickelt (vgl. MP 11/89, Seite 342). Ziel ist ein effizientes, prozeßnahes Betriebssystem, wobei größter Wert auf Portabilität und Strukturierung gelegt wird.

Wordstar-Files • Erzeugung von Drucksteuersequenzen ohne die Hilfe von Programmiersprachen • Korrektur von Programmquelltexten, die fälschlicherweise im Modus D statt N unter Wordstar bearbeitet wurden. In einem Wordstar-File sind neben den druckbaren Zeichen (Buchstaben, Ziffern, Sonderzeichen) aus dem 7-Bit-Kode-Zeichensatz, das heißt die Zeichen mit den ASCII-Werten 32 bis 127, auch die Steuerzeichen aus dem 7-Bit-Kode-Zeichensatz kodiert. Es sind dies die Zeichen mit den ASCII-Werten 0-31. Ebenfalls in Wordstar-Files sind weitere Steuerinformationen zur Drucksteuerung und für den Mail-Merge-Druck von Serienbriefen, variablen Texten usw. kodiert, aber auch länderspezifische Zeichen (z. B. Umlaute und ß im deutschen Zeichensatz) aus dem 8-Bit-Kode-Zeichensatz, das heißt die Zeichen mit den ASCII-Werten 128 bis 255. Eine Kennzeichnung für den Wprtumbruch und die Neuformatierung von Absätzen, eine Kennzeichnung dafür, daß ein gegebenes Zeichen das Ende eines Wortes darstellt, muß außerdem für jedes dieser Zeichen möglich sein.

Literatur IV

Hauptmann, S.: M O D U L A - 2 : P A S C A L ohne die Nachteile von PASCAL. Mikroprozessortechnik, Berlin 2 (1988) 10, S. 296 121 Wirth, N.: Programming in Modula-2. Springer-Verlag, Berlin, Heidelberg, New York 1985 /3/ Werner, D.: Programmierung von Mikrorechnern. Verlag Technik, Berlin, 1983 /4/ Krapp, M.; Richter, J.; Schwartz, J.: Eine FORTH-Systemfamilie. Mikroprozessortechnik, Berlin 2 (1988) 2, S. 53

El KONTAKT © Technische Hochschule Ilmenau, Sektion Technische und Biomedizinische Kybernetik, PSF 327, Ilmenau, 6300; Tel. 7 4 6 4 7

Somit reicht ein Byte mit 256 Möglichkeiten für diese Kodierung nicht aus; es wurde deshalb folgendermaßen vorgegangen: © Kodierung der druckbaren Zeichen und der Steuerzeichen im 7-Bit-Kode © Nutzung des achten Bits eines jeden Bytes (also auch bei Steuerzeichen!) für die Wortendekennung (gesetzt = Wortende) ® Ein vorangestelltes Steuerzeichen 27 (1BH) und ein nachgestelltes Steuerzeichen 28 (1CH) kennzeichnet, daß ein Zeichen mit einem Kode größer 127 (7FH) kein Wortende, sondern ein Zeichen aus dem 8-BitKode-Zeichensatz ist. © Weitere Steuerinformationen in der Form definierter Sequenzen aus druckbaren Zeichen werden verschlüsselt, indem sie mit einem Punkt in der ersten Position einer Zeile beginnen (Punktbefehle). Die Steuerzeichen 1-25 (01-19H) entsprechen etwa den Ergebnissen der Sequenzen A PA bis A PY. Die konkreten Inhalte werden in der Tafel 1 erläutert. Die Konvertierung Bei der Überführung von ASCII-Files nach Wordstar ist nur die Klammerung der Zeichen des 8-Bit-Kode-Zeichensatzes mit 1BH und 1CHzu ergänzen. Wesentlich komplizierter ist die im weiteren 71

MODULE Testinterrupt; F R O M T a s k H a n d l e r IMPOET c u r r e n t , s i z e , C r e a t e T a s k ; F R O M L i s t e n H a n d l e r IMPORT RUN,READY, F i r s t T a s k , P u t T a s k , GetTask; F R O M S Y S T E M IMPORT A D D R E S S , P R O C E S S , T R A N S F E R , I O T R A N S F E R , N E W P R O C E S S ; F R O M S t o r a g e IMPORT ALLOCATE; C O N S T IntVector = (* e n t s p r e c h e n d e V e c t o r a d r e s s e e i n e s Interrupt *); VAR Workspace ADDRESS; tl TASK; PR0CES6; IntHandler main PROCESS; (* A u s f ü h r u n g s t e i l e i n e s H a u p t m o d u l s ist Coroutine, d e r e n Identi f i k a t o r in m a i n a b g e l e g t w i r d *) PROCEDURE taskl; BEGIN LOOP

BEGIN A L L O C A T E (Workspace,size);

*)

END;

(* n i c h t

terminierend!

*)

E N D taskl; PROCEDURE InterruptHandler; V A R t e m p : PROCESS; BEGIN t e m p := main; (* R ü c k s p r u n g zum Ausführungsteil moduls wird vorbereitet

Bild 3 Modul

LOOP I O T R A N S F E R (IntHandler, temp, IntVector); (* T R A N S F E R v o n I n t H a n d l e r zu t e m p bei g l e i c h zeitiger Initialisierung des Interrupt's c u r r e n t " . P r o c e s s D e s c r i p t o r : =temp; (* R e t t e n des Descriptors der unterbrochenen Task {* I n t e r r u p t b e h a n d l u n g einschließlich eventueller Taskmanipulationen *> c u r r e n t := F i r s t T a s k ( R U N ) ; (* c u r r e n t w i r d a k t u a l i s i e r t *) temp c u r r e n t ' . P r o c e s s D e s c r i p t o r ; (* V o r b e r e i t u n g d e s R ü c k sprungs aus d e r Interruptroutine *) E N D (* loop *); END InterruptHandler;

des

Haupt-

(* A r b e i t s s p e i c h e r r e s e r v i e r u n g für den Interrupt-Handler NEWPROCESS (InterruptHandler,Workspace,size,IntHandler); T R A N S F E R {main,IntHandler); (* I n s t a l l i e r u n g d e s I n t e r r u p t C r e a t e T a s k (taskl,tl); (* . . . P u t T a s k (P'.'N, G e t T a s k (READY); c u r r e n t := F i r s t T a s k (RUN); TRANSFER (main,current".ProcessDescriptor); (* S t a r t d e r M u l t i t a s k a r b e i t m i t I n t e r r u p t E N D Testinterrupt.

Testinterrupt

liehe Rolle. Sie ist ein wichtiges Kriterium für die Beurteilung von Multitasksystemen. Modula-2 bietet mit der SYSTEM-Prozedur IOTRANSFER die Möglichkeit, die Behandlung von Interrupts auf einem hohen Abstraktionsniveau durchzuführen. IOTRANSFER (VAR lntHandler:PROCESS; lnterruptedProcess:PROCESS; lntVector:CARDINAL) IOTRANSFER bietet die Möglichkeit, die Auslösung von TRANSFER als Reaktion auf einen Interrupt, spezifiziert durch eine Vektoradresse IntVector, zu installieren. Nach dieser Installation wird bei einem Interrupt ein TRANSFER asynchron in die laufende Koroutine zur Koroutine IntHandler eingefügt. Der Laufzustand der unterbrochenen Koroutine wird in InterruptedProcess abgelegt. Mit dem Aufruf von IOTRANSFER in IntHandler kann somit zur vorher unterbrochenen Koroutine zurückgesprungen werden. Im Bild 3 wird ein Hauptmodul vorgestellt, der ein Startpunkt für die Multitaskarbeit ist und gleich-

Kodierung von Rainer Ploss,

Berlin

Mitunter besteht die Notwendigkeit der Überführung von Wordstar-Files in andere Formate oder umgekehrt. Abhängig von den speziellen Anforderungen hat dies mit oder ohne Konvertierung der Steuerzeichen zu erfolgen. Im vorliegenden Beitrag möchte ich auf die Kodierung der Files von Wordstar 3.2x und 3.3x im allgemeinen und die der Steuerzeichen im besonderen sowie auf Probleme beim Erarbeiten von Konvertierungsprogrammen eingehen. Denkbare Anwendungsbeispiele für solche Konvertierungen sind: • Übernahme und Übergabe von Daten durch andere Programmsysteme (beispielsweise dBase, Druckvorlagen) • Überführung von Daten von bzw. auf Betriebssystemebene (beispielsweise zur Weiterverarbeitung unter der Regie von BatchFiles oder zum beschleunigten Drucken von Wordstar-Files) Mikroprozessortechnik, Berlin 4 (1990) 3

zeitig die Möglichkeit der Einbindung von Interrupts in die Multitaskarbeit demonstriert. Mit dem Übergang zu 16-Bit-Rechnern ist nicht nur eine quantitativ, sondern auch eine qualitativ neue Softwareentwicklung für diese Systeme notwendig. Modula-2 eignet sich besonders für die Entwicklung umfangreicher Systemsoftware einschließlich Echtzeitanwendungen, wobei das Hochsprächenniveau nicht verlassen werden muß. Ein strenges Typkonzept erhöht außerdem die Softwarezuverlässigkeit. Am Wissenschaftsbereich Technische Informatik der Sektion Technische und Biomedizinische Kybernetik der TH Ilmenau wird aufbauend auf den gewonnenen Erfahrungen bei der Entwicklung von multiFORTH /4/ ein konfigurierbares Multitaskbetriebssystem in Modula-2 für die flexibel automatisierte Fertigung entwickelt (vgl. MP 11/89, Seite 342). Ziel ist ein effizientes, prozeßnahes Betriebssystem, wobei größter Wert auf Portabilität und Strukturierung gelegt wird.

Wordstar-Files • Erzeugung von Drucksteuersequenzen ohne die Hilfe von Programmiersprachen • Korrektur von Programmquelltexten, die fälschlicherweise im Modus D statt N unter Wordstar bearbeitet wurden. In einem Wordstar-File sind neben den druckbaren Zeichen (Buchstaben, Ziffern, Sonderzeichen) aus dem 7-Bit-Kode-Zeichensatz, das heißt die Zeichen mit den ASCII-Werten 32 bis 127, auch die Steuerzeichen aus dem 7-Bit-Kode-Zeichensatz kodiert. Es sind dies die Zeichen mit den ASCII-Werten 0-31. Ebenfalls in Wordstar-Files sind weitere Steuerinformationen zur Drucksteuerung und für den Mail-Merge-Druck von Serienbriefen, variablen Texten usw. kodiert, aber auch länderspezifische Zeichen (z. B. Umlaute und ß im deutschen Zeichensatz) aus dem 8-Bit-Kode-Zeichensatz, das heißt die Zeichen mit den ASCII-Werten 128 bis 255. Eine Kennzeichnung für den Wprtumbruch und die Neuformatierung von Absätzen, eine Kennzeichnung dafür, daß ein gegebenes Zeichen das Ende eines Wortes darstellt, muß außerdem für jedes dieser Zeichen möglich sein.

Literatur IV

Hauptmann, S.: M O D U L A - 2 : P A S C A L ohne die Nachteile von PASCAL. Mikroprozessortechnik, Berlin 2 (1988) 10, S. 296 121 Wirth, N.: Programming in Modula-2. Springer-Verlag, Berlin, Heidelberg, New York 1985 /3/ Werner, D.: Programmierung von Mikrorechnern. Verlag Technik, Berlin, 1983 /4/ Krapp, M.; Richter, J.; Schwartz, J.: Eine FORTH-Systemfamilie. Mikroprozessortechnik, Berlin 2 (1988) 2, S. 53

El KONTAKT © Technische Hochschule Ilmenau, Sektion Technische und Biomedizinische Kybernetik, PSF 327, Ilmenau, 6300; Tel. 7 4 6 4 7

Somit reicht ein Byte mit 256 Möglichkeiten für diese Kodierung nicht aus; es wurde deshalb folgendermaßen vorgegangen: © Kodierung der druckbaren Zeichen und der Steuerzeichen im 7-Bit-Kode © Nutzung des achten Bits eines jeden Bytes (also auch bei Steuerzeichen!) für die Wortendekennung (gesetzt = Wortende) ® Ein vorangestelltes Steuerzeichen 27 (1BH) und ein nachgestelltes Steuerzeichen 28 (1CH) kennzeichnet, daß ein Zeichen mit einem Kode größer 127 (7FH) kein Wortende, sondern ein Zeichen aus dem 8-BitKode-Zeichensatz ist. © Weitere Steuerinformationen in der Form definierter Sequenzen aus druckbaren Zeichen werden verschlüsselt, indem sie mit einem Punkt in der ersten Position einer Zeile beginnen (Punktbefehle). Die Steuerzeichen 1-25 (01-19H) entsprechen etwa den Ergebnissen der Sequenzen A PA bis A PY. Die konkreten Inhalte werden in der Tafel 1 erläutert. Die Konvertierung Bei der Überführung von ASCII-Files nach Wordstar ist nur die Klammerung der Zeichen des 8-Bit-Kode-Zeichensatzes mit 1BH und 1CHzu ergänzen. Wesentlich komplizierter ist die im weiteren 71

Tafel 1 Wordstar-File-Kodierung

interner Inter- Bedeutung Kode aktion (hitxadezimal)

01

PA

02 03

"PB «PC

04 05 06

A PD "PE PF

07

"PG

08

"PH

09

"PI

0A

PJ

OB

"PK

oc OD

PL "PM

OE

"PN

OF

"PO

10 11 12 13 14 15 16 17 18 19

"PP "PQ "PR "PS PT PU "PV "PW "PX PY

1A

EOF

1B

ESC

1C

FS

1D 1E

GS RS

1F

us

Zweite Schreibdichte ein (im allgemeinen Elite) Schattenschrift (Fettdruck) ein/aus Druckpause, bis wieder P im Startmenü gedrückt wird Doppeldruck ein/aus frei installierbar (maximal 4 Zeichen) Phantom-Leerzeichen; druckt Zeichen 20H Phantom-Löschzeichen (Rubout) druckt 7FH Backspace; Überdrucken des nächsten Zeichens starre Tabulatoren; Sprung auf Position 1,9,17... und Einfügen von Leerzeichen Zeilenvorschub (LF) ohne Wagenrücklauf Drucken von Kopf- und Fußzeilen finksbündig bei geradzahligen Seitennummern und rechtsbündig bei ungeradzahligen Seitenvorschub (FF) Wagenrücklauf (CR) ohne Zeilenvorschub Standardschreibdichte ein (im allgemeinen Pica) erhält Leerräume beim Neuformatieren eines Absatzes, beispielsweise Karl IV. Proportionalschrift, nicht dokumentiert frei installierbar (maximal 4 Zeichen) frei installierbar (maximal 4 Zeichen) Unterstreichen ein/aus Hochstellen ein/aus keine Bedeutung Tiefstellen ein/aus frei installierbar (maximal 4 Zeichen) sichtbares Textdurchstreichen mit '' " Schwarz-Rot-Farbbandumschaltung, wenn vorhanden, sonst frei installierbar File-Ende; WordStar verwendet 128Byte-Sätze, der letzte Satz wird mit EOF-Zeichen vollständig aufgefüllt Kennzeichnung, daß das folgende Zeichen aus dem 8-Bit-Zeichensatz ist und sein achtes Bit nicht als Wortende interpretiert wird. Der Kode 1 CH folgt dem Zeichen aus dem 8-Bit-Zeichensatz. keine Bedeutung bedingter (weicher) Trennstrich, wenn er innerhalb einer Textzeiie steht bedingter (weicher) Trennstrich, wenn er am Ende einer Textzeile steht, das heißt wenn er aktiv ist und ausgedruckt wird

beschriebene Rückrichtung. Sie ist abhängig von • den Anforderungen an die Konvertierung der Steuerzeichen (teilweise, vollständig) • dem vorliegenden frei installierbaren Teil der Druckersteuerung ( A PE, A PQ, A PR, A PW, A PY) • dem angeschlossenen Drucker. Bei dieser Konvertierung werden folgende Gruppierungen erkannt: • Wortendekennung (Rücksetzen Bit 8) • Ein-Byte-Eliminierungen (siehe hexadezimaler Kode 1 EH) • Ein-Byte-zu-Ein-Byte-Ersetzungen (siehe 06H, 07H, 08H, OAH, OCH, ODH, OFH, 1AH und 1FH) • Ein-Byte-zu-Mehr-Byte-Ersetzungen (siehe 01H und OEH sowie eventuell 05H, 11H, 12H, 17H, 19H) - Ein-Byte-zu-Mehr-Byte-Ersetzungen mit Ein-/Ausschaltung (siehe 02H, 04H, 13H und 14H sowie eventuell 05H, 11H, 12H, 17H und 19H) - Tabulatoren (siehe 09H; Einfügen einer von der aktuellen Position in der Zeile abhängigen Anzahl von 1 - 8 Leerzeichen) - Durchstreichen (siehe 18H; n-mal Backspace und Überschreiben m i t " - " ) • Mehr-Byte-zu-Ein-Byte-Ersetzungen (siehe Rahmen aus 1BH und 1CH) • Punktbefehle (Interpretation der konkreten Befehle) Bei der Überführung von Wordstar-Files in ASCII-Files mit teilweiser Konvertierung der Steuerzeichen (reine Textkonvertierung) sind die Wortendekennung, die Punktbefehle, die Klammerung der Zeichen des 8-BitKode-Zeichensatz sowie alle Steuerzeichen von 01H—1FH (außer ODH, OAH und 1 AH) zu eliminieren bzw. diejenigen Steuerzeichen zu ersetzen, die zu druckbaren Zeichen führen (06H, 07H, OFH, 1FH sowie Tabulatoren 09H und Durchstreichen 18H). Bei einer vollständigen Konvertierung müssen alle genannten Gruppierungen berücksichtigt werden. Die meisten Gruppierungen lassen sich ohne programmtechnischen Aufwand lösen, indem die Ausgangsdatei mit Wordstar in eine neue Datei g e d r u c k t wird. Beantwortet man dabei die Frage nach der Wiederverwendung durch Wordstar mit nein, werden alle Wortendekennungen eliminiert, die Punktbefehle entsprechend ihrer Bedeutung aufgelöst und die Kennzeichnungen für die Zeichen des

Neuer Funktionsinterpreter für Turbo-Pascal Peter E. Nebe, Dresden Arithmetische Ausdrücke in einen TurboPascal-Quelltext einzuarbeiten, ist kein Problem. Wie lassen sich aber beliebige mathematische Funktionen mit einem kompilierten Programm berechnen? Hier hilft ein eigener Funktionsinterpreter. Das im folgenden vorgestellte Unterprogramm in Turbo-Pascal analysiert die als Zeichenkette eingegebene Funktion zeichenweise von links nach rechts und berechnet dabei gleichzeitig den Funktionswert. Andere 72

Lösungen, zum Beispiel in IM, führen Analyse und Berechnung nacheinander durch und erfordern damit einen erhöhten Programmieraufwand. In der im Bild 1 vorgestellten Funktion wird nach dem Schema Operand-Operator-Operand gesucht und berechnet (Zeilen 159 bis 162), wobei ein Operand eine Zahl, eine Variable x odery, ein Funktionsaufruf, ein Klammerausdruck oder eine Verkettung von Operanden mit höherer Priorität sein kann (Funktionen Wert und Operand). Zu diesem Zweck wird vor der eigentlichen Rechenoperation stets getestet, ob der Operator, der dem

8-Bit-Kode-Zeichensatz (1 BH und 1 CH) entfernt. Umgesetzt werden auch die Anweisungen A PK, A PI, A PM und A PO (sowie A PL, wenn die Frage nach der Verwendung des Seitenvorschubbefehls verneint wird). Offen bleibt somit nur noch das Problem der Drucksteuerzeichen 0 1 - 0 7 H und 10-19H. Bei der Erarbeitung solcher Konvertierungsprogramme ist sinnvollerweise eine Tabelle analog der Tafel 1. zuzüglich einer Spalte mit den konkreten Sequenzen für den vorliegenden Drucker zu erstellen. Die konkret installierten Werte der Sequenzen für die Drucksteuerung lassen sich entweder aus den aktuellen Werten des Installationsprogrammes WINSTALL oder durch einen Wordstar-Testlauf und anschließenden Vergleichstestlauf mit dem Druckerhandbuch ermitteln. Sie können aber auch direkt mit einem Debugger aus dem WS.COM-File entnommen werden IM, jedoch sind die Positionen abhängig von der vorliegenden Version. (Es gibt beispielsweise Unterschiede zwischen den Versionen 3.32 und 3.24.) Die Position der Eintragung einer gesuchten Eigenschaft läßt sich durch alternierendes Installieren dieser Eigenschaft und anschließenden File-Vergleich beispielsweise mit dem MS-DOS-Kommando FC ermitteln. Ein in C geschriebenes vorliegendes Konvertierungsprogramm erreicht bei der vollständigen Umwandlung von Files auf 16-Bit-Computern in Abhängigkeit von der Filegröße, der Anzahl der erfolgten Korrekturen, den verwendeten Laufwerken und den Gerätetreibern eine Geschwindigkeit von etwa 1 bis 4 KByte/s auf Disketten, etwa 5 bis 8 KByte/s auf der Festplatte und etwa 11 bis 13 KByte/s auf der RAM-Disk. Mit Ausnahme der Interpretation der Punktbefehle und des Durchstreichens ( A PX) wurden alle Gruppierungen berücksichtigt.

Literatur /1/ Juergensmeier, G.: Wordstar für PCs und Kompatible, Haar bei München, Markt und Technik Verlag 1986 /2/ MicroPro International Corporation: Wordstar Benutzerhandbuch. Version 3.3,1982 /3/ MicroPro International Corporation: Wordstar Installationshandbuch. Version 3.3,1982 /4/ SEIKO EPSON Corporation: Matrixdrucker Handbuch 1987 /5/ Hewlett-Packard-Company: ThinkJet Printernutzerhandbuch, 1984

Schema nachfolgt, höhere Priorität besitzt (Zeile 137). Der Interpreter arbeitet mit rekursiven Unterprogrammen. Auf den Compiler-Schalter ( * $ A - * ) konnte jedoch verzichtet werden, weil die entsprechenden Variablen dynamisch zwischengespeichert werden (Stapelprinzip, Prozeduren push und pop). Somit können beliebig komplizierte Ausdrücke berechnet werden. Auch das Potenzzeichen A kann benutzt werden (Basis>0). Das Programm läßt sich leicht um weitere Funktionsaufrufe, zum Beispiel zyklometrische und hyperbolische Funktionen, entsprechend TAN und COT erweitern. Fehler werden zum größten Teil mit der Prozedur Meldung abgefangen. Eine Überschreitung des Wertebereiches für Real-Zahlen führt jedoch zum Programmabbruch. Diese Problematik wurde in 121 behandelt. Mikroprozessortechnik, Berlin 4 (1990) 3

Tafel 1 Wordstar-File-Kodierung

interner Inter- Bedeutung Kode aktion (hitxadezimal)

01

PA

02 03

"PB «PC

04 05 06

A PD "PE PF

07

"PG

08

"PH

09

"PI

0A

PJ

OB

"PK

oc OD

PL "PM

OE

"PN

OF

"PO

10 11 12 13 14 15 16 17 18 19

"PP "PQ "PR "PS PT PU "PV "PW "PX PY

1A

EOF

1B

ESC

1C

FS

1D 1E

GS RS

1F

us

Zweite Schreibdichte ein (im allgemeinen Elite) Schattenschrift (Fettdruck) ein/aus Druckpause, bis wieder P im Startmenü gedrückt wird Doppeldruck ein/aus frei installierbar (maximal 4 Zeichen) Phantom-Leerzeichen; druckt Zeichen 20H Phantom-Löschzeichen (Rubout) druckt 7FH Backspace; Überdrucken des nächsten Zeichens starre Tabulatoren; Sprung auf Position 1,9,17... und Einfügen von Leerzeichen Zeilenvorschub (LF) ohne Wagenrücklauf Drucken von Kopf- und Fußzeilen finksbündig bei geradzahligen Seitennummern und rechtsbündig bei ungeradzahligen Seitenvorschub (FF) Wagenrücklauf (CR) ohne Zeilenvorschub Standardschreibdichte ein (im allgemeinen Pica) erhält Leerräume beim Neuformatieren eines Absatzes, beispielsweise Karl IV. Proportionalschrift, nicht dokumentiert frei installierbar (maximal 4 Zeichen) frei installierbar (maximal 4 Zeichen) Unterstreichen ein/aus Hochstellen ein/aus keine Bedeutung Tiefstellen ein/aus frei installierbar (maximal 4 Zeichen) sichtbares Textdurchstreichen mit '' " Schwarz-Rot-Farbbandumschaltung, wenn vorhanden, sonst frei installierbar File-Ende; WordStar verwendet 128Byte-Sätze, der letzte Satz wird mit EOF-Zeichen vollständig aufgefüllt Kennzeichnung, daß das folgende Zeichen aus dem 8-Bit-Zeichensatz ist und sein achtes Bit nicht als Wortende interpretiert wird. Der Kode 1 CH folgt dem Zeichen aus dem 8-Bit-Zeichensatz. keine Bedeutung bedingter (weicher) Trennstrich, wenn er innerhalb einer Textzeiie steht bedingter (weicher) Trennstrich, wenn er am Ende einer Textzeile steht, das heißt wenn er aktiv ist und ausgedruckt wird

beschriebene Rückrichtung. Sie ist abhängig von • den Anforderungen an die Konvertierung der Steuerzeichen (teilweise, vollständig) • dem vorliegenden frei installierbaren Teil der Druckersteuerung ( A PE, A PQ, A PR, A PW, A PY) • dem angeschlossenen Drucker. Bei dieser Konvertierung werden folgende Gruppierungen erkannt: • Wortendekennung (Rücksetzen Bit 8) • Ein-Byte-Eliminierungen (siehe hexadezimaler Kode 1 EH) • Ein-Byte-zu-Ein-Byte-Ersetzungen (siehe 06H, 07H, 08H, OAH, OCH, ODH, OFH, 1AH und 1FH) • Ein-Byte-zu-Mehr-Byte-Ersetzungen (siehe 01H und OEH sowie eventuell 05H, 11H, 12H, 17H, 19H) - Ein-Byte-zu-Mehr-Byte-Ersetzungen mit Ein-/Ausschaltung (siehe 02H, 04H, 13H und 14H sowie eventuell 05H, 11H, 12H, 17H und 19H) - Tabulatoren (siehe 09H; Einfügen einer von der aktuellen Position in der Zeile abhängigen Anzahl von 1 - 8 Leerzeichen) - Durchstreichen (siehe 18H; n-mal Backspace und Überschreiben m i t " - " ) • Mehr-Byte-zu-Ein-Byte-Ersetzungen (siehe Rahmen aus 1BH und 1CH) • Punktbefehle (Interpretation der konkreten Befehle) Bei der Überführung von Wordstar-Files in ASCII-Files mit teilweiser Konvertierung der Steuerzeichen (reine Textkonvertierung) sind die Wortendekennung, die Punktbefehle, die Klammerung der Zeichen des 8-BitKode-Zeichensatz sowie alle Steuerzeichen von 01H—1FH (außer ODH, OAH und 1 AH) zu eliminieren bzw. diejenigen Steuerzeichen zu ersetzen, die zu druckbaren Zeichen führen (06H, 07H, OFH, 1FH sowie Tabulatoren 09H und Durchstreichen 18H). Bei einer vollständigen Konvertierung müssen alle genannten Gruppierungen berücksichtigt werden. Die meisten Gruppierungen lassen sich ohne programmtechnischen Aufwand lösen, indem die Ausgangsdatei mit Wordstar in eine neue Datei g e d r u c k t wird. Beantwortet man dabei die Frage nach der Wiederverwendung durch Wordstar mit nein, werden alle Wortendekennungen eliminiert, die Punktbefehle entsprechend ihrer Bedeutung aufgelöst und die Kennzeichnungen für die Zeichen des

Neuer Funktionsinterpreter für Turbo-Pascal Peter E. Nebe, Dresden Arithmetische Ausdrücke in einen TurboPascal-Quelltext einzuarbeiten, ist kein Problem. Wie lassen sich aber beliebige mathematische Funktionen mit einem kompilierten Programm berechnen? Hier hilft ein eigener Funktionsinterpreter. Das im folgenden vorgestellte Unterprogramm in Turbo-Pascal analysiert die als Zeichenkette eingegebene Funktion zeichenweise von links nach rechts und berechnet dabei gleichzeitig den Funktionswert. Andere 72

Lösungen, zum Beispiel in IM, führen Analyse und Berechnung nacheinander durch und erfordern damit einen erhöhten Programmieraufwand. In der im Bild 1 vorgestellten Funktion wird nach dem Schema Operand-Operator-Operand gesucht und berechnet (Zeilen 159 bis 162), wobei ein Operand eine Zahl, eine Variable x odery, ein Funktionsaufruf, ein Klammerausdruck oder eine Verkettung von Operanden mit höherer Priorität sein kann (Funktionen Wert und Operand). Zu diesem Zweck wird vor der eigentlichen Rechenoperation stets getestet, ob der Operator, der dem

8-Bit-Kode-Zeichensatz (1 BH und 1 CH) entfernt. Umgesetzt werden auch die Anweisungen A PK, A PI, A PM und A PO (sowie A PL, wenn die Frage nach der Verwendung des Seitenvorschubbefehls verneint wird). Offen bleibt somit nur noch das Problem der Drucksteuerzeichen 0 1 - 0 7 H und 10-19H. Bei der Erarbeitung solcher Konvertierungsprogramme ist sinnvollerweise eine Tabelle analog der Tafel 1. zuzüglich einer Spalte mit den konkreten Sequenzen für den vorliegenden Drucker zu erstellen. Die konkret installierten Werte der Sequenzen für die Drucksteuerung lassen sich entweder aus den aktuellen Werten des Installationsprogrammes WINSTALL oder durch einen Wordstar-Testlauf und anschließenden Vergleichstestlauf mit dem Druckerhandbuch ermitteln. Sie können aber auch direkt mit einem Debugger aus dem WS.COM-File entnommen werden IM, jedoch sind die Positionen abhängig von der vorliegenden Version. (Es gibt beispielsweise Unterschiede zwischen den Versionen 3.32 und 3.24.) Die Position der Eintragung einer gesuchten Eigenschaft läßt sich durch alternierendes Installieren dieser Eigenschaft und anschließenden File-Vergleich beispielsweise mit dem MS-DOS-Kommando FC ermitteln. Ein in C geschriebenes vorliegendes Konvertierungsprogramm erreicht bei der vollständigen Umwandlung von Files auf 16-Bit-Computern in Abhängigkeit von der Filegröße, der Anzahl der erfolgten Korrekturen, den verwendeten Laufwerken und den Gerätetreibern eine Geschwindigkeit von etwa 1 bis 4 KByte/s auf Disketten, etwa 5 bis 8 KByte/s auf der Festplatte und etwa 11 bis 13 KByte/s auf der RAM-Disk. Mit Ausnahme der Interpretation der Punktbefehle und des Durchstreichens ( A PX) wurden alle Gruppierungen berücksichtigt.

Literatur /1/ Juergensmeier, G.: Wordstar für PCs und Kompatible, Haar bei München, Markt und Technik Verlag 1986 /2/ MicroPro International Corporation: Wordstar Benutzerhandbuch. Version 3.3,1982 /3/ MicroPro International Corporation: Wordstar Installationshandbuch. Version 3.3,1982 /4/ SEIKO EPSON Corporation: Matrixdrucker Handbuch 1987 /5/ Hewlett-Packard-Company: ThinkJet Printernutzerhandbuch, 1984

Schema nachfolgt, höhere Priorität besitzt (Zeile 137). Der Interpreter arbeitet mit rekursiven Unterprogrammen. Auf den Compiler-Schalter ( * $ A - * ) konnte jedoch verzichtet werden, weil die entsprechenden Variablen dynamisch zwischengespeichert werden (Stapelprinzip, Prozeduren push und pop). Somit können beliebig komplizierte Ausdrücke berechnet werden. Auch das Potenzzeichen A kann benutzt werden (Basis>0). Das Programm läßt sich leicht um weitere Funktionsaufrufe, zum Beispiel zyklometrische und hyperbolische Funktionen, entsprechend TAN und COT erweitern. Fehler werden zum größten Teil mit der Prozedur Meldung abgefangen. Eine Überschreitung des Wertebereiches für Real-Zahlen führt jedoch zum Programmabbruch. Diese Problematik wurde in 121 behandelt. Mikroprozessortechnik, Berlin 4 (1990) 3

0 FUNCTION 0

Funktionswert

0 (* F u n k t i o n s i n t e r p r e t e r 0 (* = = = = = = = = = = = = = = = = = = = =

(Term: Vers

str78; 2.0

x,y:

real):

real;

V o n P e t e r E. D r e s d e n , Hai

) Nebe 1989

0 0

(* w i c h t i g e B e z e i c h n e r : 0 THEN Funkt ion:=ln(a) E L S E H e l d u n g ( L N ( A < = 0 ) n i c h t e r l a u b t ' , z e i g e r - 2 ) END; 17:Funktion:=abs(Gesamtkette); 21:Funktion:=sin(Gesamtkette); 25:Funkt ion:=cos(Gesamtkette); 29:BEGIN a:=Gesamtkette; IF c o s ( a ) < >0 T H E N F u n k t i o n : = s i n ( a ) / c o s ( a ) (* T A N * ) ELSE H e l d u n g C " T A N ( ( 2 n + 1 ) * p i / 2 ) nicht erlaubt',zeiger-2) END; 33:BEGIN a:=Gesamtkette; IF s i n ( a ) < > 0 T H E N F u n k t i o n : = c o s ( a ) / s i n ( a ) (* C O T * ) ELSE Heldung('COT(n*pi) nicht erlaubt',zeiger-2) END; ELSE Heldungi'ungueltiger Funkt ionsaufruf',zeiger-2) END (case) END; { F u n k t i o n )

0

0

0

FUNCTION Gesamtkette:real; FORWARD; FUNCTION Teilkette 0 T H E N E r g e b n i s : = a / b 2 ELSE MeldungC'Division durch null',zeiger-2); 2 *"':IF a > 0 T H E N E r g e b n i s : = e x p ( I n C a ) * b ) 2 ELSE HeldungC'Basis ;

if

begi n L"

do

begin

Eintrag !=E|v;=NIL;re:=NIL;1i!=NIL

end;

Finde

( L : K n o t e n ; Et E i n t r a g t y p ; v a r

P:Knoten);

beai n

L*.Ei ntrag

-

E

end

var

then

P:=L

»ritelnl'Anfuegeknoten

P O N I L

then

then

Pi=Tee*.re

begin

eise

nicht

gefunden')

'P:=TenA.1i;

P; = N I L ; M r i t e l n ( ' A n f u e g u n g

besetzt"!

end

begin R=rechts

end

then

Finde(L*.re.E,P):

P"

do

then begin

Te»*.re;=P

else

Te«*.li:=P;

v; = T e » ; E i n t r a g ; = E ; r e ; = N I L ; 1 i s = N I L

end

end; Anf

(P;Knoten;E:Eintragtyp;R;Richtung);

TescKnoten;

begin

else

neN(Tern) ;

begi n

80

Unrechts

if

procedure

P:=NIL;

if

L".reONIL

if

end

;P;=NIL;

then

Kith

Procedure

end;

NIL

begin

nea(P);

end ;

if

=

else

n e w iL I; uith

P;Knoten);

Te«:Knoten;

and

(L'.liONIL)

then

Finde(L*.1i,E,P);

Nith if

Tem~

do

R=rechts

begin then

v;=P;Eintragi=E;re:=NIL;1i:=NIL

PA.re:=Tem

else

end;

PA.li:=Te«

end;

Bild

45

Prozeduren

für binäre

Bäume

Mikroprozessortechnik, Berlin 4 (1990) 3

Kurs progra« Stammbaum;

Kind

AO

type Eintragtyp = string[?0]; =StartLevel; Ell;

Bild 1 Listing der Include-Datei zur RückVerfolgung von 1: 2: 3: 4: 5: 6: 7: 8: 10: 11: 12: 13: 14: 15: 16: 17: 18:

PR0GRAÎÏ TraceBackDemo {ni TRACEBK.INC}

Prozedurruten

Bild 2 Demonstration einer gung von Prozedurrufen

Rückverfol-

PROCEDURE dimroyi ; BEGIN traceback; END; PROCEDURE dumniy2; BIG IM àummyl ; END; BEGIN initbacktracer; dumrrçr2;

sire.

Literatur IM Gieselmann, K.: Turbo Pascal auf der Spur. Pascal, Eschwege 3 (1988) 4, S. 80. Mikroprozessortechnik, Berlin 4 (1990) 3

Strukturiert programmieren in Basic

ComputerClub

Dietmar Gratia, Berlin

Nicht allen Programmierern ist es möglich, eine Programmiersprache, die die strukturierte Programmierung unterstützt, auf ihren Rechnern einzusetzen. Es ist aber eine Forderung unserer Zeit, daß das statische Layout auch für andere Programmierer in kürzester Zeit lesbar ist. Deshalb soll in diesem Beitrag für die genannte Gruppe von Programmierern ein Weg gezeigt werden, wie auch Basic-Programmierer strukturiert programmieren können, obwohl dies in Basic nicht ohne weiteres möglich ist. Das Variablenkonzept Die Variablen werden als Steuerregister deklariert. Diese werden als SRn bezeichnet und auf 0 gesetzt. Soll eine Aktion ausgeführt werden, wird SRn auf einen von 0 verschiedenen Wert gesetzt. Beispiel: SRS ... SRS=0 ... SRS=1 ... SRS=2 ...

Steuerregister Zeichensatz Ausgangszustand deutscher Zeichensatz amerikanischer Zeichensatz

Vor Eintritt in die entsprechende WHILE-Schleife wird der Wert von SRn an SRnW übergeben. SRnW ist die für die WHILE-Schleife relevante Variable und kann verändert werden. Ist wie im Beispielprogramm eine einmalige Abarbeitung gefordert, wird vor Verlassen der Schleife SRnW ohne Bedingung auf einen Wert gesetzt, der dem Typ von SRnW, aber nicht der Eingangsbedingung entspricht. WHILE SRSW=1

SRSW=0 WEND Dadurch erfolgt das Verlassen der Schleife, ohne daß das Steuerregister SRn verändert wurde, und es steht SRn für die nächste Abarbeitung bereit. Der Programmaufbau Für eine klare Strukturierung ist es notwendig, Sprunganweisungen (GOTO-Anweisungen), die aus der Zeile herausführen, möglichst zu umgehen. Dazu werden die IF-Anweisungen durch WHILE-Anweisungen ersetzt. Innerhalb der WHILE-Schleife wird eine Aktion in Abhängigkeit von einer Eingangsbedingung ausgeführt. Nach ausgeführter Aktion innerhalb der Schleife muß die Eingangsbedingung negiert werden, um eine weitere Abarbeitung zu unterdrücken. Das Programm DEMO geht davon aus, daß dem Leser ein Bildschirm mit 24 Zeilen, 80 Spalten (BAB 2), ein Bildwiederholspeicher ab Adresse 63488d (F800H) und ein Drucker LX 86 zur Verfügung steht. Auf das Grundmenü wird ein Hilfsmenü Druckersteuerung gepoket, das zuvor aus den DATA-Anweisungen in das Feld WF() geladen wurde. Der ursprüngliche Inhalt des Bildwiederholspeichers befindet sich anschließend im Feld WF(), wodurch die ursprüngliche Bildschirmausschrift wieder hergestellt werden kann und das Hilfsmenü wiederum im Feld WF() zur Verfügung steht (Unterprogramm 1240). Es wird an einem einfachen Beispiel gezeigt, wie der Inhalt des Bildwiederholspeichers gewechselt werden kann, ohne daß der Programmierer den ursprünglichen Zustand aufwendig im voraus erkennen und programmieren muß. Der dem Hilfsmenü entsprechende Inhalt des Bildwiederholspeichers wurde mit dem Programm WINDOW im ASCII-Code ausgedruckt und kann sowohl aus den DATA-Anweisungen im Programm DEMO als auch aus einer Datei von Diskette gelesen werden.

• rv " r'77 ,L.C) ' 777 7 +CHfti ( '. 27-H..)H-CHR* (17'7+C) 77 " "HRi-i; 2' '10 I'-EFFTR 7 ) K .1 ~ '1 TO 20 .0 > 1 -7 rn-i'-< /¡.000 . 500a. 60-))0, 700p!, SV 14000,15000,16000,1700 ' F'JPK.S (Kl, 1 2) ; ZEIÍ.F T.7 ' i NEXT Kl :2 • '7 FÜR r i -J 7fJ 70 1 10 PPR i -'---1 - TO '1.7 • "7 - -- I rrr, ' - •: K1 -1 ) * • ' 7 -1 : L.PRINT FHFT ¡TÍ.^FICHER•> : " ri-'/ - . 7 '.rr::%'T ' h'3 NEXT I t ;i PRINT : "'7 1" ThJ? - "!.!•• TAÍ7 THEN 77T7 170 Í F O R -1 7 T7 70 170 FOP K? = 12 TO 1? '•00 7PEICHFR-PEFFK (634,78+80* (K1 -1 : + (K2-1 "1 0 ¡.PRINT URIN:-i ' ' i* f # r ' ; F.F'FICHFR : »irvT 1 1-2 •'7.7 ^ - If. : N7 :• i K' "-7C! FN3 >«W TEILE' " 'tí! !Ht«#S8««#Sa II#*##»#*»#»»##«###": RETURN >7000 7FIL.E--' ! RETURN .".080 2Eli. F-='t! Drue !•• rr ste'-Ciri ing : RETURN 7000 •'EIU.c.:' ¡RETURN 700B IETLE-' rhen^at- -dif: : RETURN rll:anii5ch It' : RETI IRN 1 Î T

7EII..E5" "M 7 E t L E - "1! ":'FTLF" " S Z E I L E - "ft « V W PI ZFTLE== 7RT¡.

í ZPQQ 1

: T, î "ft t. 7 0 0 0 : t,°.i îl?0 7 E T i ZE.TI._E/TET¡„E~ »

7.E ~-Zïî.Xi.r

.?em znsrm

* 3 c h r i -ft.art.

- n : " — 350 TA t i " ": TASF'i" " " 351 WHILE TAi"P" AND TAi< >"B" 353 TAi-INKEYi Eine Erhöhung der Effizienz kann erreicht werden, wenn die Steu355 WENT erregister mit DEFSTR S als STRING-Variablen deklariert werden. 360 WHILE TAi-iV'B" Dann kann die Kodierung für den deutschen Zeichensatz wie folgt WHILE TAi="D" PRINT FNRki (10.251 ,- "Drucksr steuerunn" : aussehen: SR.B—0: PRINT CHRi(131): SRS="d" oder wenn auf DEFSTR S nicht zurückgegriffen wurde: GOSUB 7000 SRS$="d". Diese Varianten führen zu einer verbalen ProgrammieWHILE SRB-0 "iSPS-T.Ai •160 rung. 4 70 TAi—INKEYi, IF TAi--"" TMEN R17TO 4^0 WHILE (T7ii~''cf" !7R HR TAf="n" Durch die gezeigte Technik erhöht sich die Lesbarkeit des Pro" ' • Tea gramms; sie erleichtert die Fehlersuche und verringert die GOTO• Í 1 P . 78 ) ; TAf "PINT Anweisungen auf ein Minimum. 510 !" THEN 7h7 -Mikroprozessortechnik, Berlin 4 (1990) 3

-" OR TA:»-»"

91

520 53?! 540 550 560 565 570 530 590 603 610 612 615. 620 625 626 627 630 640 650 655 660 66^ 6 70 ¿SB 700

-10 320 330 340 350 360 870 880 890 900 910 920 930 940 950 960 970 971 972 973 974 975 97 6 977 973 979 980 951

IF THEN SRS=2 IF TAi="n" THEN SRA^l IF TAi="k" THEN SRA=2 IF TAi-"r" THEN SRA-3:: SRS-0 IF TAi="b" THEN 5RB>=1: TAi-"" SRBW=SRB WHILE SRBW=0 TA*»INKEVis IF TAt»' '" THEN SRBW=1 WEND WEND WEND PRINT FNPKi118,28);" BOSUB 2000 PRINT CHR*(130)! PRINT FNPKi(10,25) ! " . PRINT FNPKi(10,25) : TA£=TASP$ TAi=INKEYi!IF TAi=" " THEN GOTO 640 WEND TA»«INKEY«IIF Tft«"»~ THEN GOTO 655 WEND PRINT FNPKÏ (10,25) ! "Beai nn' tier Abarbe.i turn SRBW--SRB WHILE SRBW~1 PRWT FNFIft (13, 1 ) ; " Bi tt.e uckfîr i E r ; i ; t m a r h e PR TNT FNPKi (14 . 1 1 ; " Taste \ betaet i cr;r: " ; IF THEN GOTO 710 ist. be?rt?it" LPRINT;PRINT rNPKi i 15,27) t r, SRSW-8RS:SRAW^PRA L-RINT l~HRi (27 ) + "(*":: WHILE SRAW'3 i ij t i n j t i A1 .i 5 i PRINT F N P K i r 1 7 . 2 7 S 5 D r u c k SRAW-? WEND WHILE SRSW;-1 •'- PRINT CHR:fc(~7>+"R"+CHR* PRINT FWRK?'17,?7) : "•» H SRSW-0 WEND WHILE SRSW=2 LPRINT CHR*(27> "R"+CHRi(0)! PRINT FNPKi(17, 7 ) i " * amerikanischer S e h r i f t s a t z " SRSW-0 WEND WHILE SRAW=1 PRINT FNPKi (18,27) : "* normale Sehr i-f t b r e i te" SRAW=0 WEND WHILE SRAW=2 LPRINT CHRi(27)+CHRt(15); PRINT FNPKi(13,27);"» Schmalschrift SRAW=0 WEND SRBW-0 SRSW=SRS WHILE SRSW=1 LPRINT "Testausdruck f>r deutschen Zeichensatz" LPRINT " "iSRSW: WEND WHILE SRSW=2 LPRINT "Tsstausrfruck iucr amerikanisrheh Zeichensatz"

SRSW=0 WEND 990 WEND 1990 END 2000 FOR KI=4 TO 20 2010 FOR K2-12 TO 42 2020 BWS--PEEK (634S3 ! +30* (Kl - 1 ) + (K2-1) ) 2030 SWAP BWS.WFi(Kl-4),(K2-12)) 20'! e POKE (63438!+30*(Kl-1)+(K2-1)),BWS NEXT K2 2050 NEXT K1 2060 RETURN 2070 Literatur IM Mühlhaus, D.: Ausdrucken von Bildschirminhalten beim PC 1715 unter SCP. Mikroprozessortechnik 2 (1988) 3, S. 95 121 Gralla, D.: Zum Artikel „Ausdrucken von Bildschirminhalten beim PC 1715 unter SCP". Mikroprozessortechnik, Berlin 2 (1988) 7, S. 195

auf andere Bildschirmgrößen einfach wird. Zum Zeichnen von Strecken wird das im KC-Forth vorhandene Wort PLOT benutzt. Es erwartet fünf Parameter auf dem Datenstapel mit folgenden Bedeutungen P L O T ( f x y d x c f y — f x1 y 1 ) f Flag mit f = 0 Linie wird gelöscht f = 1 Linie wird gezeichnet x, y Koordinaten des Ausgangspunktes dx, dy Länge der x- bzw. y-Komponente x1, y1 Koordinaten des Endpunktes Das FLAG f wird in die gleichnamige Variable gesteckt, die mit 1 initialisiert wird, da ein Plotter nicht radieren kann. (In einer Ausbaustufe kann die- ses Flag für die Funktion LOESCHEN verwendet werden.) Die letzten beiden Parameter sind für das Beispiel in IM unpassend, weil dort statt der Koordinatendifferenzen die Absolutpositionen eingegeben werden müssen. Die Anpassung wird im Wort Z E I C H N E N erledigt, das außerdem noch das Flag f unter die bereits auf dem Stapel befindlichen vier Werte mit Hilfe des Wortes FLAG- S E T Z E N legt und das Flag nach dem Zeichnen wieder vom Stack entfernt. Nun haben wir alle Worte beieinander, die uns den Bildschirm als Plotter erscheinen lassen und können darangehen, die Plotterfunktionen aufzuschreiben. Beginnen wir mit den Worten HEBEN und SENKEN, die einfach die Variable STIFT entsprechend setzen. Das grundlegende Wort ANFAHREN muß die aktuelle Position, in der sich der Plotter gerade befindet, als zusätzliche Information dem „gedächtnislosen" Bildschirm mitteilen. Sie

Datei A: PLOTS. CF2 Block 2 0 { PLOTTER vorbereiten .) 1 2 0 VARIABLE X_POS 0 VARIABLE Y_POS 3 0 VARIABLE STIFT 4 0 CONSTANT X_MIH 320 CONSTANT X_MAX 5 0 CONSTANT Y_MIN 256 CONSTANT Y_MAX

12

In IM wurde für die Erläuterung des Programmierens in Förth das Beispiel einer einfachen Plotteransteuerung gewählt. Viele Leser werden, so wie wir, keinen Plotter besitzen und dennoch solche Beispiele ausprobieren wollen. Im folgenden Beitrag wird gezeigt, wie sich die vier Plotterfunktionen Stift anheben Stift senken Position anfahren zwei Punkte verbinden auf dem Bildschirm simulieren lassen. Als Ausgangspunkt verwendeten wir den grafikfähigen Kleincomputer KC 85/2 bzw. KC 85/3 mit dem Forth-Modui M 026 oder mit geladenem Förth.

92

Forth

Zunächst wird in Screen 1 der Wortschatz des KC-Forth erweitert, wonach eine direkte Übernahme der Beispiele möglich wird. Danach werden die Variablen X _ P O S und Y _ P O S eingeführt, die die von einem echten Plotter automatisch beim Stehenbleiben gespeicherte aktuelle Position des Stiftes aufnehmen sollen. Aus analogen Gründen wird zur Unterscheidung, ob der Plotterstift gehoben oder gesenkt ist, die Variable STIFT eingeführt, wobei STIFT = 1 gesenkt und STIFT = 0 gehoben bedeutet. Die gerätespezifischen Koordinatengrenzen sind in den Konstanten X_MIN, X_MAX, Y_MIN und Y_MAX abgelegt, wodurch die Übertragung

Torsten Schmidt, Marco Thäle

2SWAP ( xl yl x2 y2 — x2 y2 xl yl ) BOT >R BOT R> ; 20VER ( xl yl x2 y2 — jcl yl x2 y2 xl yl ) >R >R 2DUP R> R> 25WAP ; 2DR0P { x y — > DBOP DBOP ;

1 VARIABLE FLAG : FLAG_SETZEN ( xl yl x2 y2 — f xl yl x2 y2) >R >R >R >R FLAG • R> R> R> R> ;

11 : ZEICHNEN ( xl yl x2 y2 —

mit KC 85/3 in

Literatur

IM Pfüller, H. u.a.: Einführung in Förth 83, Teil 1. MP, Berlin 3 (1989) 3, S. 79 121 Jorke, G.; Lampe, B.; Wengel, N.: Arithmetische Algorithmen der Mikrorechentechnlk. Berlin: Verlag Technik 1989 131 Taege, P.: Schnelle Algorithmen für Geraden und Kreise in Förth. MP, Berlin 3 (1989) 8, S. 246

Datei A: PLOTS. CF2 Block 1 ( KC-FORTH erweitern )

10

Plottersimulation

wird als erstes auf den Stack geschafft und mit den Endpunktkoordinaten vertauscht, damit die Reihenfolge für ZEICHNEN stimmt. Bei der weiteren Abarbeitung des Befehls ANFAHREN wird mit der Variablen STIFT zwischen abgehobenem und abgesenktem Plotterstift unterschieden. Bei STIFT = 1 wird die Linie gezeichnet und bei Stift = 0 lediglich die sonst durch Z E I C H N E N veränderte Stackbelegung korrigiert. Am Ende müssen die neuen Koordinaten den Positionsvariablen X_POS und Y _ P O S zugewiesen werden. Das Wort VERBINDEN kann danach sofort hingeschrieben werden und dokumentiert sich selbst. Im 4. Screen sind einfache Beispiele für die Konstruktion weiterer Plotterbefehle aufgeführt. Unser Bildschirmplotter hat jetzt denselben Befehlsumfang und gleiche Schnittstellen wie der Plotter in/1/. Das Vorgehen kann als Beispiel für die Anpassung eines konkreten Gerätes an eine vereinheitlichte Schnittstelle angesehen werden. Alle darauf aufbauenden Worte werden auf allen Geräten in gleicher Weise ablaufen. Das Programm stellt in dieser Form eine einfache Grundstufe für das Zeichnen von geradlinigen Figuren dar. Ausbaustufen zum Zeichnen von Ellipsen, Kreisen und komplizierteren Figuren sind möglich. Dazu vergleiche man auch 121 und 131.

13 14

20VER >R ROT SWAP SWAP B> - FLAG_SETZEN ROT DROP ;

Datei A:PL0TS.CF2 ( GRUNDBEFEHLE ) 0 1

x2 y2 ) PLOT

Block 3

STIFT STIFT

ANFAHREN ( x y — ) X_POS 9 Y_P0S • 2SWAP STIFT 9 IF ZEICHNEN ELSE 2SWAP 2DR0P ENDIF YJ O S ! X_P0S ! ; VERBINDEN ( xl yl x2 y2 -- ) HEBEN ANFAHREN SENKEN ANFAHREN Datei A:PL0TS.CF2 Block 4 0 ( PLOTTER-ANNENDUNG ) 1 2 : NULLPUNKT X_MIN Y_MIN ; 3 4 : ACHSEN ( -- ) 5 HEBEN X_MAX Y_MIN ANFAHREN 6 SENKEN NULLPUNKT ANFAHREN 7 X_MIN Y_MAX ANFAHREN ; Mikroprozessortechnik, Berlin 4 (1990) 3

Borse Numerikpaket für comFORTH

2

Die durch den Standard Forth-83 vorgeschriebene Integerarithmetik erschwert oft die Lösung komplexerer Probleme aus dem wissenschaftlichtechnischen Bereich. Für das System comFORTH 2 wurde für diesen Anwenderkreis ein gescrtwindigkeitsoptimiertes Numerikpaket mit folgenden Komponenten entwickelt: - Fließpunktarithmetik für die Prozessoren Z 8 0 , 8 0 8 6 und 8087 in verschiedenen Genauigkeiten (4- und 10-Byte-Format) mit einem separaten Stapel gemäß dem Arbeitsdokument des ANSI-Standard-Teams; der konfigurierbare Wortschatz umfaßt Stapel- und Speicherbefehle, Grundrechenarten, Vergleichsbefehle, transzendente und Winkelfunktionen. - Konvertierungsmodul zur Wandlung von Fließpunktzahlen in Zeichenketten (Ausgabeformate FIX, FLT, SCI und ENG) - Erweiterung des Systemdebuggers - Vektorund Matrixmodul mit mächtigen Befehlen zur arithmetischen Verknüpfung von Vektoren und Matrizen - Modul für Komplexe Arithmetik auf der Grundlage der Fließpunktarithmetik. Bitte fordern Sie weiteres Informationsmaterial an. Wilhelm-Pieck-Universität Rostock, Sektion Technische Elektronik, WB Automatische Steuerungen, Albert-Einstein-Straße 2, Rostock, 2500; Tel. 40 52 02

Dr. Ptüller

DUESE-Erweiterungen Das in Heft 3/89, Seite 91, vorgestellte Softwarepaket DUESE wurde um zwei Programme für den E C 1 8 3 4 erweitert, die jeweils einen Primäradapter ASK (ASC) mit den Schnittstellen V.24/IFSS unterstützen. Das Programm für die V.24-Schnittstelie wurde erfolgreich auf einem PC 1640 erprobt. In Vorbereitung sind außerdem noch Programme für den PC 1715 und für eine V.24-Schnittstelle des K 8915 (ASV). Alle Bestandteile des Programmpaketes DUESE ermöglichen neben dem Dialogbetrieb die Angabe von Parametern in der Kommandozeile, was automatischen Betrieb möglich macht. Ostthüringer Molkereikombinat, Industriestraße 1, Gera, 6500; Tel. 51288 (Koli. Schumann) Felgner

Kopplung

PC-K1520

Die zu Steuerungszwecken entwikkelte Software gestattet die Kopplung eines Rechners auf K 1520-Basis (Slave) und eines beliebigen Bedienrechners (Master) über IFSS- oder V.24-Interface, wobei die Parallelarbeit beider Rechner unterstützt wird. So können Kommandos mit ggf. benötigten Parametern aktiviert werden. Jeder Datentransfer wird, um eine hohe Funktionssicherheit zu garantieren, auf seine Richtigkeit überprüft. Die slaveseitige KopplungssoftMikroprozessortechnik, Berlin 4 (1990) 3

ware besteht aus einem residenten Minimalmonitor (0,5 KByte) mit universellem Charakter. Er ermöglicht folgende Funktionen, die sich zur Lösung von Steuerungsaufgaben als ausreichend erwiesen haben: Speicher lesen und schreiben, Port lesen * und schreiben, Start Anwenderprogramm. Ein „Anwenderprogramm" kann jedes im K 1520 befindliche Unterprogramm sein. Die modular aufgebaute Master-Software enthält Funktionen, mit denen im Slave operiert werden kann: Slave synchronisieren, Einzelzeichen lesen und schreiben, Speicherbereich lesen und schreiben, Port lesen und schreiben, Unterprogramm starten, Unterprogramm-Endetest, Speicherbereich auf Diskette schreiben und von Diskette lesen. Die Master-Software liegt in C sowie in Turbo-Pascal vor und wird unter CP/M-80, CP/M-86 und MS-DOS genutzt. Akademie der Wissenschaften, Zentralinstitut für Optik und Spektroskopie, Abt. 9.4, Rudower Chaussee 6, Berlin, 1199; T e l . 6 74 37 55

Feierabend

Ein- und Ausgabe von KRS 42OO-Dateien und Menügenerator Die UNIX-Kommandos KRSIN und KRSOUT lesen bzw. schreiben Dateien Im KRS 4200-Format. Dabei erfolgt eine Konvertierung zwischen dem KRS-Maschinencode (sogenannter 4/6/6-Code) und dem ByteCode. Wahlweise kann das beim KRS-Textformat übliche NEWLINE (1 EH) in LINE FEED (0AH) umgewandelt werden. Die Programme dienen vor allem zum lesenden und schreibenden Verarbeiten von KRSMagnetbanddateien auf z . B . SKR(oder auch P8000-)Anlagen unter UNIX. Beid.e Kommandos können sowohl „organisiertes Format" vom KRS, d. h. mit vorangestelltem Blockund Dateinummernzähler (üblich z. B. bei den Betriebssystemen SOET 4200, UEAS 4200) als auch freie Formate (physischer Blockinhalt gleich logischer Blockinhalt) in allen frei wählbaren Block- und Satzlängen verarbeiten. Die physische Umsetzung der Plattendateien auf ein KRSMagnetband und umgekehrt erfolgt zweckmäßigerweise mit dem UNIX Standardkommando dd (1). Optimal lassen sich diese Programme in Kommandoprozeduren, den sogenannten Shell-Scripts zusammenfassen und ergeben so für jeden konkreten Anwendungsfall die maßgeschneiderte Lösung mit geringstem Aufwand. Die Entwicklung erfolgte in der Sprache C auf einem SM 1420. Die Portierungen zu W E G A und XENIX-286 brachten keine Probleme mit sich. Die Benutzeroberfläche von UNIX zeichnet sich durch eine extrem hohe Flexibilität aus. Diese Flexibilität wird vom Softwareprofi sehr geschätzt, ist aber keine gute Oberfläche für den sogenannten Endnutzer. Für die einfachen Anwender erfreuen sich visuell orientierte, mit einfachen Benutzerdialogen ausgerüstete Benutzeroberflächen großer Beliebtheit. Um

einerseits den Programmieraufwand für solche Menüs zu minimieren und andererseits Anreiz zu bieten, modular zu projektieren, wurde MGen entwickelt. MGen erzeugt aus seiner Eingabe-(Text-)datei ein komplettes C-Programm und läßt dieses compilieren und binden. Das Eingabefile enthält mindestens den Aufbau des Menübildes für den Anwender sowie eine Liste von Aktionen, in der spezifiziert wird, welche Aktivität (Kommando, Kommandofile oder Gruppe von Kommandos) nach einer konkreten Nutzereingabe erfolgen soll. Für Verwaltungszwecke darf die Eingabedatei noch einen beliebig langen Kommentarteil enthalten. Der Menügenerator wurde auf einer SM 1420 unter dem Betriebssystem 2.9BSD-UNIX entwickelt und bereits auf das P8000-System unter W E G A übertragen. Er dürfte auf allen UNIXSystemen lauffähig sein, sofern das System über den termcap(5)- oder terminfo(5)-Mechanismus verfügt. Eine Nutzung auf Systemen ohne diesen Mechanismus (z. B. MUTOSSysteme) wird etwas problematisch sein, ist aber prinzipiell möglich, indem eine entsprechende Datei /etc/ termcap angelegt, die Umgebungsvariable T E R M gesetzt und die entsprechende Bibliothek übernommen wird. Der Generator wird zur Nachnutzung vollständig im Quellcode einschließlich kompletter Dokumentation (Beschreibung, Installation und Manual) ausgeliefert. Bergakademie Freiberg, ORZ, Abteilung Systemprogrammierung/Basissoftware, Bernhard-von-Cotta-Straße 1, Freiberg, 9200; Tel. 5128 43 oder 512042 Weber

FastSearch

Version 3.x

FastSearch ermöglicht die Erfassung der üblichen bibliographischen Daten von Zeitschriftenartikeln, Büchern, Patenten usw. und die Recherche nach den erfaßten Angaben. Die neue Version weist die Vorzüge der inzwischen verbreiteten Version 2.x auf (siehe MP 3/1989, Seite 90). Einige Details des Programms wurden wesentlich verändert oder erweitert. 1. Die Recherche ist jetzt nach unbegrenzt vielen Suchbegriffen (Autor, Schlagwort, Jahr, T i t e l w o r t . . . ) in beliebiger logischer Verknüpfung möglich. 2. Jegliche Änderungen der Datenbank werden sofort auf dem externen Datenträger (vorzugsweise eine Festplatte) sichergestellt. Damit wird eine sehr hohe Datensicherheit gegenüber ungewollten Störeinflüssen (z. B. Netzausfall) erzielt. 3. Groß- und Kleinschreibung sowie die Nutzung landesspezifischer Zeichen (vor allem der deutschen Umlaute) sind uneingeschränkt möglich. 4. Die Datenübernahme aus Volltextdatenbanken ist möglich. Zur Nutzung des Programms ist ein MS-DOS kompatibler Rechner mit möglichst 512 KByte Hauptspeicher erforderlich. Eine Festplatte ist nicht unbedingt erforderlich, wegen der sehr häufigen Zugriffe auf den externen

Datenspeicher jedoch empfehlenswert. Interessenten können kostenlos eine Demonstrationsversion einschließlich der vollständigen Programmbeschreibung erhalten. Bei Bedarf kann auf einer zweiten Diskette auch eine Demonstrationsdatenbank mit etwa 1300 Einträgen zur NMR-Spektroskopie geliefert werden. Weiterhin ist während der Leipziger Frühjahrsmesse 1990 eine persönliche Konsultation im Hochhaus der Karl-Marx-Universität möglich. Karl-Marx-Universität Leipzig, Sektion Chemie, Talstraße 35, Leipzig, 7010; Tel. 7165395/481 Dr.HaeBner

Adressenformatierung Für eine textprogrammunabhängige und universell nutzbare Formatierung von Absender- und Adressatenangaben wurde das Programmpaket ADF entwickelt. Es beinhaltet Schnittstellen zur Anfertigung von Adreßlisten für Serienbriefe und zur Verwaltung der Absender- und Adressatenangaben über REDABAS oder gleichartige Verarbeitungssoftware. Gegenwärtig werden folgende Formatierungen ermöglicht: - Mitteilungen ohne Vordruck - Schreiben auf Kopfbogen. Zeilenvorschübe können durch den Nutzer über eine Datei eingestellt werden. Die Pflege der Absenderund Adressatenangaben kann mit jedem beliebigen Editor oder Textprogramm erfolgen. Die Programme des Programmpaketes A D F können für jeden beliebigen Rechner mit einer Verarbeitungsbreite von 8 Bit aufwärts bereitgestellt werden. Gegenwärtig sind folgende Compilierungen verfügbar: - P8000-Rechner mit WEGA-Betriebssystem und Textprogramm WEGA WORD - 8-Bit-Rechner mit CP/M-kompatiblen Betriebssystemen und Wordstar-kompatiblen Textverarbeitungssystemen - 16-Bit-Rechner mit MS-DOS-kompatiblen Betriebssystemen und Wordstar-kompatiblen Textverarbeitungssystemen. Die mit ADF-Programmen vorgefertigten Mitteilungen oder Schreiben können mit dem jeweiligen Textverarbeitungssystem fertiggestellt werden. Ministerium für Land-, Forst- und Nahrungsgüterwirtschaft, Bereich Pflanzenund Tierproduktion, Bereichsverantwortlicher Rechentechnik, Köpenicker Allee 39-57, Berlin, 1157; Tel. 505 34 51 Roscher

w/mmmmmmmimiammm Wir suchen... . . . leistungsfähige Kombination von Kostenarten-, Kostenstellen- und Kostenträgerrechnung, die auf KBR A 6402 sowie kompatiblen Geräten wie SM 4 oder 5, K 1600-Baureihe oder auf rumänischen Geräten wie I 100 lauffähig ist. Angebote bitte an: VEB Plastverarbeitungswerk SchwerinSacktannen, Hauptbuchhaltung, Schwerin, 2767; Tel. 45 25 35 oder 45 22 43 Regner

93

Bericht Die 11. INTERKAMA präsentierte sich wiederum als der weltweite Innovationsmarkt Nr. 1 für das Messen und Automatisieren. Details bieten auch andere Messen. Alle Details zu einem Ganzen summiert zu haben ist das Besondere an der INTERKAMA. Vom 9. bis 14. Oktober 1989 wurde auf dem Messegelände in Düsseldorf (BRD) in 12 Messehallen mit 105 Ausstellerseminaren und durch 64 Fachvorträge (Kongreß 11.-12.10.) der Weltstand auf diesem Fachgebiet eindrucksvoll demonstriert. Aus der vielschichtigen Palette sollen hier nur das Gebiet der PC-gestützten Systeme zur Labor- und Prüffeldautomatisierung sowie spezielle CAD-Systeme etwas näher beleuchtet werden, ohne dabei einen Anspruch auf Vollständigkeit zu erheben. Generell ist einzuschätzen, daß der Weltstand auf dem Gebiet der PCNutzung gewaltig fortgeschritten ist. Sicher ist das erreichte Niveau der Eigenentwicklungen in der DDR beachtenswert und für den Industrie- und Routineeinsatz erforderlich bzw. ausreichend. Auf dem Gebiet der Grundlagen- und angewandten Forschung (AdW- und Hochschulbereich) bedeutet die Anwendung eigener, nicht dem Weltstand entsprechender Rechentechnik einen erheblichen Zeitverlust und die weitere Vergrößerung des Abstandes zum Weltniveau für zu untersuchende Methoden und Verfahren.

PC-gestützte Systeme zur Laborund Prüffeldautomatisierung Das Angebot von Einschubkarten für bzw. die Orientierung auf IBM-XT/AT und kompatible PCs sowie PS/2Rechner ist weiter angewachsen. Mit dem von verschiedenen Herstellern angebotenen Spektrum kann das gesamte Gebiet der Labor- und Prüffeldautomatisierung befriedigt werden. So bietet die Firma Ziegler-Instruments ein umfangreiches Paket für Meßwerterfassungs-Systeme an. Hervorzuheben sind Module für die Meßwerterfassung bis 10000 Messungen/s, HochgeschwindigkeitsMeßwerterfassung (Transientenrecorder bis 200 kHz, Anti-Aliasing-Filter) und Signalgenerierung (Bild 1). Bei jedem Modul ist die hardwarebezogene Software bereits im Lieferumfang und Preis enthalten. Ähnlich ist das Angebot der Firma DATALOG zu werten. Hier wird neben den erwähnten OEM-PC-Karten und einigen Low-Cost-Erfassungssystemen auch ein Datenerfassungsund Prozeß-Interface (COBRA 700) als Beistellgerät angeboten. Aus der Kombination des hochintelligenten und flexiblen Beistellsystems mit dem leistungsfähigen PC resultiert ein, hinsichtlich Leistungsfähigkeit, Anpassungsflexibilität und Anwendungsfreundlichkeit, überlegenes System. Die Aufgaben Meßwerterfassung, Prozeßkontrolle, Datenverarbeitung und Test-Applikation in Industrie, Labor und Forschung sind damit lösbar. Von der Firma disys wird besonderer Wert auf die Ausrüstung von Industrie-Prozeßrechnern (IPC, basierend auf XT/AT) gelegt. Spezieller

94

Vorzug ist die Anpassung an die industrielle Umwelt (Robustheit, Netzspannungsfilterung, Optoentkopplung, Überdruckbelüftung) (Bild 2). Dabei bleibt jedoch die volle Kompatibilität zur großen Welt der MS-DOSSoftware gewahrt. Siemens dagegen bietet bezüglich der PC-Meßtechnik vorrangig komplette Applikationslösungen (z. B. Regelgeräte-Prüfung, Netzteilprüfung, Tiefpaß-Kenngrößen-Aufnahme u. v. a.) an. Darüber hinaus werden von einer Vielzahl von Herstellern Zusatz- und Peripheriegeräte für PC-gestützte Grundsysteme angeboten. Stellvertretend für viele soll hier das Angebot von speziellen Schreibern, Plottern und Druckern der Firma LINSEIS oder IBM-kompatible Datenspeicher mit Tracker-Serie (1,2 Mbyte) von Ziegler erwähnt werden. Ebenso vielfältig wie die oben dargestellten Hardwaresysteme zeigen sich die angebotenen Softwaremo-

dule, meist als integraler Systembestandteil. Neben den MS-DOS-Betriebssystemmodulen und Benutzeroberflächen bestimmen in erster Linie Softwarepakete zur Meßdatenanalyse (Erfassung, Ausgabe, Speicherung, Auswertung und Archivierung) das Angebot. Das von Ziegler entwikkelte Paket signalys zeichnet sich z. B. durch seine weitgehende Hardware-Unabhängigkeit aus, es läuft auf insgesamt 20 verschiedenen PCs mit unterschiedlichsten Graphik-Controllern. Ein breites Feld nimmt die graphische Meßdaten-Auswertung, einschließlich der Windqw-Technik, ein (z.B. DATALOG). Eine außerordentlich leistungsfähige technisch-wissenschaftliche PCSoftware ist das Programmsystem ASYST 3.0 von KEITHLEY. ASYST paßt sich der Hardware, den Meßwerterfassungsarten und den Erfordernissen für Analyse-Operationen an. Einzelne ASYST-Kommandos leisten das, wofür man in C, Fortran

oder Basic ganze Routinen benötigt (menügeführt). ASYST kann praktisch mit jeder Geschwindigkeit Daten erfassen, die die Meßwerterfassungs-Hardware zuläßt. Ein umfangreicher Support zur Einarbeitung in das System steht zur Verfügung. CAD-Systeme Von besonderem Interesse waren die neuen Versionen des Systems CADdy von Ziegler-Instruments. Durch eine intensive, kontinuierliche Forschung und Weiterentwicklung stellt die Firma sicher, daß CADdy auf dem neuesten technischen Stand ist. Für viele Bereiche ist von besonderem Vorteil, daß das System neben den Branchen Elektronik und Konstruktion auch für Anlagenbau, Elektrotechnik, Vermessung und Architektur anwendbar ist. Die ElektronikBranche-realisiert alle für die Erstellung von Vorlagen zur Leiterplattenfertigung anfallenden Arbeiten (Schaltplan und Layout mit Stückund Verbindungsliste sowie Autorouter und Post-Processing). Die Konstruktions-Branche zeichnet sich durch die 2D-Konstruktion, die 3DVolumendarstellung und NC-Fertigungsunterlagenerstellung aus. Eine wirksame Unterstützung der innovativen Elektronik-Technologien, Hybridschaltungs-Design und SMDLayouts bietet das System BiCAD von BINDER. Funktionen wie automatisches Erfassen von Dlckschichtpastenparameter, Widerstandsentwurf, thermische Simulation oder Postprozessor für Laser-Trim-Systeme sind enthalten. Es soll nochmals betont werden, daß echte CAD-Systeme als Mindestkonfiguration über eine hochauflösende Farbgraphik verfügen. Versuche mit Hardwarekonfigurationen, die unter diesem Niveau liegen, werden kaum die erwarteten Rationalisierungseffekte erreichen. Dr. F. Müller

Mikroprozessortechnik, Berlin 4 (1990) 3

Entwicklungen und Tendenzen Anwendermodifizierbares PC-BIOS Ein beim Anwender modifizierbares BIOS (Basic Input/Output System) für Personalcomputer auf AT-, MCAoder EISA-Basis wollen Intel und die Phoenix Technologies, Ltd., gemeinsam entwickeln. Mit Hilfe von Ein-Megabit-Flashspeichern in ETOX-Technologie (EPROM Tunnel Oxide) sowie BIOS-Software und Dienstprogrammen von Phoenix können PCHersteller den BIOS-Code per Diskette modifizieren, ohne dazu das PC-Gehäuse öffnen und die BIOSChips austauschen zu müssen. Flashspeicher sind hochintegrierte, elektrisch löschbare, nichtflüchtige Halbleiterspeicher. Laut Jonathan Joseph, General Manager der PC-Division von Phoenix, bietet ein modifizierbares BIOS den System-OEMs eine Reihe von Vorteilen: „PC-Hersteller werden Kosten einsparen, indem sie ihren Kunden neue BIOS-Versionen auf Disketten liefern, anstatt dazu einen Kundendiensttechniker abzustellen. Sie können auch die Zeit bis zur Markteinführung neuer Produkte dadurch verkürzen, daß sie den endgültigen BIOSCode als letzten Fertigungsschritt kurz bevor das System ausgeliefert wird - implementieren." Und Dick Pashley, General Manager der Flash Memory Operation von Intel: „Die Kombination der Flashspeicher-Technologie mit der Möglichkeit, das BIOS zu modifizieren, verleiht den Anwendern moderner hochentwickelter PCs eine neue Dimension an Flexibilität. Anwender solcher Systeme werden in der Lage sein, ihre vorhandenen PCs an neue Peripheriegeräte, die BIOS-Unterstützung benötigen - beispielsweise Plattenlaufwerke, Monitore und Tastaturen - anzupassen, sobald diese verfügbar sind." MP

Amiga 2500/30 mit 25 M H z Von Commodore wurde vor kurzem der neue Amiga, das Modell 2500/30, angekündigt, der mit dem 32-Bit-Prozessor Motorola 68 030 arbeitet. Die Taktfrequenz dieses Prozessors beträgt 25 MHz. Bereits in der Grundausstattung verfügt der Amiga über 2 MByte Hauptspeicher, den 25 MHz schnellen Koprozessor 68 882, den Speicherverwaltungs-Chip 68 851 sowie eine 40-MByte-Festplatte mit

einem selbstbootenden SCSI-Controller. Auch der Amiga 2500/30 kann mit einer Brückenkarte ausgerüstet werden, die das Abarbeiten von MSDOS-Programmen erlaubt. Der Rechner hat einen Video-, fünf Amiga-, zwei XT- und zwei AT-Steckplätze. Damit soll sich der neue Amiga laut Commodore besonders für professionelle Video- und Musikanwendungen eignen. Für die bestehende Amiga-2000-Familie wird zur Nachrüstung eine 2630-Acceleratorkarte angeboten. MP

Siemens und gemeinsam

Nixdorf

Die Siemens AG, Berlin und München, und die Nixdorf Computer AG, Paderborn, werden auf dem Gebiet der Daten- und Informationstechnik künftig zusammenarbeiten. Es wurde vereinbart, daß die Siemens AG - vorbehaltlich der Zustimmung der hierfür zuständigen Gremien und Behörden - die Mehrheit der Stammaktien der Nixdorf Computer AG erwirbt; die Siemens AG wird ihren Bereich Daten- und Informationstechnik in die Nixdorf Computer AG einbringen. Wegen der relativ geringen Überlappungen werden bei einem Zusammengehen gute Chancen gesehen, bedeutende Synergiepotentiale zu erschließen. Das gemeinsame Unternehmen, das einen Umsatz von rund 12 Milliarden DM haben wird, soll den Namen SIEMENS-NIXDORF Informationssysteme AG führen.

technologie die Leistung der HP-Spitzenmodelle in Großrechner-Dimenslonen bringen. Kleine Abmessungen der Chips erleichtern das Kombinieren mehrerer CPUs zu symmetrischen Multiprozessor-Konfigurationen. Die Submikron-CMOS-Implementierung, also Strukturen unter 1 um, erlaubt Schaltungen extrem hoher Integrationsdichte zur Steigerung der Prozessorleistung. Dank dieser CMOS-Technologie liefert HP Großrechnerleistung mit einer EinchipCPU. Vergleichbare Modelle mit CISC-Architektur benötigen dafür 100 und mehr Chips. MP Echtzeitfür die

Workstation Simulation

Mit der MEGATEK 944 (Bild unten) stellte CIS Graphik & Bildverarbeitung auf der SYSTEMS 89 eine neue Workstationgeneration für die Echtzeit-Simulation vor. MEGATEK ist ein Unternehmen der United Telecom und wird von CIS exklusiv vertreten. Durch die Integration von speziellen Prozessoren von Weitek, Texas Instruments und Motorola in einem Standard-VME-Bus können die Echtzeitanforderungen an SD-Hochleistungsgrafik und -Simulation erfüllt werden. MP Super-VGA-Karte nach Standard Ende 1988 taten sich auf Betreiben von NEC verschiedene Monitor- und

Grafikkartenhersteller zusammen, um einen neuen Grafikstandard vorzuschlagen (s. MP 2/1989, S. 60). Ziel war die Standardisierung von Grafikauflösungen oberhalb des IBMVGA- Bereiches, also über 640 x 480 Bildpunkten. Im Oktober veröffentlichte das VESA genannte Gremium (Video Electronics Standard Association) einen Standard für solche VGAund 8514/A-kompatiblen Grafikkarten. Von Headland/Video Seven wurde nun die erste VESA-kompatible Karte vorgestellt, die VGA 1024i. Die Karte gibt es in einer 256-KByteund einer 512-KByte-Version, und sie kann bei einer Auflösung von 1024 x 768 Blldpunkten vier Farben aus 262 144 Farbtönen darstellen. Zur Softwareunterstützung werden fünf Disketten mitgeliefert. MP

Perspektiven der Informationsindustrie In Japan wurde durch das MITI eine Studie zu den Perspektiven der Informationsindustrie im Jahre 2000 herausgegeben. Danach wird die Informationsindustrie zur Leitindustrie der japanischen Wirtschaft. Bei einer jährlichen Wachstumsrate von 13 % - gegenüber einem Wachstum der Gesamtwirtschaft von 5 % - wird der Anteil der Informationsindustrie im Jahre 2000 20,7% betragen. Informationsbezogene Investitionen der Unternehmen werden von 11 % auf 33% steigen. Die Zahl der Arbeits-

Von der Nixdorf Computer AG wurde inzwischen die geplante Entlassung von 4880 Mitarbeitern bis zum 1. Juli dieses Jahres bekanntgegeben. MP Fortschritte in der Halbleitertechnologie verdoppeln die Leistung der HP-PAComputer Mit VLSI-Schaltungen in SubmikronCMOS-Technologie will Hewlett-Pakkard die Leistung der RlSC-basierenden Precision-Architecture-Computer (HP-PA) um 70 bis über 100 Prozent steigern. Die neuen ICs sind vorrangig für die Minicomputer- und Server-Familien bestimmt; ein Chipsatz für Workstations ist in Vorbereitung. Mit 12 bis 16 Mio Gleitkomma-Operationen pro Sekunde (MFLOPS) und Prozessor soll die neue HalbleiterX

Fragebogen

zur Ost-West-Kontaktbörse

(siehe folgende Seite)

Ich interessiere mich vorrangig für • • • • • • •

Hobby-Anwendungen, Computerspiele allgemeine Anwendungen (Textverarbeitung, Datenbanken etc.) kaufmännisch orientierte Programme, Branchensoftware CAD- und CAE-Software Computer-Hardware, maschinennahe Programmierung technische Rechneranwendungen; Messen, Steuern, Regeln Programmentwicklung in • Assembler • Basic • Pascal

• C •

Kl-Sprachen

Mikroprozessortechnik, Berlin 4 (1990) 3

• •

• sonstigen Sprachen theoretische Informatik Telekommunikation

Zutreffendes bitte ankreuzen (Mehrfachnennungen Meinen Kenntnisstand schätze ich etwa so ein:

sind

möglich).

1 (Ich bin Experte.) 2 3 4 5 6 (Ich bin Anfänger.) (Bitte erteilen Sie sich eine „Schulnote".) • Ich bin auch bereit, mit mehreren Interessenten ren.

zu

korrespondie-

95

platze in der Informationsindustrie soll im Jahre 2000 4,1 Mio (1984: 1,5 Mio) betragen. Zur Entwicklung der Informationsindustrie sind unterstützende Regierungsmaßnahmen auf den Gebieten des Datenschutzes und der Datensicherheit, Rahmenbedingungen für Telekommunikationsdienste sowie die Schaffung höherwertiger Informationsdienste, Maßnahmen zur Systemintegration und zur Austauschbarkeit zwischen Systemen erforderlich.

Quelle: Online. - Köln (1989) 11. S. 69 w/

Übersetzungssystem Japanisch — Deutsch Die Firma Fujitsu entwickelte gemeinsam mit dem Stuttgarter Softwarehaus Aris ein Maschinenübersetzungssystem vom Japanischen ins Deutsche. Dieses System basiert auf dem seit 1985 auf dem Markt angebotenen Grundsystem Atlas II, das mittels einer Zwischensprache die Übersetzung von mehreren bzw. in mehrere Sprachen ermöglicht. Das System ist direkt an die japanische Textdatenbank von Nikkei Telecom angeschlossen und übersetzt Texte in Echtzeit ins Deutsche. Mit der Entwicklung des Systems wurde 1986 begonnen. Es läuft auf Workstations und bietet, z. B. auf einer Sun 4/110, eine Übersetzungsgeschwindigkeit von 6000 Wörtern pro Stunde. Dabei benutzt es ein Deutsch-Wörterbuch mit 50 000 Wörtern, und es stützt sich auf 12 000 Grammatikregeln. Die Firma Fujitsu stellte für diese Entwicklung den Übersetzungsprozessor und die Komponente zur Gram-

Verbindung Ein Aufruf

matikanalyse zur Verfügung. Von der Firma Aris wurden die Forschungsund Entwicklungsarbeiten für die deutsche Spracherzeugungskomponente bereitgestellt. Bis zur Serienreife des Systems bedarf es noch anwendungsspezifischer Verbesserungen. Ein Probebetrieb mit ausgewählten Anwendern ist für Ende dieses Jahres geplant.

Quelle: Elektronik. (1989) 18. -S. 7

-

München

38 Fa

Superrechner aus Südkorea Das Forschungsinstitut Korea Advanced Institut of Science and Technology in Südkorea soll einen Superrechner entwickelt haben. Damit wäre Südkorea nach den USA, Japan und der BRD das vierte Land, in dem Superrechner entwickelt werden. Der südkoreanische Rechner soll eine Verarbeitungsgeschwindigkeit von 10Mrd. Rechenoperationen pro Sekunde und eine Speicherkapazität von 256 MByte aufweisen. Die zweijährige Forschungsarbeit wurde von der britischen Firma General Electric Co finanziell unterstützt. Man rechnet damit, daß der Superrechner im Februar 1990 vorgestellt wird.

Quelle: Eildienst. - Berlin (1989) 171. - S. 1 Wi

Lichtwellenleiter-Chip für 1 Gigabit pro Sekunde Die Entwicklung von zwei experimentellen Chips zum Senden und zum Empfang von Daten über Lichtwellen-

leiter soll der Firma IBM gelungen sein; die Übertragungsgeschwindigkeit wird mit einer Milliarde Bit in der Sekunde angegeben. Die Chips basieren auf Galliumarsenid. Der Empfänger - von der Größe eines Fingernagels - soll fünfzigmal mehr optische und elektronische Schaltungskomponenten enthalten, als bisher auf Chips für optoelektronische Empfänger bzw. Sender gepackt werden konnten. Der Chip soll mehr als 8000 Transistoren und Strukturdetails mit einer Strukturgröße von einem Mikrometer enthalten. Diese Chips werden als Vorläufer von Sende- und Empfangschips für zukünftige ultraschnelle Lichtwellenleiterverbindungen großer Datennetze angesehen.

Quelle: Blick durch vom 15.9. 1989

Strom in messen

die

Wirtschaft Fa

Leiterbahnen

Von der Firma Laplace Ltd. wurde für Leiterplatten ein Gerät zum Messen der Ströme in Leiterbahnen vorgestellt. Damit soll es möglich sein, die Messung auch ohne Auftrennen der Leitungen und bei aktivem Zustand der Schaltung durchzuführen. Auf die zu messenden Teilstücke der Leiterbahnen werden zwei Anschlußstifte gesetzt, über die das Gerät die jeweilige Stromflußrichtung zwischen zwei Punkten feststellt. Danach wird ein einstellbarer Strom in das Teilstück injiziert, der gegenläufig dem dort fließenden Strom ist. Erreichen beide ein Verhältnis von 10:1, so beginnt eine

Signalverarbeitungsschaltung im Gerät, den Spannungsabfall im Teststück zu ermitteln. Dazu läßt sich der Stromwert (ohne den injizierten Strom) errechnen und anzeigen. Der Meßbereich geht von 1 mA bis 1 A, die Genauigkeit liegt bei 5 %.

Quelle: Elektronik. (1989) 20.-S. 6

Transistor wie ein

-

München

38 Fa

funktioniert Parallelprozessor

Die Wissenschaftler der A T & T Bell Laboratories haben einen neuen, kleinen Transistor vorgestellt, der 20mal leistungsfähiger sein soll als die herkömmlichen Bausteine dieser Art. Dieser MultiState Resonant Tunneling Bipolar Transistor könne nach Angaben von AT & T als kleiner Parallelprozessor eingesetzt werden. Damit sei man dem im vergangenen Jahr von Texas Instruments vorgestellten Baustein einen Schritt voraus. Beide Transistoren nutzen Tunneleffekt-Techniken und führen zur Entwicklung von Schaltkreisen, die wesentlich schneller und preiswerter sind als herkömmliche. Außerdem benötigen sie weniger Energie. In der Halbleiterentwicklung tätige Wissenschaftler gehen davon aus, daß derartige Bausteine, an denen auch die Firmen IBM und Fujitsu arbeiten, die Basis für eine neue Generation noch kleinerer und schnellerer Computerchips sein werden.

Quelle: 1989

VDI-Nachrichten

vom 26. 7. Fa

aufnehmen

an unsere

Leser

Wer die Presse der letzten Zeit aufmerksam verfolgte, dem werden sicher nicht die zahlreichen Hinweise zur Unterstützung von deutsch-deutschen Kontakten, oft Beratungen auf kommerzieller Basis, entgangen sein. Wir halten auch solche Formen für nützlich und werden sie in unserer Zeitschrift fördern. Allerdings meinen wir, daß es in unserem Fachgebiet viele Interessierte gibt, die sich auch unentgeltlich über Klippen im Umgang mit der Computertechnik helfen wollen. Diese Form der grenzüberschreitenden Zusammenarbeit wollen wir mit einer Gemeinschaftsaktion der Redaktionen c't und MP unterstützen. Mit diesem Aufruf, der in ähnlicher Form in Heft 3/90 der c't erscheint, geben wir Ihnen die Möglichkeit, mit kontaktsuchenden Computeranwendern in der BRD Verbindung aufzunehmen. Wer also brieflich über Hard- und Software fachsimpeln, in einen direkten persönlichen Erfahrungsaustausch treten oder sich gegenseitig mit Hardund Software helfen möchte, der fülle bitte den folgenden Fragebogen aus und sende ihn im Briefumschlag bis spätestens 15. April 1990 an die Redaktion c't.

Auf der Basis Ihrer Angaben und der eingegangenen Fragebögen aus der BRD werden per Computer Korrespondenzpartner mit übereinstimmenden Interessen zusammengeführt. Vergessen Sie deshalb bitte nicht, Ihr Einverständnis mit der EDV-gestützten Verarbeitung der Fragebögen durch Unterschrift zu bekunden. Die Daten werden ausschließlich für den beschriebenen Zweck verwendet. Sollten mehrere Leser dieses Heftes Interesse an einer Partnerschaft haben, kann auch eine Kopie des Fragebogens eingesandt werden. Die c't-Redaktion hat zugesagt, jedem MP-Einsender per Brief den Namen und die Anschrift des vom Computer ermittelten BRD-Korrespondenzpartners mitzuteilen.

Viel Erfolg also beim

Ost-West-Erfahrungsaustausch! Ihre Redaktion

MP

X

Bis 15. April

1990 einsenden

Redaktion c't Kontaktbörse Helstorfer Straße D-3000 Hannover

Absender

an:

deutlich

schreiben)

Vorname/Name

7 61

Ich möchte persönlichen Kontakt zu Computeranwendern in der BRD aufnehmen. Ich bin damit einverstanden, daß meine Anschrift und die Angaben dieses Fragebogens zu diesem Zweck in einer Datenverarbeitungsanlage gespeichert und an Teilnehmer der Kontaktbörse weitergeleitet werden.

Straße/Nr.

Datum

Telefon

96

(bitte

Unterschrift

PLZ/Ort

Mikroprozessortechnik, Berlin 4 (1990) 3

platze in der Informationsindustrie soll im Jahre 2000 4,1 Mio (1984: 1,5 Mio) betragen. Zur Entwicklung der Informationsindustrie sind unterstützende Regierungsmaßnahmen auf den Gebieten des Datenschutzes und der Datensicherheit, Rahmenbedingungen für Telekommunikationsdienste sowie die Schaffung höherwertiger Informationsdienste, Maßnahmen zur Systemintegration und zur Austauschbarkeit zwischen Systemen erforderlich.

Quelle: Online. - Köln (1989) 11. S. 69 w/

Übersetzungssystem Japanisch — Deutsch Die Firma Fujitsu entwickelte gemeinsam mit dem Stuttgarter Softwarehaus Aris ein Maschinenübersetzungssystem vom Japanischen ins Deutsche. Dieses System basiert auf dem seit 1985 auf dem Markt angebotenen Grundsystem Atlas II, das mittels einer Zwischensprache die Übersetzung von mehreren bzw. in mehrere Sprachen ermöglicht. Das System ist direkt an die japanische Textdatenbank von Nikkei Telecom angeschlossen und übersetzt Texte in Echtzeit ins Deutsche. Mit der Entwicklung des Systems wurde 1986 begonnen. Es läuft auf Workstations und bietet, z. B. auf einer Sun 4/110, eine Übersetzungsgeschwindigkeit von 6000 Wörtern pro Stunde. Dabei benutzt es ein Deutsch-Wörterbuch mit 50 000 Wörtern, und es stützt sich auf 12 000 Grammatikregeln. Die Firma Fujitsu stellte für diese Entwicklung den Übersetzungsprozessor und die Komponente zur Gram-

Verbindung Ein Aufruf

matikanalyse zur Verfügung. Von der Firma Aris wurden die Forschungsund Entwicklungsarbeiten für die deutsche Spracherzeugungskomponente bereitgestellt. Bis zur Serienreife des Systems bedarf es noch anwendungsspezifischer Verbesserungen. Ein Probebetrieb mit ausgewählten Anwendern ist für Ende dieses Jahres geplant.

Quelle: Elektronik. (1989) 18. -S. 7

-

München

38 Fa

Superrechner aus Südkorea Das Forschungsinstitut Korea Advanced Institut of Science and Technology in Südkorea soll einen Superrechner entwickelt haben. Damit wäre Südkorea nach den USA, Japan und der BRD das vierte Land, in dem Superrechner entwickelt werden. Der südkoreanische Rechner soll eine Verarbeitungsgeschwindigkeit von 10Mrd. Rechenoperationen pro Sekunde und eine Speicherkapazität von 256 MByte aufweisen. Die zweijährige Forschungsarbeit wurde von der britischen Firma General Electric Co finanziell unterstützt. Man rechnet damit, daß der Superrechner im Februar 1990 vorgestellt wird.

Quelle: Eildienst. - Berlin (1989) 171. - S. 1 Wi

Lichtwellenleiter-Chip für 1 Gigabit pro Sekunde Die Entwicklung von zwei experimentellen Chips zum Senden und zum Empfang von Daten über Lichtwellen-

leiter soll der Firma IBM gelungen sein; die Übertragungsgeschwindigkeit wird mit einer Milliarde Bit in der Sekunde angegeben. Die Chips basieren auf Galliumarsenid. Der Empfänger - von der Größe eines Fingernagels - soll fünfzigmal mehr optische und elektronische Schaltungskomponenten enthalten, als bisher auf Chips für optoelektronische Empfänger bzw. Sender gepackt werden konnten. Der Chip soll mehr als 8000 Transistoren und Strukturdetails mit einer Strukturgröße von einem Mikrometer enthalten. Diese Chips werden als Vorläufer von Sende- und Empfangschips für zukünftige ultraschnelle Lichtwellenleiterverbindungen großer Datennetze angesehen.

Quelle: Blick durch vom 15.9. 1989

Strom in messen

die

Wirtschaft Fa

Leiterbahnen

Von der Firma Laplace Ltd. wurde für Leiterplatten ein Gerät zum Messen der Ströme in Leiterbahnen vorgestellt. Damit soll es möglich sein, die Messung auch ohne Auftrennen der Leitungen und bei aktivem Zustand der Schaltung durchzuführen. Auf die zu messenden Teilstücke der Leiterbahnen werden zwei Anschlußstifte gesetzt, über die das Gerät die jeweilige Stromflußrichtung zwischen zwei Punkten feststellt. Danach wird ein einstellbarer Strom in das Teilstück injiziert, der gegenläufig dem dort fließenden Strom ist. Erreichen beide ein Verhältnis von 10:1, so beginnt eine

Signalverarbeitungsschaltung im Gerät, den Spannungsabfall im Teststück zu ermitteln. Dazu läßt sich der Stromwert (ohne den injizierten Strom) errechnen und anzeigen. Der Meßbereich geht von 1 mA bis 1 A, die Genauigkeit liegt bei 5 %.

Quelle: Elektronik. (1989) 20.-S. 6

Transistor wie ein

-

München

38 Fa

funktioniert Parallelprozessor

Die Wissenschaftler der A T & T Bell Laboratories haben einen neuen, kleinen Transistor vorgestellt, der 20mal leistungsfähiger sein soll als die herkömmlichen Bausteine dieser Art. Dieser MultiState Resonant Tunneling Bipolar Transistor könne nach Angaben von AT & T als kleiner Parallelprozessor eingesetzt werden. Damit sei man dem im vergangenen Jahr von Texas Instruments vorgestellten Baustein einen Schritt voraus. Beide Transistoren nutzen Tunneleffekt-Techniken und führen zur Entwicklung von Schaltkreisen, die wesentlich schneller und preiswerter sind als herkömmliche. Außerdem benötigen sie weniger Energie. In der Halbleiterentwicklung tätige Wissenschaftler gehen davon aus, daß derartige Bausteine, an denen auch die Firmen IBM und Fujitsu arbeiten, die Basis für eine neue Generation noch kleinerer und schnellerer Computerchips sein werden.

Quelle: 1989

VDI-Nachrichten

vom 26. 7. Fa

aufnehmen

an unsere

Leser

Wer die Presse der letzten Zeit aufmerksam verfolgte, dem werden sicher nicht die zahlreichen Hinweise zur Unterstützung von deutsch-deutschen Kontakten, oft Beratungen auf kommerzieller Basis, entgangen sein. Wir halten auch solche Formen für nützlich und werden sie in unserer Zeitschrift fördern. Allerdings meinen wir, daß es in unserem Fachgebiet viele Interessierte gibt, die sich auch unentgeltlich über Klippen im Umgang mit der Computertechnik helfen wollen. Diese Form der grenzüberschreitenden Zusammenarbeit wollen wir mit einer Gemeinschaftsaktion der Redaktionen c't und MP unterstützen. Mit diesem Aufruf, der in ähnlicher Form in Heft 3/90 der c't erscheint, geben wir Ihnen die Möglichkeit, mit kontaktsuchenden Computeranwendern in der BRD Verbindung aufzunehmen. Wer also brieflich über Hard- und Software fachsimpeln, in einen direkten persönlichen Erfahrungsaustausch treten oder sich gegenseitig mit Hardund Software helfen möchte, der fülle bitte den folgenden Fragebogen aus und sende ihn im Briefumschlag bis spätestens 15. April 1990 an die Redaktion c't.

Auf der Basis Ihrer Angaben und der eingegangenen Fragebögen aus der BRD werden per Computer Korrespondenzpartner mit übereinstimmenden Interessen zusammengeführt. Vergessen Sie deshalb bitte nicht, Ihr Einverständnis mit der EDV-gestützten Verarbeitung der Fragebögen durch Unterschrift zu bekunden. Die Daten werden ausschließlich für den beschriebenen Zweck verwendet. Sollten mehrere Leser dieses Heftes Interesse an einer Partnerschaft haben, kann auch eine Kopie des Fragebogens eingesandt werden. Die c't-Redaktion hat zugesagt, jedem MP-Einsender per Brief den Namen und die Anschrift des vom Computer ermittelten BRD-Korrespondenzpartners mitzuteilen.

Viel Erfolg also beim

Ost-West-Erfahrungsaustausch! Ihre Redaktion

MP

X

Bis 15. April

1990 einsenden

Redaktion c't Kontaktbörse Helstorfer Straße D-3000 Hannover

Absender

an:

deutlich

schreiben)

Vorname/Name

7 61

Ich möchte persönlichen Kontakt zu Computeranwendern in der BRD aufnehmen. Ich bin damit einverstanden, daß meine Anschrift und die Angaben dieses Fragebogens zu diesem Zweck in einer Datenverarbeitungsanlage gespeichert und an Teilnehmer der Kontaktbörse weitergeleitet werden.

Straße/Nr.

Datum

Telefon

96

(bitte

Unterschrift

PLZ/Ort

Mikroprozessortechnik, Berlin 4 (1990) 3

LOCATE [ < g b > ] FOR | WHILE Positionieren des Datensatzzeigers auf denersten Datensatz des Datenbankfiies, der die Bedingung erfüllt. LOOP Bewirkt innerhalb einer DO-WHiLE-Anweisung die Übergabe der Programmsteuerung an den Anfang dieser DO-WHILE-Anweisung. MENUE TO Abschließende Eingabeanweisung für private Menüs, die zuvor durch @ ... P R O M P T aufgebaut wurden, NOTE | * Kommentarzeile mit Makroersetzung. PACK Physisches Löschen aller als gestrichen markierten Datensätze. PARAMETERS Spezifizieren der Parameter einer Prozedur, einer Funktion oder eines Kommandofiles. PRIVATE Beschränken der Verfügbarkeit von Speichervariablen oder Feldern. PROCEDURE [PARAMETERS ]

[RETURN] Definition einer Prozedur. PROMPT S i e h e @ ... PROMPT, PUBLIC Speichervariable, einschließlich Felder, werden global sichtbar. QUIT | CANCEL Abbruch der Programmausführung, Schließen aller eröffneten Files und Rückkehr zum rufenden Programm. READ [SAVE] Aktivieren des GET-Teils aller seit dem letzten R E A D bzw. dem Programmstart abgearbeiteten @ ... GET-Kommandos und Setzen des Kursors auf den Eingabebereich des ersten GET-Kommandos. RECALL [ < g b > ] [FOR | WHILE ] Streichen der Löschmarkierung von Datensätzen. REINDEX Aktualisieren aller aktiven Indexfiles. RELEASE RELEASE ALL [LIKE | EXCEPT ] Streichen von Speichervariablen. RENAME | () TO | () Umbenennen eines Files. REPLACE I < g b > ] WITH < a u s d r _ 1 > {, WITH ...} [FOR | WHILE ] Ersetzen von Feldinhalten. REPORT FROM | ( ) [ < g b > ] [FOR | WHILE ] [PLAIN] [NOEJECT] [SUMMARY] [HEADING] ] [TO PRINT] [TO FILE | ()] Ausgabe eines Berichts. RESTORE FROM | () [ADDITIVE] Laden von Speichervariablen aus einer Datei (.mem). RESTORE SCREEN [FROM ] Wiederaufbau eines Bildschirminhalts aus einer zuvor mit S A V E S C R E E N geretteten Speichervariablen. RETURN [] Rückgabe der Programmsteuerung an das aufrufende Kommandofile (Prozedur). Bei Funktionen Rückgabe des berechneten Wertes. RUN | ! < D O S _ k o m m a n d o > | () Aufrufeines DOS-Kommandos, oder Start eines weiteren Programms. SAVE SCREEN [TO ] Speichern des Biidschirminhalts. SAVE TO | () [ALL [LIKE | EXCEPT ]] Speichern aller ausgewählten Speichervariablen in ein File (.mem). SAY Siehe @ ... S A Y SEEK < a u s d r > Positionieren des Datensatzzeigers auf den ersten Datensatz, dessen Index gleich dem Wert des Ausdrucks ist. SELECT | < a l i a s > | () Auswahl eines Arbeitsbereichs. SET ALTERNATE TO [ | ()] Definition eines Alternate-Files. SET ALTERNATE ON | OFF () An- und Abschalten der Ausgabe in das Alternate-File. SET BELL ON | OFF | ( < L a u s d r > ) An- und Abschalten eines Signals, welches bei der Eingabe des letzten Zeichens eines Feldes ertönt. SET CENTURY ON | OFF | ( < L a u s d r > ) Anzeige des Jahrhunderts, bei Datumsangaben, SET COLOR | COLOUR TO (, [], [ < rahmen > , [] [,]]] SET COLOR | COLOUR TO [) Auswahl der Anzeigearten und Farben auf dem Bildschirm. Anmerkung: Beim Einsatz von alphanumerischen Bildschirmen sind folgende Einstellungen möglich: weiß (w), schwarz (n), unterstrichen (u), unsichtbar (x), intensiv (i), blinkend (*), grafikfähige Bildschirme können darüber hinaus folgende Farben bzw. Graustufen darstellen: blau (b), braun (gr), cyan (bg), gelb (gr+), grau (n+) und grün (g). SET CONFIRM ON | OFF | () Kursorsprung zum nächsten Eingabefeld. SET CONSOLE ON | OFF | () Ausgabe auf dem Bildschirm. SET CURSOR O N j OFF | () Bildschirmkursor ein-/ausschalten, SET DATE AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITALIAN Festlegen der Datumsform. SET DECIMALS TO < n _ a u s d r > Anzahl der Dezimalstellen für zu rundende Werte. SET DEFAULT TO [:] | () Standardgerät und Verzeichnis für den Zugriff auf Datenfiles. SET DELETED ON | OFF | ( Bearbeiten der als gelöscht markierten Datensätze, SET DELIMITERS TO [ | DEFAULT] Definieren einer Zeichenkette, die als Begrenzer für Eingabebereiche benutzt wird (Standard ":"). SET DELIMITERS ON | OFF | () O N schaltet die Anzeige der durch S E T DELIMITER T O definierten Zeichenkette auf dem Bildschirm ein. SET DEVICE TO SCREEN | PRINT Die Ausgaben der (©-Kommandos werden auf dem Bildschirm oder dem Drucker ausgegeben. SET ESCAPE ON | OFF | () Das Drücken der Esc-Taste bricht die Eingabe über R E A D ab (ON).

SET EXACT ON | OFF Gilt ON, so liefert der Vergleich unterschiedlich langer Zeichenketten immer falsch (.F.). SET EXCLUSIVE ON | OFF | ( < L a u s d r > ) Exclusiver Dateizugriff. SET FILTER TO [] Definition einer globalen Filterbedingung, SET FIXED ON | OFF | ( < L a u s d r > ) Erzwingen der Ausgabe mit Dezimalstellen (ON). SET FORMAT TO [ | ] Ein Formatfile (.fmt), ein Kommandofile (.prg) oder eine Prozedur wird für die Eingabe im Direktmodus aktiviert, so daß sie bei jedem R E A D abgearbeitet wird. SET FUNCTION < n _ a u s d r > TO < c _ a u s d r > Definition der Funktionstaste . SET INDEX TO [ | ()] Eröffnen der aufgeführten Indexfiles. SET INTENSITY O N | OFF | ( < L a u s d r > ) Eingabebereiche bei der Eingabe durch R E A D zwischen direkter und Standardfarbe umschalten (SET C O L O R ) . SET KEY < n _ a u s d r > TO [] Verbinden einer Taste mit einer Prozedur. SET MARGIN TO < n _ a u s d r > Einstellen des linken Randes auf dem Drucker. SET MESSAGE TO [[CENTER | CENTRE ]] Positionierung der Texte bei @ . . , PROMPT SET ORDER TO < n _ a u s d r > Das Indexfile mit der Ordnungszahl n_ausdr in der aktuellen Indexfileliste wird zum Hauptindex (0 .,. 15). SET PATH TO [| ()] Definition eines Suchpfades. SET PRINT ON | OFF | ( < L a u s d r > ) Ausgabe auf den Drucker (außer © - A u s g a ben). SET PRINTER TO [ | | | ()] Auswahl eines Zielgerätes für die Druckerausgabe, SET PROCEDURE TO [] Eröffnen eines Prozedurfiles. SET RELATION [ADDITIVE] TO [ | INTO | ( ) {, TO | INTO | ()...}] Logische Verbindung eines Datenbankfiles mit anderen Datenbankfiles über Indexschlüssel oder Satznummer. SET SCOREBOARD ON | OFF | () Anzeige (ON) der Mitteilungen von R E A D und M E M O E D I T in Zeile 0. SET SOFTSEEK ON | O F F | () Positionierung des Datensatzzeigers bei erfolglosem S E E K auf den Satz, der dem Schlüssel folgt (ON). SET TYPEAHEAD TO < n _ a u s d r > Größe des Tastaturpuffers festlegen. SET UNIQUE ON | OFF | () Der erste (ON) oder alle Datensätze mit gleichem Schlüssel werden beim Indizieren in die Indexfiles aufgenommen. SET WRAP ON | OFF | ( < L a u s d r > ) O N bewirkt in @ ... PROMPT-Menüs eine zyklische Bewegung des Kursors. SKIP [] [ALIAS ] Im Arbeitsbereich < a l i a s > wird der Datensatzzeiger relativ zur Ausgangsposition und entsprechend der logischen Ordnung des Files bewegt. SORT TO | () ON ] [/A | /D | /C] {,] [/A | /D | /C]...} [ < g b > ] [FOR | WHILE ] Das aktive Datenbankfiie wird nach den angegebenen Feldern und der angegebenen Reihenfolge sortiert. STORE < a u s d r > TO = < a u s d r > Speichern des Wertes des Ausdrucks in alle angegebenen Speichervariablen. SUM [ < g b > ] TO [FOR | WHILE ] Berechnen der Summen der in der Ausdrucksliste angegebenen Werte für alle ausgewählten Datensätze. TEXT [ TO PRINT j TO FILE | ()]

ENDTEXT Ausgabe eines Textes ohne Makroersetzung. TO Siehe @ ... TO. TOTAL ON < s c h l ü s s e l > TO | () [ < g b > ] [FIELDS ] [FOR | WHILE ] Komprimieren eines Datenbankfiles, wobei alle Sätze mit gleichem Schlüssel zu einem Satz zusammengefaßt werden. Die in der Feldliste aufgeführten numerischen Felder werden addiert. TYPE | ( ) [TO PRINT] | [TO FILE | (] Ausgabe eines Textfiles. UNLOCK [ALL] Zugriffsschutzfür Files und Sätze aufheben. UPDATE [RANDOM ] ON < s c h l ü s s e l > FROM < a l i a s > | () REPLACE WITH < a u s d r _ 1 > {, WITH ...} Korrektur eines Datenbankfiles, wobei die Korrekturdaten von einem anderen File eingelesen werden können. USE [ | ()] [INDEX ] [ALIAS ] [EXCLUSIVE] Das Datenbankfile wird mit den in der aufgeführten Indexdateien in Benutzung genommen. WAIT [] [TO ] Die Abarbeitung des Programms wird unterbrochen, bis eine Taste gedrückt wird. Deren Zeichenkode wird der Speichervariablen zugewiesen. ZAP

Löschen aller Datensätze des aktiven Datenbankfiles. Die Clipper-Funktionen folgen im Heft4/1990.

zusammengestellt von Dr. Wilfried Grafik