1a returns 5
2b returns 4
3c returns 3
4d returns 2
5in e
6e returned 25
7x is 25
8ZZ
9abcde
10defghi
11ZZ
125
130
14AVAR
15AVAR
16foo
17foo
18AVAR
195
205
21f1
22f1 () 
23{ 
24    ( return 5 );
25    status=$?;
26    echo $status;
27    return $status
28}
29before: try to assign to FUNCNAME
30outside: FUNCNAME = main
31before: FUNCNAME = func
32FUNCNAME = func2
33after: FUNCNAME = func
34outside2: FUNCNAME =
35function
36zf is a function
37zf () 
38{ 
39    echo this is zf
40}
41f is a function
42f () 
43{ 
44    echo f-x;
45    echo f-y
46} 1>&2
47subshell
48f is a function
49f () 
50{ 
51    echo f-x;
52    echo f-y
53} 1>&2
54f2 is a function
55f2 () 
56{ 
57    echo f2-a;
58    function f3 () 
59    { 
60        echo f3-a;
61        echo f3-b
62    } 1>&2;
63    f3
64}
65subshell
66f2 is a function
67f2 () 
68{ 
69    echo f2-a;
70    function f3 () 
71    { 
72        echo f3-a;
73        echo f3-b
74    } 1>&2;
75    f3
76}
77f4 is a function
78f4 () 
79{ 
80    echo f4-a;
81    function f5 () 
82    { 
83        echo f5-a;
84        echo f5-b
85    } 1>&2;
86    f5
87} 2>&1
88subshell
89f4 is a function
90f4 () 
91{ 
92    echo f4-a;
93    function f5 () 
94    { 
95        echo f5-a;
96        echo f5-b
97    } 1>&2;
98    f5
99} 2>&1
100testgrp is a function
101testgrp () 
102{ 
103    echo testgrp-a;
104    { 
105        echo tg-x;
106        echo tg-y
107    } 1>&2;
108    echo testgrp-b
109}
110subshell
111testgrp is a function
112testgrp () 
113{ 
114    echo testgrp-a;
115    { 
116        echo tg-x;
117        echo tg-y
118    } 1>&2;
119    echo testgrp-b
120}
121funca is a function
122funca () 
123{ 
124    ( echo func-a )
125}
126funcb is a function
127funcb () 
128{ 
129    ( echo func-b )
130}
131funcc is a function
132funcc () 
133{ 
134    ( echo func-c ) 2>&1
135}
136func-a
137func-b
138func-c
139expect 5 10
1405 10
141expect 20
14220
143expect 5 20
1445 20
145expect 5 30
1465 30
147expect 2 40
1482 40
149expect 5 20
1505 20
1515
152