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 / PARSTAIL.SRC < prev    next >
Text File  |  1986-01-06  |  2KB  |  36 lines

  1. {--------------------------------------------------}
  2. {                   PARSE_TAIL                     }
  3. { Parses the command tail into up to ten strings.  }
  4. {               By Jeff Duntemann                  }
  5. {                                                  }
  6. { ASSUMES:                                         }
  7. {  TYPE PARM_ARRAY = ARRAY[0..10] OF STRING[80]    }
  8. {  VAR                                             }
  9. {  dos: RAM_TAIL : STRING[128] ABSOLUTE CSEG : $80 }
  10. {  cp/m:RAM_TAIL : STRING[128] ABSOLUTE $80;       }
  11. {  also, that function STRIP_WHITE is present      }
  12. {                                                  }
  13. {                         Turbo Pascal V2.0        }
  14. {                         Last update: 12/11/84    }
  15. {--------------------------------------------------}
  16.  
  17. PROCEDURE PARSE_TAIL(VAR COUNT : INTEGER; VAR PARMS : PARM_ARRAY);
  18.  
  19. VAR MARKER : INTEGER;
  20.     TAIL   : STRING[128]; { The command tail is never over 128 bytes long    }
  21.  
  22. BEGIN
  23.   TAIL := RAM_TAIL;    { An absolute variable containing the command tail }
  24.   COUNT := 0;
  25.   TAIL := STRIP_WHITE(TAIL);
  26.   IF LENGTH(TAIL) > 0 THEN
  27.     REPEAT                  { Until 10 parms parsed or tail is all gone }
  28.       MARKER := POS(' ',TAIL) - 1;
  29.       IF MARKER <= 0 THEN MARKER := LENGTH(TAIL);
  30.       COUNT := COUNT + 1;
  31.       PARMS[COUNT] := COPY(TAIL,1,MARKER);
  32.       DELETE(TAIL,1,MARKER);
  33.       TAIL := STRIP_WHITE(TAIL)
  34.     UNTIL (COUNT >= 10) OR (LENGTH(TAIL) = 0)
  35. END;
  36.