home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
EFFO
/
forum8.lzh
/
PROGRAMME
/
MODULA
/
WINDOW
/
areaio.def
< prev
next >
Wrap
Text File
|
1989-01-19
|
13KB
|
184 lines
(*
-------------------------------------------------------------------------------
@@@@@@@@@@@@@@@@@@@*) DEFINITION MODULE AreaIO; (*@@@@@@@@@@@@@@@@@@@@@@@@@
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
| Kurzbeschreibung | formatierte Zahlenein- und -ausgabe fuer Windowmodul |
| | Area |
---------------------+---------------------------------------------------------
| Programm - Version | 2.0 | Text - Version | V#027 |
---------------------+--------+-----------------+-------+----------------------
| Modulholder | WS | Urversion | WS | August 88 |
---------------------+---------------------------------------------------------
| System - Version | OS-9, Miele-Modula-2 3.5 |
---------------------+---------------------------------------------------------
| Copyright | Freigegeben fuer nichtkommerzielle Nutzung |
| | durch Teilnehmer am EFFO |
---------------------+---------------------------------------------------------
| Hardware | GEPARD 68010, 1 MByte RAM, 80Zeichen-Textkarte |
---------------------+---------------------------------------------------------
| besondere Importe | Area |
---------------------+---------------------------------------------------------
| Autoren | WS | Werner Stehling, Seilerwis 3, |
| | | CH-8606 Greifensee, Tel. 01/256 42 21 |
---------------------+---------------------------------------------------------
| U P D A T E S | |
---------------------- |
| Datum Version Autor Bemerkungen |
| -------- ------- ----- ----------- |
| 10. 8.88 1.1 WS dynamische Fensterverwaltung unter GDOS |
| 17. 8.88 1.1 WS Prozeduren zur Zahlenausgabe |
| 12.12.88 2.0 WS Umstellung auf OS-9 |
| 15.12.88 2.0 WS Aufteilung in Area und AreaIO |
| |
-------------------------------------------------------------------------------
| Modul-Beschreibung | |
---------------------- |
| Formatierte Zahlenein- und -ausgabe fuer Windowmodul area |
| |
| Die Read-Prozeduren schlagen jeweils den alten Wert der Variablen vor, der |
| dann editiert werden kann. Dabei sind folgende Editiertasten erlaubt: |
| |
| Cursor links und rechts |
| Delete und Backspace zum Loeschen |
| Insert-Taste toggelt zwischen Insert- und Overwrite-Modus |
| Home loescht das Eingabefeld |
| Undo (Ctrl-X) restauriert den Startwert |
| |
| Die Eingabe wird mit Return, ESC, Cursor hoch oder tief verlassen; dieser |
| Character wird als Funktionswert zurueckgegeben. Anschliessend erfolgt die |
| Umwandlung in die gesuchte Zahl. Falls dabei ein Fehler auftritt, landen |
| wir wieder im Editiermodus. |
| |
| Bei den Zahleneingaben werden drei Klassen unterschieden: |
| |
| Integer : die erste Stelle darf ein Vorzeichen sein |
| Cardinal, Hex, Octal, Binaer : das erste Zeichen gibt die Basis an: |
| (Ziffer) $ & % Vorzeichen nicht erlaubt |
| Real, Ohm, ... : der Rest |
| |
| Innerhalb der Klassen darf die Eingabe in einer beliebigen (Basis-) |
| Darstellung erfolgen; der Prozedurname bestimmt nur die Darstellung bei der |
| Ausgabe. Leerzeichen am Anfang und am Ende werden ignoriert. |
| |
| Bei den Real-Zahlen bedeutet Fix = Festkomma, Float = mit Exponent und |
| Real = je nachdem. Eng ist Exponent in 3er Schritten und Ohm ist die |
| beliebte abkuerzende Schreibweise der Elektroniker: der Dezimalpunkt wird |
| durch das entsprechende DIN-Zeichen der Zehnerpotenz ersetzt; dafuer |
| entfaellt dann der Exponent. Beispiel: 4K7 = 4700 Ohm ist wohl der |
| beruehmteste Widerstand. Folgende Zeichen sind zulaessig: |
| |
| Zehnerpotenz -18 -15 -12 -9 -6 -3 3 6 9 12 |
| DIN-Kuerzel a f p n u m K M G T |
| atto femto pico nano mikro milli Kilo Mega Giga Tera |
| |
| Die Prozeduren erklaeren sich durch ihre Namen. Bei Real-Zahlen wird in |
| 'digs' die Anzahl der Nachkommastellen angegeben; die anderen Zahlen werden |
| gegebenenfalls durch fuehrende Nullen auf die Feldgroesse 'digs' gebracht. |
| Ein eventueller Prefix zaehlt extra. |
| |
| Der Parameter 'space' gibt die Groesse des zur Verfuegung stehenden |
| Ausgabefeldes an. Dabei wird folgende Vereinbarung getroffen: |
| |
| space = 0 : Feldgroesse entsprechend der Laenge des Strings |
| space < 0 : Ausgabe links buendig im Feld der Groesse '-space' |
| space > 0 : Ausgabe rechts buendig, Feldgroesse = space |
| space = 1000: Ausgabe in der Mitte zentriert, Feldgroesse = Fensterbreite|
| space > 1000: Ausgabe in der Mitte zentriert, Feldgroesse = space - 1000 |
| |
| Falls die Laenge des auszugebenden Strings groesser als 'space' ist, wird |
| 'space' ignoriert und der volle String angezeigt. |
| |
| |
| W A R N U N G : |
| =============== |
| Die Prozeduren dieses Moduls und darauf aufbauender Module duerfen nicht |
| gemeinsam mit anderen I/O-Prozeduren (z.B. aus InOut) verwendet werden, da |
| ueber den Bildschirm-Inhalt und die Cursorpositionen separat Buch gefuehrt |
| wird. |
-------------------------------------------------------------------------------
*)
FROM SYSTEM IMPORT WORD, ADDRESS;
EXPORT QUALIFIED WriteStr,
WriteCard, WriteHex, WriteOct, WriteBin, WriteInt,
WriteLCard, WriteLHex, WriteLBin, WriteLInt,
WriteFix, WriteEng, WriteFloat, WriteReal, WriteOhm,
ReadStr,
ReadCard, ReadHex, ReadOct, ReadBin, ReadInt,
ReadLCard, ReadLHex, ReadLBin, ReadLInt,
ReadFix, ReadEng, ReadFloat, ReadReal, ReadOhm;
(*==========================================================================*)
(**** Prozeduren fuer die formatierte Ausgabe ****)
(*==========================================================================*)
(*--------------------------------------------------------------------------*)
PROCEDURE WriteStr (val : ARRAY OF CHAR; space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteCard (val : WORD; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteHex (val : WORD; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteOct (val : WORD; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteBin (val : WORD; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteInt (val : INTEGER; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteLCard (val : ADDRESS; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteLHex (val : ADDRESS; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteLBin (val : ADDRESS; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteLInt (val : LONGINT; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteFix (val : REAL; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteEng (val : REAL; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteFloat (val : REAL; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteReal (val : REAL; digs, space : INTEGER);
(*--------------------------------------------------------------------------*)
PROCEDURE WriteOhm (val : REAL; digs, space : INTEGER);
(*==========================================================================*)
(**** Prozeduren fuer die formatierte Eingabe ****)
(*==========================================================================*)
(*--------------------------------------------------------------------------*)
PROCEDURE ReadStr (VAR s : ARRAY OF CHAR; space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadCard (VAR val : WORD; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadHex (VAR val : WORD; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadOct (VAR val : WORD; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadBin (VAR val : WORD; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadInt (VAR val : INTEGER; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadLCard (VAR val : ADDRESS; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadLHex (VAR val : ADDRESS; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadLBin (VAR val : ADDRESS; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadLInt (VAR val : LONGINT; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadFix (VAR val : REAL; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadEng (VAR val : REAL; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadFloat (VAR val : REAL; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadReal (VAR val : REAL; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
PROCEDURE ReadOhm (VAR val : REAL; digs, space : INTEGER) : CHAR;
(*--------------------------------------------------------------------------*)
END AreaIO.