home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast.iso / pcmag / vol8n05.zip / BLCKRD.PAS < prev    next >
Pascal/Delphi Source File  |  1989-02-06  |  2KB  |  68 lines

  1. PROGRAM BlockReadDemo;
  2. TYPE ProductT = RECORD
  3.                   Part_Number : Integer;
  4.                   Stock : Integer;
  5.                   Price : Real;
  6.                   Description : STRING[20];
  7.  (* ...
  8.  Other fields here ...
  9.  *)
  10.                 END;
  11. VAR
  12.   Product : ProductT;
  13.   Product_File : FILE OF ProductT;
  14.   APrice : Real;
  15.   FUNCTION Standard_Inventory_Value : Real;
  16.     (* File must be RESET before calling this function *)
  17.   VAR
  18.     Value : Real;
  19.   BEGIN
  20.     Seek(Product_File, 0); Value := 0.0;
  21.     WHILE NOT Eof(Product_File) DO
  22.       BEGIN
  23.         Read(Product_File, Product);
  24.         Value := Value+Product.Price*Product.Stock;
  25.       END;
  26.     Standard_Inventory_Value := Value;
  27.   END;
  28.  
  29.   FUNCTION My_Inventory_Value : Real;
  30.   CONST BufferSize = 500;
  31.   VAR
  32.     Buffer : ARRAY[1..BufferSize] OF ProductT;
  33.     F : FILE ABSOLUTE Product_File;
  34.     Value : Real;
  35.     i, RecsInBuffer : Integer;
  36.  
  37.   BEGIN
  38.     Seek(F, 0); Value := 0.0;
  39.     WHILE NOT Eof(F) DO
  40.       BEGIN
  41.         BlockRead(F, Buffer, BufferSize, RecsInBuffer);
  42.         FOR i := 1 TO RecsInBuffer DO
  43.           Value := Value+Buffer[i].Price*Buffer[i].Stock;
  44.       END;
  45.     My_Inventory_Value := Value;
  46.   END;
  47.  
  48. BEGIN
  49.   WriteLn('This program is strictly a demonstration.');
  50.   WriteLn('It does nothing useful of itself.');
  51.   Assign(Product_File, 'TEMP.$$$');
  52.   ReWrite(Product_File);
  53.   APrice := 1.0;
  54.   FillChar(product, SizeOf(Product), 0);
  55.   Product.Stock := 1;
  56.   (*You may replace 100.0 with a larger number if you wish.*)
  57.   WHILE APrice <= 100.0 DO
  58.     BEGIN
  59.       Product.Price := APrice;
  60.       Write(Product_File, Product);
  61.       APrice := APrice + 1;
  62.     END;
  63.   WriteLn('Typed-file function gives result ',Standard_Inventory_Value:1:4);
  64.   WriteLn('UNtyped-file function gives result ',My_Inventory_Value:1:4);
  65.   Close(Product_File);
  66.   Erase(Product_File);
  67. END.
  68.