(**************************************************
*
*       CONNECT FILES PROGRAM
*
*       Ray Penley put this togeather to make it
*  easier to open files. Add this to your library.
*
* Written by RAY PENLEY
*  Donated to the Pascal/Z Users Group, Sept 1980
*
*************************************************)

TYPE
 BYTE: 0..255;

FUNCTION length(x: str255): INTEGER; EXTERNAL;
PROCEDURE setlength(VAR x: str0; y: INTEGER); EXTERNAL;
FUNCTION index(x,y: str255): INTEGER; EXTERNAL;

FUNCTION ConnectFiles: boolean;
CONST
 dflt_extension = '.CCD';
 fid_len       = 14;   { Max length CP/M file names }
TYPE
 FID   = string fid_len;
VAR
 File_ID,
 New_ID  : FID;
 ix,jx : BYTE;

       PROCEDURE PAD(VAR ID: fid; required: BYTE);
       CONST
         space = ' ';
       BEGIN
         WHILE (length(ID)<required) DO append(ID,space);
       END;

BEGIN{-GETID-}
 ConnectFiles := true;
 setlength(File_ID,0);
 WRITELN;
 WRITE('Enter <Drive:><File name>  ');
 READLN(File_ID);
 IF (length(File_ID)>fid_len) THEN
   setlength(File_ID,fid_len)
 Else
   PAD(File_ID, fid_len);
 RESET(File_ID, TextFile);
 IF EOF(TextFile) THEN{ ABORT }
   BEGIN
     error(3);
     ConnectFiles := false;
   END
 ELSE
   BEGIN
   ix := index(File_ID,'.'); { search for an extension }
   jx := index(File_ID,' '); { search for the first space }
   IF (ix=0) THEN{ no extension was specified }
     setlength(File_ID,jx-1)
   Else
     setlength(File_ID,ix-1);
   setlength(New_ID,0);
   append(New_ID, File_ID);
   append(New_ID, dflt_extension);
   PAD(New_ID, fid_len);
   REWRITE(New_ID, Work_File);
   END;
END; {of ConnectFiles}

{++++++++++++++++++++++++++++++++++++++++++++++++}