home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / sigmv071.ark / DEMO.PAS < prev    next >
Pascal/Delphi Source File  |  1984-04-29  |  1KB  |  55 lines

  1. program demo;
  2. {$c-,m-,e-,f-}
  3.  
  4. {Program to demonstrate how the use of bit manipulation can reduce
  5.  data storage requirements.  In this case, instead of requiring 8
  6.  bytes --one for each boolean variable-- a single byte is used.}
  7.  
  8. type
  9. xxtest = (glucose,sodium, potassium, bun, chloride, hemoglobin,
  10.         hematocrit, wbc);
  11.  
  12. byte = 0..255;
  13.  
  14. var
  15. xtest:array [0..7] of xxtest;
  16. done:boolean;
  17. i,test_ordered,ordered:byte;
  18.  
  19. {these two procedures contained in BITBANG.SRC/REL}
  20. procedure bset(var x:byte; y:byte);external;
  21. function test (x:byte; y:byte):boolean; external;
  22.  
  23. begin {of main program}
  24.  
  25. xtest[0]:=glucose;
  26. xtest[1]:=sodium;
  27. xtest[2]:=potassium;
  28. xtest[3]:=bun;
  29. xtest[4]:=chloride;
  30. xtest[5]:=hemoglobin;
  31. xtest[6]:=hematocrit;
  32. xtest[7]:=wbc;
  33.  
  34. writeln ('Available tests include: ');
  35. for i:= 0 to 7 do
  36.     writeln (i:2,': ',xtest[i]:10);
  37. writeln ('8':2,': ','no additional test');
  38.  
  39. test_ordered:= 0;  {initialize byte to 00000000, i.e. no test ordered}
  40.  
  41.  
  42. done:=false;
  43. while not done do
  44. begin
  45. write('Enter number for test ordered: ');
  46. readln(ordered);
  47. if ordered < 8 then bset(test_ordered,ordered)
  48.     else done:=true;  {if ordered, set bit to 1}
  49. end;
  50.  
  51. for i := 0 to 7 do
  52.     if test(test_ordered,i) then writeln (xtest[i]:15);
  53.  
  54. end.
  55.