{-----------------------------} { 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('<> 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('<> 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 ('<> 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.