(**********************************************************************

:Program.    ZahlenFILETest
:Contens.    Testprogramm für NewInOut
:Author.     Bernd Braun
:Address.    Lippestr. 11, D-3300 Braunschweig
:Phone.      0531/845498
:Copyright.  Public Domain
:Language.   Modula-2
:Translator. M2Amiga A+L V3.3d
:Imports.    NewInOut, NewFFPInOut, NewRealInOut, NewLongRealInOut
:History.    V1.0 27.Sep.1989

***********************************************************************)

MODULE ZahlenFILETest;

   FROM Arts IMPORT
      Assert;
   FROM NewInOut IMPORT
      Close, done, FILE, ModeNew, ModeOld, Open, ReadFile, ReadIntFile,
      ReadLongIntFile, ReadCardFile, ReadLongCardFile, WriteLn,
      WriteLnFile, WriteString, WriteIntFile, WriteCardFile, Write,
      WriteInt, WriteCard;
   FROM NewFFPInOut IMPORT
      ffpdone, ReadFFPFile, WriteFFPFile, WriteFFP;
   FROM NewRealInOut IMPORT
      realdone, ReadRealFile, WriteRealFile, WriteReal;
   FROM NewLongRealInOut IMPORT
      longrealdone, ReadLongRealFile, WriteLongRealFile, WriteLongReal;
   FROM SYSTEM IMPORT
      ADR, FFP;

   CONST
      FileName = "ram:test";

   VAR
      int      : INTEGER;
      card     : CARDINAL;
      longint  : LONGINT;
      longcard : LONGCARD;
      ffp      : FFP;
      real     : REAL;
      longreal : LONGREAL;
      outfile,
      infile   : FILE;
      c        : CHAR;

BEGIN
   WriteString ( "ZahlenFILETest" );
   WriteLn; WriteLn;

(********************************************************************)

   WriteString ( "1.Teil: Zahlen in Datei " );
   WriteString ( FileName );
   WriteString ( " hineinschreiben." );
   WriteLn; WriteLn;
   outfile := Open ( FileName, ModeNew );
   Assert ( done, ADR ( "Kann Ausgabedatei nicht öffnen!" ) );
   WriteString ( "Schreibe 20 INTEGER in " );
   WriteString ( FileName );
   WriteLn;
   FOR int := -9 TO 10 DO
      WriteIntFile ( outfile, int, 4 );
      WriteLnFile ( outfile );
      IF NOT done THEN
         WriteString ( "Schreibfehler!" );
         WriteLn;
      END;
   END;
   WriteString ( "Schreibe 20 CARDINAL in " );
   WriteString ( FileName );
   WriteLn;
   FOR card := 0 TO 19 DO
      WriteCardFile ( outfile, card, 4 );
      WriteLnFile ( outfile );
      IF NOT done THEN
         WriteString ( "Schreibfehler!" );
         WriteLn;
      END;
   END;
   WriteString ( "Schreibe 20 LONGINT in " );
   WriteString ( FileName );
   WriteLn;
   FOR longint := -9 TO 10 DO
      WriteIntFile ( outfile, longint, 4 );
      WriteLnFile ( outfile );
      IF NOT done THEN
         WriteString ( "Schreibfehler!" );
         WriteLn;
      END;
   END;
   WriteString ( "Schreibe 20 LONGCARD in " );
   WriteString ( FileName );
   WriteLn;
   FOR longcard := 0 TO 19 DO
      WriteCardFile ( outfile, longcard, 4 );
      WriteLnFile ( outfile );
      IF NOT done THEN
         WriteString ( "Schreibfehler!" );
         WriteLn;
      END;
   END;
   WriteString ( "Schreibe 20 FFP in " );
   WriteString ( FileName );
   WriteLn;
   ffp := -9.0;
   WHILE ffp <= 10.0 DO
      WriteFFPFile ( outfile, ffp, 14, 4 );
      WriteLnFile ( outfile );
      IF NOT ffpdone THEN
         WriteString ( "Schreibfehler!" );
         WriteLn;
      END;
      ffp := ffp + 1.0;
   END;
   WriteString ( "Schreibe 20 REAL in " );
   WriteString ( FileName );
   WriteLn;
   real := -9.0;
   WHILE real <= 10.0 DO
      WriteRealFile ( outfile, real, 14, 4 );
      WriteLnFile ( outfile );
      IF NOT realdone THEN
         WriteString ( "Schreibfehler!" );
         WriteLn;
      END;
      real := real + 1.0;
   END;
   WriteString ( "Schreibe 20 LONGREAL aus " );
   WriteString ( FileName );
   WriteLn;
   longreal := -9.0;
   WHILE longreal <= 10.0 DO
      WriteLongRealFile ( outfile, longreal, 14, 4 );
      WriteLnFile ( outfile );
      IF NOT longrealdone THEN
         WriteString ( "Schreibfehler!" );
         WriteLn;
      END;
      longreal := longreal + 1.0;
   END;
   WriteLnFile ( outfile );
   Close ( outfile );
   WriteLn;

