trecreg.pp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. type
  2. u_char = byte;
  3. u_short = word;
  4. u_long = cardinal;
  5. wrec = record
  6. w: word;
  7. end;
  8. wrec2 = record
  9. b1,b2: byte;
  10. end;
  11. SunB = record
  12. s_b1,
  13. s_b2,
  14. s_b3,
  15. s_b4: u_char;
  16. end;
  17. SunW = record
  18. s_w1: wrec;
  19. s_w2: wrec2;
  20. end;
  21. in_addr = record
  22. case Integer of
  23. 0: (S_un_b: SunB);
  24. 1: (S_un_w: SunW);
  25. 2: (S_addr: u_long);
  26. end;
  27. procedure t(i: in_addr);
  28. begin
  29. if (i.s_un_b.s_b1 <> $de) or
  30. (i.s_un_b.s_b2 <> $ad) or
  31. (i.s_un_b.s_b3 <> $be) or
  32. (i.s_un_b.s_b4 <> $ef) then
  33. begin
  34. writeln('error1');
  35. halt(1);
  36. end;
  37. end;
  38. procedure t2(i: in_addr);
  39. begin
  40. if (i.s_un_w.s_w1.w <> $cafe) or
  41. (i.s_un_w.s_w2.b1 <> $ba) or
  42. (i.s_un_w.s_w2.b2 <> $be) then
  43. begin
  44. writeln('error2');
  45. halt(2);
  46. end;
  47. end;
  48. var
  49. i: in_addr;
  50. begin
  51. i.s_un_b.s_b1 := $de;
  52. i.s_un_b.s_b2 := $ad;
  53. i.s_un_b.s_b3 := $be;
  54. i.s_un_b.s_b4 := $ef;
  55. t(i);
  56. i.s_un_w.s_w1.w := $cafe;
  57. i.s_un_w.s_w2.b1 := $ba;
  58. i.s_un_w.s_w2.b2 := $be;
  59. t2(i);
  60. end.