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. .