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

  1. PROGRAM testcmd;
  2. {          +---------------------------------------------------------+
  3.            |This is a program to test and demonstrate the procedure, |
  4.            |READCMD, and to illustrate pertinent global declarations.|
  5.            |It also illustrates the use of the accessory procedure,  |
  6.            |GETNUMS, to convert numeric arguments from strings to an |
  7.            |array of integers.                                       |
  8.            +---------------------------------------------------------+        }
  9. {$E+}
  10.   CONST   maxword   = 14;        {MAX NO. OF CHARACTERS AN ARGUMENT CAN HAVE  }
  11.           maxargs   = 11;        {MAX NO. OF ARGUMENTS ALLOWED IN COMMAND TAIL}
  12.           maxline   = 80;
  13.           margin    = '          ';
  14.  
  15.  
  16.   TYPE    string0   = string 0;
  17.           string255 = string 255;
  18.           wrdtype   = string maxword;
  19.           wrdarray  = ARRAY[1..maxargs] OF wrdtype;
  20.           numarray  = ARRAY[1..maxargs] OF INTEGER;
  21.           byte      = 0..255;
  22.  
  23.   VAR     source    : wrdtype;
  24.           key       : CHAR;
  25.           name      : wrdarray;  {IDENTIFIERS FOR THE ARGUMENTS IN THE        }
  26.           i,                                                    {COMMAND TAIL.}
  27.           nargs,                 {ACTUAL NUMBER OF ARGUMENTS IN COMMAND TAIL  }
  28.           numct     : byte;      {NUMBER OF NUMERIC ARGUMENTS                 }
  29.           num       : numarray;  {IDENTIFIERS FOR NUMERIC ARGUMENTS           }
  30.           sum       : INTEGER;
  31.  
  32.    FUNCTION length ( source: string255 ): INTEGER; external;
  33. {$Igetnums.p }
  34. {$Ireadcmd.p }
  35.  
  36.   PROCEDURE arguments;
  37.     VAR    i : byte;
  38.     BEGIN {-----------------------------arguments-----------------------------}
  39.       WRITELN('     FOR i := 1 to nargs:');
  40.       FOR i := 1 TO nargs DO
  41.         WRITELN(margin,'name[',i:1,'] = ',name[i]);  
  42.       WRITELN
  43.     END;  {-----------------------------arguments-----------------------------}
  44.  
  45.   PROCEDURE maxarguments;
  46.     VAR    i : byte;
  47.     BEGIN {---------------------------maxarguments----------------------------}
  48.       WRITELN('     FOR i := 1 to maxargs:');
  49.       FOR i := 1 TO maxargs DO 
  50.         WRITELN(margin,'name[',i:1,'] = ',name[i]);  
  51.       WRITELN;
  52.       FOR i := 1 TO maxargs DO 
  53.         WRITELN(margin,'length(name[',i:1,']) = ',length(name[i]):2);
  54.       WRITELN;
  55.     END;  {---------------------------maxarguments----------------------------}
  56.  
  57.   PROCEDURE numerics;
  58.     VAR    i : byte;
  59.     BEGIN {-----------------------------numerics------------------------------}
  60.       getnums(name,nargs,num,numct);
  61.       WRITELN('     FOR i := 1 to numct:');
  62.       FOR i := 1 TO numct DO
  63.         WRITELN(margin,'num[',i:1,'] =',num[i]: 5);  
  64.       WRITELN;
  65.       sum := 0;
  66.       FOR i := 1 to numct DO sum := sum + num[i];
  67.       WRITELN(margin,'Sum of numeric arguments = ',sum: 1); WRITELN
  68.     END;  {-----------------------------numerics------------------------------}
  69.  
  70.   BEGIN {-------------------------------testcmd-------------------------------}
  71.     readcmd(name,nargs);
  72.     IF (name[1] = 'Q') OR (name[1] = 'q')
  73.       THEN WRITELN(margin,'Program aborted.')
  74.       ELSE
  75.         BEGIN
  76.           source := name[1];
  77.           key :=    name[2,1];
  78.           WRITELN(margin,'The source filename is ',source,'.');
  79.           WRITELN(margin,'The key is ',key);          WRITELN;
  80.           IF (key = 'A') OR (key = 'a') OR (source[1] = '\') THEN arguments;
  81.           IF (key = 'M') OR (key = 'm') OR (source[1] = '\') THEN maxarguments;
  82.           IF (key = 'N') OR (key = 'n') OR (source[1] = '\') THEN numerics;
  83.           WRITELN(margin,'The number of arguments, nargs =',nargs: 3)
  84.         END
  85.   END.  {-------------------------------testcmd-------------------------------}
  86.  
  87.