home *** CD-ROM | disk | FTP | other *** search
- {-----------------------------}
- { CASE }
- { by Jeff Duntemann }
- { }
- { Two-way case filter program }
- { Turbo Pascal V2.0 }
- { Last Update 1/4/85 }
- {-----------------------------}
-
-
- PROGRAM CASER; { "CASE" is a reserved word... }
-
- CONST UPPER = TRUE;
- LOWER = FALSE;
-
- TYPE STRING40 = STRING[40];
- STRING80 = STRING[80];
- STRING255 = STRING[255];
- PARM_ARRAY = ARRAY[1..10] OF STRING40;
-
-
- VAR I,J,K : INTEGER;
- { Comment out "CSEG :" for CP/M-80: }
- RAM_TAIL : STRING[128] ABSOLUTE CSEG : $80;
- PARMS : PARM_ARRAY; { Holds command line paraeters }
- CH : CHAR;
- WORKFILE : TEXT;
- TEMPFILE : TEXT;
- NEW_CASE : BOOLEAN;
- WORKLINE : STRING80;
- WORKNAME : STRING80;
- TEMPNAME : STRING80;
- CASE_TAG : STRING80;
-
-
- {$I FRCECASE.SRC }
-
- {$I STRIPWHT.SRC }
-
- {$I PARSTAIL.SRC }
-
-
- {>>>>MAKETEMP<<<<}
-
- PROCEDURE MAKETEMP(FILENAME : STRING80; VAR TEMPNAME : STRING80);
-
- VAR POINT : INTEGER;
-
- BEGIN
- POINT := POS('.',FILENAME);
- IF POINT > 0 THEN DELETE(FILENAME,POINT,(LENGTH(FILENAME)-POINT)+1);
- TEMPNAME := CONCAT(FILENAME,'.$$$')
- END;
-
-
- { CASER MAIN }
-
- BEGIN
- PARSE_TAIL(I,PARMS); { Parse the command tail }
- IF I < 2 THEN { Missing parms error }
- BEGIN
- WRITELN('<<Error!>> CASE requires two command line parameters:');
- WRITELN(' CASE UP B:FOOFILE.TXT or');
- WRITELN(' CASE DOWN B:FOOFILE.TXT');
- WRITELN(' Invoke CASE again with the proper parameters.')
- END
- ELSE
- BEGIN
- WORKNAME := PARMS[2];
- ASSIGN(WORKFILE,WORKNAME); { Attempt to open the file }
- {$I-} RESET(WORKFILE); {$I+}
- IF IORESULT <>0 THEN
- BEGIN
- WRITELN('<<Error!>> File ',PARMS[2],' does not exist.');
- WRITELN(' Invoke CASE again with an existing filename.');
- END
- ELSE
- BEGIN { See if UP/DOWN parm was entered }
- CASE_TAG := PARMS[1];
- CASE_TAG := FORCE_CASE(UPPER,CASE_TAG);
- IF CASE_TAG = 'UP' THEN NEW_CASE := UPPER ELSE
- IF CASE_TAG = 'DOWN' THEN NEW_CASE := LOWER ELSE
- BEGIN
- WRITELN
- ('<<Error!>> The case parameter must be "UP" or "DOWN."');
- WRITELN
- (' Invoke CASE again using either "UP" or "DOWN".');
- HALT
- END;
- WRITE('Forcing case ');
- IF NEW_CASE THEN WRITE('up ') ELSE WRITE('down ');
- MAKETEMP(WORKNAME,TEMPNAME); { Generate temporary filename }
- ASSIGN(TEMPFILE,TEMPNAME); { Open temporary file }
- REWRITE(TEMPFILE);
- WHILE NOT EOF(WORKFILE) DO
- BEGIN
- READLN(WORKFILE,WORKLINE);
- WRITE('.'); { Dot shows it's working }
- WORKLINE := FORCE_CASE(NEW_CASE,WORKLINE);
- WRITELN(TEMPFILE,WORKLINE)
- END;
- CLOSE(TEMPFILE); { Close the temporary file }
- CLOSE(WORKFILE); { Close original source file... }
- ERASE(WORKFILE); { ...and delete it. }
- RENAME(TEMPFILE,WORKNAME); { Temporary file becomes source }
- END
- END
- END.