PROGRAM LFConverter(Input,Output,InFile,OutFile);
{Written by Jason J Schwarz in Turbo Pascal v6.0.
Purpose : This program reads files with no linefeeds and
           inserts linefeeds after each return.}

USES CRT;

VAR
   InFile, OutFile : TEXT;
   InName, OutName : STRING[63];

PROCEDURE ShutDown;
BEGIN
     {$I-}
     CLOSE(InFile);
     CLOSE(OutFile);
     {$I+}
END;{ShutDown}

PROCEDURE Files;
BEGIN
     CLRSCR;
     GOTOXY(21,1);
     WRITELN(Output,'Line Feed Inserter by Jason John Schwarz');
     WRITELN(Output);
     {$I-}
     REPEAT
           WRITELN(Output,'What is the name of the source file (200 characters max.)');
           WRITELN(Output,'to add the linefeeds to?');
           READLN(Input,InName);
     UNTIL IOResult=0;
     REPEAT
           WRITELN(Output);
           REPEAT
                 WRITELN(Output,'What is the name of the destination file (200 characters max.)?');
                 READLN(Input,OutName);
           UNTIL IOResult=0;
           WRITELN(Output);
           IF InName=OutName THEN WRITELN(Output,'Source and Destination cannot be the same!');
     UNTIL InName<>OutName;
     ASSIGN(InFile,InName);
     ASSIGN(OutFile,OutName);
END;{Files}

PROCEDURE Setup;
BEGIN
     {$I-}
     RESET(InFile);
     {$I+}
     IF IOResult<>0 THEN BEGIN
        WRITELN(Output,'Error Opening Source File');
        ShutDown;
        HALT(1);
     END;{IOResult<>0}
     {$I-}
     REWRITE(OutFile);
     {$I+}
     IF IOResult<>0 THEN BEGIN
        WRITELN(Output,'Error Creating Destination File');
        ShutDown;
        HALT(2);
     END;{IOResult<>0}
END;{Setup}

PROCEDURE Convert;
VAR
   Data : CHAR;
BEGIN
     WRITELN(Output,'Working...');
     WHILE NOT EOF(InFile) DO BEGIN
           READ(InFile,Data);
           IF Data=CHR(13) THEN WRITELN(OutFile)
           ELSE WRITE(OutFile,Data);
     END;{NOT EOF(InFile)}
     WRITELN(Output,'Conversion finished!');
END;{Convert}

BEGIN
     Files;
     Setup;
     Convert;
     ShutDown;
END.
