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 / CROSSREF.ARK / CR-M02.INC < prev    next >
Text File  |  1987-04-18  |  5KB  |  98 lines

  1. {.pa}
  2. {************************* procedure ReadLine *******************************}
  3.  
  4. procedure ReadLine(var InFile   :text;
  5.                    var LineText :LineType);
  6.  
  7. { This procedure will read one line of text from an input file containing the
  8.   source code & count the lines. }
  9.  
  10. begin
  11.    with LineText do
  12.       begin
  13.          Len := 0;
  14.          while (not eoln(InFile)) and      { read in line loop char by char }
  15.                (Len <= MaxLengthOfLine) do
  16.             begin
  17.                Len := Len + 1;             { count char in line }
  18.                read(InFile,Line[Len])      { read char from input file }
  19.             end;
  20.          readln(InFile);
  21.       end
  22. end;  { procedure ReadLine }
  23. {************************* procedure ClearLine *****************************}
  24.  
  25. procedure ClearLine(var LineText:LineType);
  26.  
  27. { This procedure will initialize the array of characters in LINE and set
  28.   LEN to zero. }
  29.  
  30. var
  31.    I :Index;        { loop index }
  32.  
  33. begin
  34.    for I := 1 to LineText.Len do
  35.       LineText.Line[I] := ' ';
  36.    LineText.Len := 0
  37. end;  { procedure ClearLine }
  38. {.pa}
  39. {************************ procedure ReadInReserved *************************}
  40.  
  41. procedure ReadInReserved(var Reserved :ReservedType);
  42.  
  43. { This procedure will read in the reserved & semi-reserved words from a list
  44.   of assignments within this procedure. }
  45.  
  46. begin
  47.    Reserved[1]:='ABSOLUTE '; Reserved[2]:='AND      '; Reserved[3]:='ARRAY    ';
  48.    Reserved[4]:='BEGIN    '; Reserved[5]:='CASE     '; Reserved[6]:='CONST    ';
  49.    Reserved[7]:='DIV      '; Reserved[8]:='DO       '; Reserved[9]:='DOWNTO   ';
  50.    Reserved[10]:='ELSE     '; Reserved[11]:='END      '; Reserved[12]:='EXTERNAL ';
  51.    Reserved[13]:='FILE     '; Reserved[14]:='FOR      '; Reserved[15]:='FORWARD  ';
  52.    Reserved[16]:='FUNCTION '; Reserved[17]:='GOTO     '; Reserved[18]:='IF       ';
  53.    Reserved[19]:='IN       '; Reserved[20]:='INLINE   '; Reserved[21]:='LABEL    ';
  54.    Reserved[22]:='MOD      '; Reserved[23]:='NIL      '; Reserved[24]:='NOT      ';
  55.    Reserved[25]:='OF       '; Reserved[26]:='OR       '; Reserved[27]:='PACKED   ';
  56.    Reserved[28]:='PROCEDURE'; Reserved[29]:='PROGRAM  '; Reserved[30]:='RECORD   ';
  57.    Reserved[31]:='REPEAT   '; Reserved[32]:='SET      '; Reserved[33]:='STRING   ';
  58.    Reserved[34]:='THEN     '; Reserved[35]:='TO       '; Reserved[36]:='TYPE     ';
  59.    Reserved[37]:='UNTIL    '; Reserved[38]:='VAR      '; Reserved[39]:='WHILE    ';
  60.    Reserved[40]:='WITH     ';
  61. end;  { procedure ReadInReserved }
  62. {.pa}
  63. {************************** procedure DisplayStatus *************************}
  64.  
  65. procedure DisplayStatus (var Status :Info;
  66.                          var OutF   :text);
  67. var
  68.    Code :integer;       { actual lines of code }
  69.  
  70. begin
  71.    with Status do
  72.       begin
  73.          Code := TotalLines - CommentLines - BlankLines;
  74.          writeln(OutF,'Total lines            :'  ,TotalLines:5              );
  75.          writeln(OutF,'Full lines of comments :'  ,CommentLines:5            );
  76.          writeln(OutF,'Blank lines            :'  ,BlankLines:5              );
  77.          writeln(OutF,'Actual lines of code   :'  ,Code:5                    );
  78.          writeln(OutF);
  79.          write  (OutF,'Total reserved words   :'  ,TotalReserved:5           );
  80.          writeln(OutF,'':7,'Reserved/line of code   :',TotalReserved/Code:5:1);
  81.          write  (OutF,'Total identifiers      :'  ,TotalIdents:5             );
  82.          writeln(OutF,'':7,'Identifiers/line of code:',TotalIdents/Code:5:1  );
  83.          write  (OutF,'Total comments         :'  ,Comments:5                );
  84.          writeln(OutF,'':7,'Comments/line of code   :',Comments/Code:5:1     );
  85.          writeln(OutF);
  86.          writeln(OutF,'Different identifiers  :'  ,DifferentIdents:5         );
  87.          writeln(OutF,'Avg. identifier length :'  ,
  88.                                                AvgIdentLength/TotalIdents:5:1);
  89.          write  (OutF,'Most used identifier   : ' ,MostUsedIdent             );
  90.          writeln(OutF,'':1,'Number of times used:',MostUsedNumber:3          );
  91.          write  (OutF,'Least used identifier  : ' ,LeastUsedIdent            );
  92.          writeln(OutF,'':1,'Number of times used:',LeastUsedNumber:3         );
  93.          writeln(OutF);
  94.          writeln(OutF,'User defined functions :'  ,UsedReserved[16]:5        );
  95.          writeln(OutF,'User defined procedures:'  ,UsedReserved[28]:5        );
  96.       end;
  97. end;  { procedure DisplayStatus }
  98.