home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / USCX / TPCOMPLT.ZIP / CASE.PAS < prev    next >
Pascal/Delphi Source File  |  1986-05-06  |  4KB  |  113 lines

  1. {--------------------------------------------------------------}
  2. {                            Case                              }
  3. {                                                              }
  4. { An upper/lower case conversion filter program for text files }
  5. {                                                              }
  6. {                             by Jeff Duntemann                }
  7. {                             Turbo Pascal V3.0                }
  8. {                             Last update 1/31/86              }
  9. {                                                              }
  10. {    From the book, COMPLETE TURBO PASCAL, by Jeff Duntemann   }
  11. {    Scott, Foresman & Co. (c) 1986,1987  ISBN 0-673-18600-8   }
  12. {--------------------------------------------------------------}
  13.  
  14.  
  15. PROGRAM Caser;           { "CASE" is a reserved word... }
  16.  
  17. CONST
  18.   Upper = True;
  19.   Lower = False;
  20.  
  21. TYPE
  22.   String40   = String[40];
  23.   String80   = String[80];
  24.   String255  = String[255];
  25.  
  26. VAR
  27.   I,J,K     : Integer;
  28.   Quit      : Boolean;
  29.   Ch        : Char;
  30.   WorkFile  : Text;
  31.   TempFile  : Text;
  32.   NewCase   : Boolean;
  33.   WorkLine  : String80;
  34.   WorkName  : String80;
  35.   TempName  : String80;
  36.   CaseTag   : String80;
  37.  
  38.  
  39. {$I FRCECASE.SRC }     { Contains ForceCase }
  40.  
  41.  
  42. {>>>>MakeTemp<<<<}
  43.  
  44. PROCEDURE MakeTemp(FileName : String80; VAR TempName : String80);
  45.  
  46. VAR
  47.   Point : Integer;
  48.  
  49. BEGIN
  50.   Point := Pos('.',FileName);
  51.   IF Point > 0 THEN Delete(FileName,Point,(Length(FileName)-Point)+1);
  52.   TempName := Concat(FileName,'.$$$')
  53. END;
  54.  
  55.  
  56. { CASER MAIN }
  57.  
  58. BEGIN
  59.   Quit := False;
  60.   IF ParamCount < 2 THEN    { Missing parms error }
  61.     BEGIN
  62.       Writeln('<<Error!>> CASE requires two command line parameters:');
  63.       Writeln('           CASE UP B:FOOFILE.TXT or');
  64.       Writeln('           CASE DOWN B:FOOFILE.TXT');
  65.       Writeln('           Invoke CASE again with the proper parameters.')
  66.     END
  67.   ELSE
  68.     BEGIN
  69.       WorkName := ParamStr(2);
  70.       Assign(WorkFile,WorkName);  { Attempt to open the file }
  71.       {$I-} Reset(WorkFile); {$I+}
  72.       IF IOResult <>0 THEN
  73.         BEGIN
  74.           Writeln('<<Error!>> File ',WorkName,' does not exist.');
  75.           Writeln('           Invoke CASE again with an existing FileName.');
  76.           END
  77.       ELSE
  78.         BEGIN                 { See if UP/DOWN parm was entered }
  79.           CaseTag := ParamStr(1);
  80.           CaseTag := ForceCase(Upper,CaseTag);
  81.           IF CaseTag = 'UP' THEN NewCase := Upper ELSE
  82.             IF CaseTag = 'DOWN' THEN NewCase := Lower ELSE
  83.               Quit := True;
  84.           IF Quit THEN
  85.             BEGIN
  86.               Writeln
  87.               ('<<Error!>> The case parameter must be "UP" or "DOWN."');
  88.               Writeln
  89.               ('           Invoke CASE again using either "UP" or "DOWN".');
  90.             END
  91.           ELSE
  92.             BEGIN
  93.               Write('Forcing case ');
  94.               IF NewCase THEN Write('up ') ELSE Write('down ');
  95.               MakeTemp(WorkName,TempName);  { Generate temporary FileName }
  96.               Assign(TempFile,TempName);    { Open temporary file }
  97.               Rewrite(TempFile);
  98.               WHILE NOT EOF(WorkFile) DO
  99.                 BEGIN
  100.                   Readln(WorkFile,WorkLine);
  101.                   Write('.');               { Dot shows it's working }
  102.                   WorkLine := ForceCase(NewCase,WorkLine);
  103.                   Writeln(TempFile,WorkLine)
  104.                 END;
  105.               Close(TempFile);              { Close the temporary file }
  106.               Close(WorkFile);              { Close original source file... }
  107.               Erase(WorkFile);              { ...and delete it. }
  108.               Rename(TempFile,WorkName);    { Temporary file becomes source }
  109.             END
  110.        END
  111.     END
  112. END.
  113.