home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / PROG / MISC / DATAREP.ZIP / READF.INC < prev    next >
Encoding:
Text File  |  1990-02-22  |  4.5 KB  |  114 lines

  1. {Reads stimulus files in from disk.  Both an input (f) and an      }
  2. {output (g) file are read, because some variants of these programs }
  3. {are heteroassociative, and may have different f and g files.      }
  4.  
  5. PROCEDURE Read_file (Read_which_files: CHAR);
  6.        VAR I, Number_of_items, Number_in_working_file: INTEGER;
  7.            OK_to_read_file, Proceed: BOOLEAN;
  8.            File_name: VARYING [10] OF CHAR;
  9.            Working_file: FILE OF Stimulus;
  10.            Working_set: ARRAY [1..Maximum_set_size] OF Stimulus;
  11.            Which_file: CHAR;
  12.  
  13.         PROCEDURE Blank_working_set;
  14.           VAR I: INTEGER;
  15.           BEGIN
  16.           FOR I:= 1 TO Maximum_set_size DO Blank_string (Working_set [I].Name);
  17.           END;
  18.  
  19.         PROCEDURE Warnings;
  20.           VAR Input_char: CHAR;
  21.           BEGIN
  22.           Input_char:= 'Y';
  23.           IF Number_present_in_set (Which_file) > 0 THEN 
  24.               BEGIN
  25.               Erase_line;
  26.               WRITE (Which_file:1,
  27.                      ' set contains records which will be erased. Proceed? ');
  28.               READLN (Input_char);
  29.               END;
  30.           IF Input_char IN ['Y','y'] THEN Proceed:=TRUE;
  31.           END;
  32.  
  33.         PROCEDURE Read_working_file;
  34.             VAR I: INTEGER;
  35.                 File_error: BOOLEAN;
  36.             BEGIN
  37.             Blank_working_set;
  38.             CASE Which_file OF
  39.                 'F','f':  BEGIN  Blank_f_set;  File_name:= 'Ffile' END;
  40.                 'G','g':  BEGIN  Blank_g_set;  File_name:= 'Gfile' END;
  41.                 'T','t':  BEGIN  Blank_t_set;  File_name:= 'Tfile' END;
  42.                 END;
  43.             OPEN  (Working_file, File_name, OLD, ERROR:= CONTINUE);
  44.             IF STATUS (Working_file) = 0 
  45.                THEN File_error:= FALSE ELSE File_error:= TRUE;
  46.             IF NOT File_error THEN
  47.                BEGIN
  48.                RESET (Working_file);
  49.                I:= 0;
  50.                WHILE NOT (EOF (Working_file) OR (I = Maximum_set_size) )  DO
  51.                  BEGIN
  52.                  I:= I+1;
  53.                  Working_set [I]:= Working_file^;
  54.                  GET (Working_file);
  55.                  END;
  56.                Number_in_working_file := I;
  57.                Bottom_line;
  58.                WRITELN ('Number of stimuli in ',Which_file:1,
  59.                      ' set was ', Number_in_working_file:2);
  60.                CLOSE (Working_file);
  61.                CASE Which_file OF
  62.                  'F','f': FOR I:= 1 TO Maximum_set_size DO 
  63.                                    F_set[I]:= Working_set [I];
  64.                  'G','g': FOR I:= 1 TO Maximum_set_size DO
  65.                                    G_set[I]:= Working_set [I];
  66.                  'T','t': FOR I:= 1 TO Maximum_set_size DO
  67.                                    T_set[I]:= Working_set [I];
  68.                   END;
  69.                END;
  70.  
  71.             {VMS specific error recovery.}
  72.  
  73.             IF File_error THEN BEGIN
  74.                               Bottom_line;
  75.                               WRITE ('Error reading ',Which_file:1,' file.');
  76.                               IF STATUS (Working_file) = 3 
  77.                                  THEN WRITELN (' FILE NOT FOUND.')
  78.                                  ELSE WRITELN;
  79.                               END;
  80.             END;
  81.  
  82.         PROCEDURE Actually_read_the_file;
  83.             BEGIN
  84.             Bottom_line;
  85.             IF OK_to_read_file THEN Warnings;  {May zap what's already there.}
  86.             IF Proceed THEN Read_working_file ELSE WRITELN ('No files read.');
  87.             END;
  88.  
  89.         BEGIN {Readfile.}
  90.         Scroll_block; 
  91.         FOR I:= 1 TO Maximum_set_size DO Blank_string (Working_set [I].Name);
  92.         IF Read_which_files IN ['A','a','F','f','G','g','T','t'] 
  93.           THEN OK_to_read_file:= TRUE ELSE OK_to_read_file:= FALSE; 
  94.         IF NOT OK_to_read_file THEN
  95.           BEGIN 
  96.           Bottom_line; 
  97.           WRITELN  ('Can only read F, G, or T Files.'); 
  98.           Proceed:= FALSE 
  99.           END;
  100.         IF Read_which_files IN ['F','f','G','g','T','t'] THEN 
  101.                             BEGIN
  102.                             Which_file:= Read_which_files;
  103.                             Actually_read_the_file;
  104.                             END;
  105.         IF Read_which_files IN ['A','a'] THEN
  106.                             BEGIN
  107.                             Which_file:= 'F'; Actually_read_the_file;
  108.                             Which_file:= 'G'; Actually_read_the_file;
  109.                             Which_file:= 'T'; Actually_read_the_file;
  110.                             END;
  111.         Restore_scrolling;
  112.         END; {Readfile.}
  113.  
  114.