home *** CD-ROM | disk | FTP | other *** search
- program demo;
- {$c-,m-,e-,f-}
-
- {Program to demonstrate how the use of bit manipulation can reduce
- data storage requirements. In this case, instead of requiring 8
- bytes --one for each boolean variable-- a single byte is used.}
-
- type
- xxtest = (glucose,sodium, potassium, bun, chloride, hemoglobin,
- hematocrit, wbc);
-
- byte = 0..255;
-
- var
- xtest:array [0..7] of xxtest;
- done:boolean;
- i,test_ordered,ordered:byte;
-
- {these two procedures contained in BITBANG.SRC/REL}
- procedure bset(var x:byte; y:byte);external;
- function test (x:byte; y:byte):boolean; external;
-
- begin {of main program}
-
- xtest[0]:=glucose;
- xtest[1]:=sodium;
- xtest[2]:=potassium;
- xtest[3]:=bun;
- xtest[4]:=chloride;
- xtest[5]:=hemoglobin;
- xtest[6]:=hematocrit;
- xtest[7]:=wbc;
-
- writeln ('Available tests include: ');
- for i:= 0 to 7 do
- writeln (i:2,': ',xtest[i]:10);
- writeln ('8':2,': ','no additional test');
-
- test_ordered:= 0; {initialize byte to 00000000, i.e. no test ordered}
-
-
- done:=false;
- while not done do
- begin
- write('Enter number for test ordered: ');
- readln(ordered);
- if ordered < 8 then bset(test_ordered,ordered)
- else done:=true; {if ordered, set bit to 1}
- end;
-
- for i := 0 to 7 do
- if test(test_ordered,i) then writeln (xtest[i]:15);
-
- end.
-