home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol134 / drvchk.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1984-04-29  |  1.5 KB  |  60 lines

  1.  
  2. PROCEDURE DRVCHK( VAR DR:CHAR);
  3.  
  4. {      A PROCEDURE TO ENSURE THAT A CHARACTER TO BE USED
  5.        AS A FILENAME PREFIX REFERS TO A LEGAL DRIVE.THE
  6.        INTERNALLY DEFINED CONSTANT NUM_DRIVES SHOULD BE
  7.        SET TO THE NUMBER OF LOGICAL DRIVES AVAILABLE.
  8.  
  9.        IF THE TRANSMITTED DRIVE-NAME IS ILLEGAL,THE USER
  10.        IS ASKED TO SUPPLY ANOTHER LETTER,FROM THE CONSOLE.
  11.        
  12.        NOTE THAT THIS PROCEDURE RECURSIVELY CALLS ITSELF,
  13.        AND WILL NOT EXIT UNTIL A LEGAL DRIVE-NAME IS INPUT.
  14.  
  15.        THE PASCAL/Z EXTERNAL PROCEDURE SETLENGTH MUST BE
  16.        DECLARED IN THE MAIN PROGRAM.                            }
  17.  
  18.  
  19.   CONST
  20.        NUM_DRIVES = 2;
  21.  
  22.   TYPE
  23.        DR_NAME = 'A'..'Z';
  24.        COUNTER = 0..25;
  25.  
  26.   VAR
  27.        DRIVE      : DR_NAME;
  28.        LEGAL_NAME : BOOLEAN;
  29.        DR_AGAIN   : CHAR;
  30.        I          : COUNTER;
  31.        ANSWER     : STRING 40;
  32.  
  33. BEGIN { DRVCHK }
  34.   LEGAL_NAME:=FALSE;
  35.   DRIVE:='A';
  36.   I:=0;
  37.   WHILE I < NUM_DRIVES 
  38.         DO BEGIN
  39.            I:=I+1;
  40.            IF DR=DRIVE 
  41.               THEN BEGIN
  42.                    LEGAL_NAME:=TRUE;
  43.                    I:=25
  44.                    END
  45.                ELSE DRIVE:=SUCC(DRIVE);
  46.           END;
  47.   IF NOT LEGAL_NAME
  48.      THEN BEGIN
  49.           WRITELN('WHICH DRIVE DO YOU WANT DATA WRITTEN TO ?');
  50.           WRITE('DRIVE = ?',CHR(8));
  51.           SETLENGTH(ANSWER,0);
  52.           READ(ANSWER);
  53.           DR_AGAIN := ANSWER[1];
  54.           WRITELN;
  55.           DRVCHK(DR_AGAIN);
  56.           DR := DR_AGAIN;
  57.           END;
  58.   BLNKSCRN;
  59. END;  { DRVCHK }
  60.