home *** CD-ROM | disk | FTP | other *** search
/ Global Amiga Experience / globalamigaexperience.iso / compressed / development / clusterdemo.dms / clusterdemo.adf / Modules.lha / modules / txt / InOut.def < prev    next >
Text File  |  1994-05-25  |  11KB  |  308 lines

  1. |##########|
  2. |#MAGIC   #|CLABLLHC
  3. |#PROJECT #|"ImportAll"
  4. |#PATHS   #|"StdProject"
  5. |#FLAGS   #|xx---x--x---x-x-----------------
  6. |#USERSW  #|--------------------------------
  7. |#USERMASK#|--------------------------------
  8. |#SWITCHES#|xx---xxxxx------
  9. |##########|
  10. |==============================================================================|
  11. | Modul      : InOut                                                           |
  12. | Autor      : Thomas Pfrengle                                                 |
  13. | Datum      : 10.10 991                                                       |
  14. | Verwendung : Ausgabe von Strings, Zeichen und Zahlen auf einen Strom         |
  15. | Änderungen : -                                                               |
  16. |==============================================================================|
  17. DEFINITION MODULE InOut;
  18. (* $ A- *)
  19. FROM Streams IMPORT Stream,Termination;
  20. FROM ASCII   IMPORT cr,lf,eof,sp,ff;
  21.  
  22. | Alle Prozeduren in diesem Modul haben einen Handle als Parameter, der
  23. | zu den Handlen aus dem Modul Streams kompaltibel ist. Man kann hier also einen
  24. | eigenen Stream übergeben, den man mit Streams geöffnet hat. Übergibt man
  25. | keinen Handle, wird der aktuelle Standartstrom aus Streams genommen, existiert
  26. | noch keiner, wird ein Standart-ConsoleWindow als Stream geöffnet.
  27.  
  28.  
  29. VAR
  30.   Return         : BOOLEAN:=TRUE; | Gibt an, ob am Programmende auf ein
  31.                                   | Return gewartet wird Sandardeinstellung.
  32.  
  33. GROUP
  34.   ParamGrp  = Return;
  35.  
  36. |
  37. |  OpenInput   : Dient dazu den Standarteingabekanal (normalerweise das
  38. |                NewCon-Window) auf ein anderes Gerät, oder eine Datei
  39. |                umzulegen, der Name des Gerätes/Files steht in name.
  40. |  OpenOutput  : Wie OpenInPut, jedoch für den Ausgabekanal.
  41. |
  42. |  CloseInput,
  43. |  CloseOutPut : Einen selbst geöffneten Ein/Ausgabekanal sollte man mit
  44. |                diesen Prozeduren am Programmende wieder schließen. Als
  45. |                Standardkanal gilt nach dem schließen, der zuletzt aktive
  46. |                Standardstrom
  47. |
  48.  
  49. PROCEDURE OpenInput(REF name : STRING);
  50.  
  51. PROCEDURE CloseInput;
  52.  
  53. PROCEDURE OpenOutput(REF name : STRING);
  54.  
  55. PROCEDURE CloseOutput;
  56.  
  57. GROUP
  58.   RedirectionGrp  = OpenInput,CloseInput,OpenOutput,CloseOutput;
  59.  
  60. |
  61. |  Style      : Aufzählungstyp mit verschiedenen Schriftformen,
  62. |               die mit SetStyle gesetzt werden können.
  63. |  normal     : Normale Schrift
  64. |  italic     : Kursive Schrift
  65. |  undelined  : Unterstrichen
  66. |  bold       : Fettdruck
  67. |  invers     : Invertierte Ausgabe
  68. |
  69. |  SetStyle   : Setzt einen der Schreibstile aus dem Aufzählungstyp Style.
  70. |
  71. |  ClearStyle : Setzt den Standartschreibstil.
  72. |
  73. |  SetColor   : Setzt Vordergrund- (foreground) und Hintergrundfarbe
  74. |               (background).
  75. |  ClearWindow: Löscht Ausgabefenster.
  76.  
  77. TYPE
  78.   Style = (normal,italic,underlined,bold,invers);
  79.  
  80.  
  81. PROCEDURE SetStyle(style : Style;handle : Stream:=NIL);
  82.  
  83. PROCEDURE ClearStyle(handle : Stream:=NIL);
  84.  
  85. PROCEDURE SetColor(foreground,background : SHORTINT;handle : Stream:=NIL);
  86.  
  87. PROCEDURE ClearWindow(handle : Stream:=NIL);
  88.  
  89.  
  90.  
  91. GROUP
  92.   StyleGrp  = SetStyle,ClearStyle,SetColor,ClearWindow;
  93.  
  94.  
  95. |
  96. |  AUFGABE     :   Gibt ein Zeichen aus.
  97. |  PARAMETER   :   c  <= Zeichen das ausgegeben werden soll
  98. |  BEMERKUNGEN :   Ist c=&10 und WriteLnBuffer ist TRUE, dann wird der Puffer|
  99. |                  ausgegeben, wenn einer vorhanden ist.
  100.  
  101. PROCEDURE Write(c : CHAR;handle : Stream:=NIL);
  102.  
  103. |
  104. |  AUFGABE     :   Gibt eine Zeichenkette aus
  105. |  PARAMETER   :   s  <= String der ausgegeben werden soll
  106. |  BEMERKUNGEN :   Ist &10 im String enthalten und WriteLnBuffer ist TRUE,
  107. |                  dann wird der Puffer ausgegeben, wenn einer vorhanden ist.|
  108. |                  WriteMString gibt einen Modula-String aus.
  109.  
  110. PROCEDURE WriteString(REF s : STRING;handle : Stream:=NIL);
  111.  
  112. PROCEDURE WriteMString(REF s : ARRAY OF CHAR;handle : Stream:=NIL);
  113.  
  114. |
  115. |  AUFGABE     :   Wie WriteString, jedoch wird vor dem String noch ein Esc
  116. |                  ausgegeben.
  117. |  PARAMETER   :   s <= String der ausgegeben werden soll
  118. |  BEMERKUNGEN :   Besonders für Esc-Sequencen zur Druckersteuerung zu ge-
  119. |                  brauchen, sonst wie bei WriteString
  120.  
  121. PROCEDURE WriteEsc(REF s : STRING;handle : Stream:=NIL);
  122.  
  123. |
  124. |  AUFGABE     : Führt einen Zeilenvorschub durch.
  125. |  PARAMETER   : Keine.
  126. |  BEMERKUNGEN : Ist WriteLnBuffer TRUE, wird der Puffer ausgegeben, sofern
  127. |                die Ausgabe gepuffert ist.
  128. |
  129. PROCEDURE WriteLn(handle : Stream:=NIL);
  130.  
  131. |
  132. |  AUFGABE     : Gibt den Puffer aus, wenn keiner existiert, entsteht ein
  133. |                Laufzeitfehler.
  134. |  PARAMETER   : Keine.
  135. |  BEMERKUNGEN : Keine.
  136.  
  137. PROCEDURE WriteBuffer(handle : Stream:=NIL);
  138.  
  139. |
  140. |  AUFGABE     : Ausgabe einer Integerzahl.
  141. |  PARAMETER   : val   <=  Zahl die Ausgegeben werden soll.
  142. |                field <=  Größe des Feldes, in dem die Zahl positioniert
  143. |                          werden soll.
  144. |  BEMERKUNGEN : Ist field = 0 wird die Zahl in einem genau passenden Feld
  145. |                positioniert. Ist field > 0 wird die Zahl rechtsbündig,
  146. |                für field < 0 linksbündig angeordnet.
  147.  
  148. PROCEDURE WriteInt(val    : LONGINT;
  149.                    field  : INTEGER:=0;
  150.                    handle : Stream:=NIL);
  151.  
  152. |
  153. |  AUFGABE     : Gibt eine Integerzahl als Hexwert aus, sonst wie WriteInt.
  154. |  PARAMETER   : val    <= Ausgabewert.
  155. |                field  <= Feldgröße.
  156. |                dollar <= Gibt an, ob ein "$" vor die Zahl gesetzt werden soll
  157. |  BEMERKUNGEN : Keine.
  158. |
  159. PROCEDURE WriteHex(val    : LONGINT;
  160.                    field  : INTEGER:=0;
  161.                    dollar : BOOLEAN:=FALSE;
  162.                    handle : Stream:=NIL);
  163.  
  164. |
  165. |  AUFGABE     : Gibt eine Integerzahl als Binärzahl aus, sonst wie WriteInt.
  166. |  PARAMETER   : val   <= Ausgabewert.
  167. |                field <= Feldgröße.
  168. |                sign  <= Gibt an, ob ein "%" vor die Zahl gesetzt werden soll
  169. |  BEMERKUNGEN : Keine.
  170. |
  171. PROCEDURE WriteBin(val    : LONGINT;
  172.                    field  : INTEGER:=0;
  173.                    sign   : BOOLEAN:=FALSE;
  174.                    handle : Stream:=NIL);
  175.  
  176. |
  177. |  AUFGABE     : Ausgabe einer Cardinalzahl.
  178. |  PARAMETER   : val   <=  Zahl die Ausgegeben werden soll.
  179. |                field <=  Größe des Feldes, in dem die Zahl positioniert
  180. |                          werden soll.
  181. |  BEMERKUNGEN : Ist field = 0 wird die Zahl in einem genau passenden Feld
  182. |                positioniert. Ist field > 0 wird die Zahl rechtsbündig,
  183. |                für field < 0 linksbündig angeordnet.
  184.  
  185. PROCEDURE WriteCard(val : LONGCARD;field: INTEGER:=0;handle : Stream:=NIL);
  186.  
  187. |
  188. |  AUFGABE     : Gibt eine Cardinalzahl als Hexwert aus, sonst wie WriteCard.
  189. |  PARAMETER   : val    <= Ausgabewert.
  190. |                field  <= Feldgröße.
  191. |                dollar <= Gibt an, ob ein "$" vor die Zahl gesetzt werden soll
  192. |  BEMERKUNGEN : Keine.
  193. |
  194. PROCEDURE WriteCardHex(val    : LONGCARD;
  195.                        field  : INTEGER:=0;
  196.                        dollar : BOOLEAN:=FALSE;
  197.                        handle : Stream:=NIL);
  198.  
  199. |
  200. |  AUFGABE     : Gibt eine Cardinalzahl als Binärzahl aus, sonst wie WriteCard.
  201. |  PARAMETER   : val   <= Ausgabewert.
  202. |                field <= Feldgröße.
  203. |                sign  <= Gibt an, ob ein "%" vor die Zahl gesetzt werden soll
  204. |  BEMERKUNGEN : Keine.
  205. |
  206. PROCEDURE WriteCardBin(val    : LONGCARD;
  207.                        field  : INTEGER:=0;
  208.                        sign   : BOOLEAN:=FALSE;
  209.                        handle : Stream:=NIL);
  210.  
  211. |
  212. |  AUFGABE     : Ausgabe einer Fließkommazahl.
  213. |  PARAMETER   : val    <=  Ausgabewert.
  214. |                field  <=  Ausgabefeld, in dem die Zahl kommabündig
  215. |                           positioniert wird.
  216. |                digits <=  Zahl der auszugebenden Nachkommastellen.
  217. |  BEMERKUNGEN : Keine.
  218.  
  219. PROCEDURE WriteReal(val     : LONGREAL;
  220.                     field,
  221.                     digits : CARDINAL;
  222.                     handle  : Stream:=NIL);
  223.  
  224. |
  225. |  AUFGABE     : Ausgabe einer Fließkommazahl in Exponetialdarstellung.
  226. |  PARAMETER   : val    <=  Ausgabewert.
  227. |                digits <=  Zahl der auszugebenden Nachkommastellen.
  228. |  BEMERKUNGEN : Zahl wird linksbündig ausgegeben.
  229.  
  230. PROCEDURE WriteExpReal(val    : LONGREAL;
  231.                        digits: CARDINAL;
  232.                        handle : Stream:=NIL);
  233.  
  234.  
  235.  
  236.  
  237. GROUP
  238.   WriteGrp   = WriteString,WriteMString,WriteEsc,WriteLn,WriteBuffer,WriteInt,
  239.                WriteHex,WriteReal,WriteExpReal,Write;
  240.  
  241.  
  242.  
  243. |
  244. |  AUFGABE     :  Liest ein Zeichen ein.
  245. |  PARAMETER   :  c  => Gelesenes Zeichen.
  246. |  BEMERKUNGEN :  Keine.
  247.  
  248. PROCEDURE Read(VAR c :CHAR;handle : Stream:=NIL);
  249.  
  250.  
  251. |
  252. |  AUFGABE     : Liest einen Boolwert ein.
  253. |  PARAMETER   : => gelesener Boolwert.
  254. |  BEMERKUNGEN : Siehe Handbuch.
  255.  
  256. PROCEDURE ReadBool(handle : Stream:=NIL;returnEqualTrue : BOOLEAN:=FALSE):BOOLEAN;
  257.  
  258. |
  259. |  AUFGABE     : Liest einen String ein.
  260. |  PARAMETER   : s  =>  eingelesener String.
  261. |  BEMERKUNGEN : Siehe Handbuch.
  262. |              : ReadMString liest einen Modula-String ein.
  263.  
  264. PROCEDURE ReadString(VAR s : STRING;terms := Termination:(sp,lf,cr,ff,eof,eof,eof,eof);handle : Stream:=NIL);
  265. PROCEDURE ReadMString(VAR s : ARRAY OF CHAR;terms:= Termination:(sp,lf,cr,ff,eof,eof,eof,eof);handle : Stream:=NIL);
  266.  
  267. |
  268. |  AUFGABE     : Die folgenden Read-Prozeduren lesen alle einen Zahlenwert
  269. |                ein.
  270. |  PARAMETER   : val  =>  gelesener Wert vom jeweiligen Typ von val.
  271. |  BEMERKUNGEN : Die Zahl wird bis zum ersten Auftreten einer Nichtziffer
  272. |                ausgwertet. Gibt man vor der Zahl ein `$` an, wird die
  273. |                darauffolgende Zahl als Hex-Zahl ausgewertet, durch ein `%`
  274. |                wird sie als Binärzahl verstanden. Dies funktioniert nicht bei
  275. |                ReadReal,ReadFFP,ReadLongReal. Drückt man als Eingabe nur auf Return,
  276. |                wird die übergebene Variable nicht verändert
  277.  
  278. PROCEDURE ReadShortInt(VAR val : SHORTINT;handle : Stream:=NIL);
  279.  
  280. PROCEDURE ReadInt(VAR val : INTEGER;handle : Stream:=NIL);
  281.  
  282. PROCEDURE ReadLongInt(VAR val : LONGINT;handle : Stream:=NIL);
  283.  
  284. PROCEDURE ReadShortCard(VAR val : SHORTCARD;handle : Stream:=NIL);
  285.  
  286. PROCEDURE ReadCard(VAR val : CARDINAL;handle : Stream:=NIL);
  287.  
  288. PROCEDURE ReadLongCard(VAR val : LONGCARD;handle : Stream:=NIL);
  289.  
  290. PROCEDURE ReadReal(VAR val : REAL;handle : Stream:=NIL);
  291.  
  292. PROCEDURE ReadFFP(VAR val : FFP;handle : Stream:=NIL);
  293.  
  294. PROCEDURE ReadLongReal(VAR val : LONGREAL;handle : Stream:=NIL);
  295.  
  296.  
  297. GROUP
  298.   ReadGrp  = Read,ReadBool,ReadString,ReadMString,ReadShortInt,ReadInt,
  299.              ReadLongInt,ReadShortCard,ReadCard,ReadLongCard,ReadReal,ReadFFP,
  300.              ReadLongReal;
  301.  
  302.   StreamGrp = Streams.ExceptionGrp,Streams.GlobalGrp;
  303.  
  304.   All      = ParamGrp,WriteGrp,StyleGrp,ReadGrp,StreamGrp,RedirectionGrp;
  305.  
  306. END InOut.
  307.  
  308.