(********************************************************************)

   WriteString ( "2. Teil: Inhalt von Datei " );
   WriteString ( FileName );
   WriteString ( " Zeichenweise ausgeben." );
   WriteLn; WriteLn;
   infile := Open ( FileName, ModeOld );
   Assert ( done, ADR ( "Kann Eingabedatei nicht öffnen!" ) );
   ReadFile ( infile, c );
   WHILE done DO
      Write ( c );
      ReadFile ( infile, c );
   END;
   Close ( infile );
   WriteLn;

(********************************************************************)

   WriteString ( "3. Teil: Zahlen aus Datei " );
   WriteString ( FileName );
   WriteString ( " mit Read...File auslesen." );
   WriteLn; WriteLn;
   infile := Open ( FileName, ModeOld );
   Assert ( done, ADR ( "Kann Eingabedatei nicht öffnen!" ) );
   WriteString ( "Lese 20 INTEGER aus " );
   WriteString ( FileName );
   WriteLn;
   FOR int := -9 TO 10 DO
      ReadIntFile ( infile, int );
      IF NOT done THEN
         WriteString ( "Lesefehler!" );
         WriteLn;
      END;
      WriteInt    ( int, 4 );
      WriteLn;
   END;
   WriteString ( "Lese 20 CARDINAL aus " );
   WriteString ( FileName );
   WriteLn;
   FOR card := 0 TO 19 DO
      ReadCardFile ( infile, card );
      IF NOT done THEN
         WriteString ( "Lesefehler!" );
         WriteLn;
      END;
      WriteCard ( card, 4 );
      WriteLn;
   END;
   WriteString ( "Lese 20 LONGINT aus " );
   WriteString ( FileName );
   WriteLn;
   FOR longint := -9 TO 10 DO
      ReadLongIntFile ( infile, longint );
      IF NOT done THEN
         WriteString ( "Lesefehler!" );
         WriteLn;
      END;
      WriteInt ( longint, 4 );
      WriteLn;
   END;
   WriteString ( "Lese 20 LONGCARD aus " );
   WriteString ( FileName );
   WriteLn;
   FOR longcard := 0 TO 19 DO
      ReadLongCardFile ( infile, longcard );
      IF NOT done THEN
         WriteString ( "Lesefehler!" );
         WriteLn;
      END;
      WriteCard ( longcard, 4 );
      WriteLn;
   END;
   WriteString ( "Lese 20 FFP aus " );
   WriteString ( FileName );
   WriteLn;
   ffp := -9.0;
   WHILE ffp <= 10.0 DO
      ReadFFPFile ( infile, ffp );
      IF NOT ffpdone THEN
         WriteString ( "Lesefehler!" );
         WriteLn;
      END;
      WriteFFP ( ffp, 14, 4 );
      WriteLn;
      ffp := ffp + 1.0;
   END;
   WriteString ( "Lese 20 REAL aus " );
   WriteString ( FileName );
   WriteLn;
   real := -9.0;
   WHILE real <= 10.0 DO
      ReadRealFile ( infile, real );
      IF NOT realdone THEN
         WriteString ( "Lesefehler!" );
         WriteLn;
      END;
      WriteReal ( real, 14, 4 );
      WriteLn;
      real := real + 1.0;
   END;
   WriteString ( "Lese 20 LONGREAL aus " );
   WriteString ( FileName );
   WriteLn;
   longreal := -9.0;
   WHILE longreal <= 10.0 DO
      ReadLongRealFile ( infile, longreal );
      IF NOT longrealdone THEN
         WriteString ( "Lesefehler!" );
         WriteLn;
      END;
      WriteLongReal ( longreal, 14, 4 );
      WriteLn;
      longreal := longreal + 1.0;
   END;
   Close ( infile );

(********************************************************************)

END ZahlenFILETest.
