449
|
1 /* easy test */
|
0
|
2
|
449
|
3 code (*ret)();
|
|
4 void *env;
|
572
|
5 code exit1(int ac);
|
449
|
6
|
|
7 main0(ac,av)
|
0
|
8 int ac;
|
|
9 char *av[];
|
|
10 {
|
449
|
11 ret = return;
|
|
12 env = environment;
|
573
|
13 printf("#0012:main0 %d start.\n",ac);
|
449
|
14 if (ac>=1)
|
|
15 goto code0(ac,av,return);
|
172
|
16 goto code1(ac,av,exit1);
|
449
|
17 // not reached. (warning?)
|
573
|
18 printf("#0017:main0 %d end.\n",ac);
|
172
|
19 }
|
|
20
|
449
|
21 code exit1(int ac)
|
172
|
22 {
|
449
|
23 // exit(0);
|
|
24 goto code3(0,1,2,3,4,5);
|
0
|
25 }
|
|
26
|
|
27 code code3(a,b,c,d,e,f)
|
|
28 char a,b;
|
|
29 int c,d,e,f;
|
|
30 {
|
573
|
31 printf("#0030:code3: %d %d %d %d %d %d\n",a,b,c,d,e,f);
|
449
|
32 if(a<10)
|
|
33 goto code3(a+1,b,c,d,e,f);
|
0
|
34 else
|
449
|
35 goto code4(a+3,b+3,c+3,d+3,e+3,f+3);
|
0
|
36 }
|
|
37
|
|
38 code code4(a,b,c,d,e,f)
|
|
39 char a,b;
|
|
40 int c,d,e,f;
|
|
41 {
|
449
|
42 int i=1,j=2;
|
573
|
43 printf("#0042:code4: %d %d %d %d %d %d\n",a,b,c,d,e,f);
|
449
|
44 if(a<20) // cyclic binary dependency
|
|
45 goto code3(a+b,b+c,c+d,d+e,e+f,f+a);
|
|
46 else if(a<30)
|
0
|
47 goto code3(a,b,c,d,e,f);
|
449
|
48 else if(a<40) // cyclic dependency
|
|
49 goto code3(b,c,a,e,f,d);
|
|
50 else if(a<50)
|
|
51 goto code4(a+i,b+j,c+i,d+3,e+3,f+3);
|
|
52 else goto ret(0),env;
|
0
|
53 }
|
|
54
|
449
|
55 code code0(ac,av,ret)
|
0
|
56 int ac;
|
|
57 char *av[];
|
449
|
58 code ret();
|
0
|
59 {
|
449
|
60 goto code1(ac,av,ret);
|
0
|
61 }
|
|
62
|
172
|
63 code code1(ac,av,exit)
|
|
64 int ac,exit;
|
0
|
65 char *av[];
|
|
66 {
|
449
|
67 code (*f)(int);
|
573
|
68 printf("#0067:code1: %d\n",ac);
|
172
|
69 f = exit;
|
0
|
70 if (ac>3)
|
449
|
71 goto code1(ac,av,f);
|
0
|
72 else if (ac>2)
|
449
|
73 goto code1(av,ac,f);
|
0
|
74 else
|
449
|
75 goto (*f)(ac),env;
|
0
|
76 }
|
449
|
77
|
|
78 int
|
|
79 main(int ac,char *av[])
|
|
80 {
|
|
81 main0(1,av);
|
573
|
82 printf("#0081:main continue.\n");
|
449
|
83 main0(0,av);
|
573
|
84 printf("#0083:main end.\n");
|
575
|
85 return 0;
|
449
|
86 }
|
|
87
|
|
88 /* end */
|