1struct foo
2{
3  int a, b, c, d;
4  double doubl;
5} s1, s2;
6
7#ifndef ONLY2
8
9struct foo
10structret (s1, i1, i2, s2)
11     struct foo s1, s2;
12     int i1, i2;
13{
14  if (i1 != i2)
15    {
16      if (i1 < i2)
17	return s1;
18      else
19	return s2;
20    }
21  s2.a = 11;
22  s2.b = 22;
23  s2.c = s1.c;
24  s2.d = s1.d;
25  return s2;
26}
27
28#endif
29
30#ifndef ONLY1
31
32struct foo
33mani (a, b)
34{
35  return structret (s1, a, b, s2);
36}
37
38init ()
39{
40  s1.a = 1;
41  s1.b = 2;
42  s1.c = 3;
43  s1.d = 4;
44  s1.doubl = 3.1415;
45  s2.a = -1;
46  s2.b = -2;
47  s2.c = -3;
48  s2.d = -4;
49  s2.doubl = 2.71818;
50}
51
52main ()
53{
54  struct foo s;
55
56  init ();
57  s = mani (1, 1);
58  printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl);
59
60  init ();
61  s = mani (2, 1);
62  printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl);
63
64  init ();
65  s = mani (1, 2);
66  printf ("%d, %d, %d, %d : %f\n", s.a, s.b, s.c, s.d, s.doubl);
67}
68
69#endif
70