home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
TURBOPAS
/
TP-UTIL.ARK
/
CASE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1986-01-06
|
3KB
|
109 lines
{-----------------------------}
{ 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.
HQQWBC