[INHERIT('UTILITYOPS','SCREENHANDLERS','ARGOPS'), environment('basicfileops')]

MODULE BASICFILEOPS;

CONST

   maxfidchars = 255;
   ndatetimechars = 11;                     
   programversion = 'CVF02B';
   inifilename = 'INIT$RNOTOTEX';
   logfilename = 'RNOTOTEX.LOG';


TYPE

fidtype = VARYING[maxfidchars] of char;

datetimetype = packed array[1..ndatetimechars] of char;

                                    
VAR
   inputcontainstexcommands : [EXTERNAL] boolean;
   totallines, totalchars    : [EXTERNAL] integer;
   LOG	                       : [EXTERNAL] text;




[GLOBAL] PROCEDURE noconversion;
begin
  writeln(log,'[no conversion performed]')
end;




[GLOBAL] PROCEDURE greetuser ( var d, t : datetimetype );
begin
   date( d );
   time( t );
   clearscreen;
   ttywritestring('RNOTOTEX ');
   ttywritestring(programversion);
   ttywritestring('    RUNOFF TO TEX CONVERSION    ');
   ttywritestring( d );
   ttywritestring( t );
   ttywriteln;
   ttywriteln;
   ttywriteln
end;
    




[GLOBAL] PROCEDURE openinputfile( fid : fidtype; var f : text; var openerror : boolean );
begin
   open( file_variable := f,
         file_name := fid,
         history := readonly,
         default := 'INPUT.RNO',
         error := continue );                                     
   if status(f) <> 0 then
      openerror := true
   else                  
   begin 
      reset( f );
      openerror := false      
   end
end;
                       




[GLOBAL] PROCEDURE openoutputfile(fid : fidtype; var f : text; var openerror:boolean);
begin
     open( file_variable := f,
           file_name := fid,
           history := new,
           default := 'OUTPUT.TEX',
           error := continue );
     if status(f) <> 0 then
        openerror := true
     else
     begin
        openerror := false;
        rewrite(f)
     end;
end; 

    

[GLOBAL] PROCEDURE openinifile ( var f : text );
begin
    open( file_variable := f,
          file_name := inifilename,
          history := readonly,
          error := message );
    reset( f );                                            
    ttywriteln;
    ttywritestring('Loading INI file ...')
end;
          
    

                                                    
[GLOBAL] PROCEDURE openlogfile; { global var LOG : text used }
begin
   open( file_variable := log,
	 file_name := logfilename,
	 history := new,
	 error := continue );
   rewrite( log )
end;



[GLOBAL] PROCEDURE closelogfile; 
begin
   close( file_variable := log, error := continue )
end; 
         
[GLOBAL] PROCEDURE closeinifile( var f : text );
begin
    close( file_variable := f, error := continue );
    ttywritestring('complete.');
    ttywriteln;
end;





[GLOBAL] PROCEDURE closefiles( var infile, outfile : text );

begin
   close(file_variable := infile, error := continue);
   close(file_variable := outfile, error := continue);
   ttywritestring('complete.');
   ttywriteln;
   ttywriteln;
   ttywriteln;
   if totallines = 1 then               
      ttywritestring(' RNOTOTEX read only one line from the input file.')
   else
     if totallines = 0 then
       ttywritestring(' No end of line was found in the input file.')
     else                                                  
     begin
       ttywritestring(' RNOTOTEX processed a total of ');
       ttywriteint( totallines );
       ttywritestring(' lines.')
     end;
   ttywriteln;
   if totalchars = 1 then
      ttywritestring(' There was only one character in the file.')
   else
      if totalchars = 0 then
        ttywritestring(' No printable characters were found in the file.')
      else
      begin
         ttywritestring(' A total of ');
         ttywriteint( totalchars );
         ttywritestring(' characters were read.')                           
      end;
   ttywriteln
end;

    




[GLOBAL] PROCEDURE putcommentstooutput( var outfile : text; infid : fidtype;
	                                d, t : datetimetype );
begin
   writeln(outfile,'% document translated from DEC RUNOFF to LaTeX format');
   writeln(outfile,'% by program RNOTOTEX version ',programversion,' at ',d,blank,t);
   writeln(outfile,'% Source file :',infid);
   writeln(log,'[RNOTOTEX.LOG for ',infid,' ]');
   writeln(log,'[Processing at ',d, blank, t,' ]')
end;               


             


[GLOBAL] PROCEDURE userinterface( var inputfid, outputfid : fidtype;
	                           var rno, tex : text );

type
    packedarray = packed array[1..255] of char;

var
   openerror : boolean;
   slashtex : integer;

   procedure getcli( var ifile, ofile : [class_s] packedarray;
                     var slashtex : integer ); fortran;
begin
      getcli( inputfid.body, outputfid.body, slashtex );
      inputfid.length := 75;
      outputfid.length := 75;
      openinputfile( inputfid, rno, openerror);
      if openerror then
        warningmessage('openinputfile','Could not open that input file.');
      openoutputfile( outputfid, TEX, openerror);
      if openerror then
         warningmessage('openoutputfile','Could not open that output file.');
      inputcontainstexcommands := slashtex <> 0
end;


END.