(315,040)<#4612#>
(000,030)<#4352#>procedure-declaration<#4352#>
42
(000,010)<#4353#>(1,0)<#3029#>020<#3029#><#4733#>#tex2html_wrap6111#(070,010)<#4734#>procedure-head<#4734#><#4733#>
(1,0)<#3032#>020<#3032#><#4736#>#tex2html_wrap6115#(070,010)<#4737#>procedure-body<#4737#><#4736#>
(1,0)<#3035#>020<#3035#><#4739#>#tex2html_wrap6119#(070,010)<#4740#>procedure-tail<#4740#><#4739#>
(1,0)<#3038#>020<#3038#><#4353#>
43
<#4612#>
(315,110)<#4613#>
(000,100)<#4354#>procedure-head<#4354#>
44
(000,080)<#4355#>(1,0)<#3040#>030<#3040#><#4742#>#tex2html_wrap6129#(060,010)<#4743#>type-declarer<#4743#><#4742#>
(1,0)<#3043#>030<#3043#> <#4749#>(040,010)<#4752#>PROC<#4752#><#4749#> (040,010)
(1,0)<#3046#>005<#3046#><#4355#>
45
(005,070)<#3047#>(20,20)[rt]<#3047#>
(025,070)<#3048#>(20,20)[lb]<#3048#>
(025,060)<#4356#>(1,0)<#3049#>70<#3049#><#4356#>
(095,070)<#3050#>(20,20)[rb]<#3050#>
(115,070)<#3051#>(20,20)[lt]<#3051#>
46
(165,070)<#3052#>(20,20)[rt]<#3052#>
(175,070)<#4357#>(0,-1)<#3053#>020<#3053#><#4357#>
(165,050)<#3054#>(20,20)[rb]<#3054#>
(165,040)<#4358#>(-1,0)<#3055#>140<#3055#><#4358#>
(025,030)<#3056#>(20,20)[l]<#3056#>
47
(025,020)<#4359#>(1,0)<#3057#>005<#3057#><#4754#>#tex2html_wrap6139#(070,010)<#4755#>procedure-name<#4755#><#4754#>
(1,0)<#3060#>030<#3060#><#4757#>#tex2html_wrap6143#(100,010)<#4758#>formal-parameters-pack<#4758#><#4757#>
(1,0)<#3063#>030<#3063#> <#4764#>(010,010)<#4767#>:<#4767#><#4764#> (010,010)
(1,0)<#3066#>030<#3066#><#4359#>
48
(105,010)<#3067#>(20,20)[rt]<#3067#>
(125,010)<#3068#>(20,20)[lb]<#3068#>
(125,000)<#4360#>(1,0)<#3069#>110<#3069#><#4360#>
(235,010)<#3070#>(20,20)[rb]<#3070#>
(255,010)<#3071#>(20,20)[lt]<#3071#>
49
<#4613#>
The head gives the <#3072#>procedure-name<#3072#>, the types and access attributes of
its parameters (if any) and the type of its result (if any).
(315,160)<#4614#>
(000,150)<#4361#>formal-parameters-pack<#4361#>
50
(000,130)<#4362#>(1,0)<#3074#>030<#3074#> <#4773#>(010,010)<#4776#>(<#4776#><#4773#> (010,010)
(1,0)<#3077#>005<#3077#><#4362#>
(045,120)<#3078#>(20,20)[r]<#3078#>
51
(235,100)<#3079#>(20,20)[r]<#3079#>
(235,110)<#4363#>(-1,0)<#3080#>040<#3080#><#4363#>
(025,110)<#4364#>(1,0)<#3081#>160<#3081#> <#4782#>(010,010)<#4785#>,<#4785#><#4782#> (010,010) <#4364#>
(145,100)<#3084#>(20,20)[l]<#3084#>
52
(025,100)<#3085#>(20,20)[l]<#3085#>
(025,090)<#4365#>(1,0)<#3086#>005<#3086#><#4787#>#tex2html_wrap6175#(060,010)<#4788#>type-declarer<#4788#><#4787#>
(1,0)<#3089#>060<#3089#><#4790#>#tex2html_wrap6179#(080,010)<#4791#>parameter-name<#4791#><#4790#>
(1,0)<#3092#>030<#3092#> <#4797#>(010,010)<#4800#>)<#4800#><#4797#> (010,010)
(1,0)<#3095#>030<#3095#><#4365#>
53
(015,100)<#4366#>(0,-1)<#3096#>080<#3096#><#4366#>
(025,020)<#3097#>(20,20)[lb]<#3097#>
(025,010)<#4367#>(1,0)<#3098#>030<#3098#><#4367#>
54
(095,080)<#3099#>(20,20)[r]<#3099#>
(095,070)<#4368#>(-1,0)<#3100#>040<#3100#><#4368#>
(055,060)<#3101#>(20,20)[l]<#3101#>
(045,060)<#4369#>(0,-1)<#3102#>040<#3102#><#4369#>
55
(125,080)<#3103#>(20,20)[lt]<#3103#>
(115,080)<#4370#>(0,-1)<#3104#>060<#3104#><#4370#>
56
(055,060)<#3105#>(20,20)[lb]<#3105#>
(055,050)<#4371#>(1,0)<#3106#>005<#3106#> <#4806#>(040,010)<#4809#>CONST<#4809#><#4806#> (040,010)
(1,0)<#3109#>005<#3109#><#4371#>
(105,060)<#3110#>(20,20)[rb]<#3110#>
57
(055,040)<#3111#>(20,20)[lb]<#3111#>
(055,030)<#4372#>(1,0)<#3112#>005<#3112#> <#4815#>(040,010)<#4818#>VAR<#4818#><#4815#> (040,010)
(1,0)<#3115#>005<#3115#><#4372#>
(105,040)<#3116#>(20,20)[rb]<#3116#>
58
(055,020)<#3117#>(20,20)[lb]<#3117#>
(055,010)<#4373#>(1,0)<#3118#>005<#3118#> <#4824#>(040,010)<#4827#>PROC<#4827#><#4824#> (040,010)
(1,0)<#3121#>005<#3121#><#4373#>
(105,020)<#3122#>(20,20)[rb]<#3122#>
59
(105,010)<#4374#>(1,0)<#3123#>025<#3123#><#4829#>#tex2html_wrap6207#(100,010)<#4830#>virtual-parameters-pack<#4830#><#4829#>
(1,0)<#3126#>005<#3126#><#4374#>
(235,020)<#3127#>(20,20)[r]<#3127#>
(235,030)<#4375#>(-1,0)<#3128#>110<#3128#><#4375#>
(125,040)<#3129#>(20,20)[lb]<#3129#>
60
<#4614#>
Parameters are either objects or procedures, as can be deduced
from this rather unwieldy syntax diagram. In case a procedure
is to be passed as a parameter, the types of its parameters are
in their turn to be specified precisely by means of a
<#3130#>virtual-parameters-pack<#3130#>.
(315,160)<#4615#>
(000,150)<#4376#>virtual-parameters-pack<#4376#>
61
(000,130)<#4377#>(1,0)<#3132#>030<#3132#> <#4836#>(010,010)<#4839#>(<#4839#><#4836#> (010,010)
(1,0)<#3135#>005<#3135#><#4377#>
(045,120)<#3136#>(20,20)[r]<#3136#>
62
(235,100)<#3137#>(20,20)[r]<#3137#>
(235,110)<#4378#>(-1,0)<#3138#>040<#3138#><#4378#>
(025,110)<#4379#>(1,0)<#3139#>160<#3139#> <#4845#>(010,010)<#4848#>,<#4848#><#4845#> (010,010) <#4379#>
63
(025,100)<#3142#>(20,20)[l]<#3142#>
(025,090)<#4380#>(1,0)<#3143#>005<#3143#><#4850#>#tex2html_wrap6233#(060,010)<#4851#>type-declarer<#4851#><#4850#>
(1,0)<#3146#>170<#3146#> <#4857#>(010,010)<#4860#>)<#4860#><#4857#> (010,010)
(1,0)<#3149#>030<#3149#><#4380#>
64
(015,100)<#4381#>(0,-1)<#3150#>080<#3150#><#4381#>
(025,020)<#3151#>(20,20)[lb]<#3151#>
(025,010)<#4382#>(1,0)<#3152#>030<#3152#><#4382#>
65
(095,080)<#3153#>(20,20)[r]<#3153#>
(095,070)<#4383#>(-1,0)<#3154#>040<#3154#><#4383#>
(055,060)<#3155#>(20,20)[l]<#3155#>
(045,060)<#4384#>(0,-1)<#3156#>040<#3156#><#4384#>
66
(125,080)<#3157#>(20,20)[lt]<#3157#>
(115,080)<#4385#>(0,-1)<#3158#>060<#3158#><#4385#>
67
(055,060)<#3159#>(20,20)[lb]<#3159#>
(055,050)<#4386#>(1,0)<#3160#>005<#3160#> <#4866#>(040,010)<#4869#>CONST<#4869#><#4866#> (040,010)
(1,0)<#3163#>005<#3163#><#4386#>
(105,060)<#3164#>(20,20)[rb]<#3164#>
68
(055,040)<#3165#>(20,20)[lb]<#3165#>
(055,030)<#4387#>(1,0)<#3166#>005<#3166#> <#4875#>(040,010)<#4878#>VAR<#4878#><#4875#> (040,010)
(1,0)<#3169#>005<#3169#><#4387#>
(105,040)<#3170#>(20,20)[rb]<#3170#>
69
(055,020)<#3171#>(20,20)[lb]<#3171#>
(055,010)<#4388#>(1,0)<#3172#>005<#3172#> <#4884#>(040,010)<#4887#>PROC<#4887#><#4884#> (040,010)
(1,0)<#3175#>005<#3175#><#4388#>
(105,020)<#3176#>(20,20)[rb]<#3176#>
70
(105,010)<#4389#>(1,0)<#3177#>025<#3177#><#4889#>#tex2html_wrap6261#(100,010)<#4890#>virtual-parameters-pack<#4890#><#4889#>
(1,0)<#3180#>005<#3180#><#4389#>
(235,020)<#3181#>(20,20)[r]<#3181#>
(235,030)<#4390#>(-1,0)<#3182#>110<#3182#><#4390#>
(125,040)<#3183#>(20,20)[lb]<#3183#>
71
<#4615#>
A <#3184#>procedure-body<#3184#> has the same form as a <#3185#>main-packet<#3185#> without
a <#3186#>bottom-up-part<#3186#>.
(315,040)<#4616#>
(000,030)<#4391#>procedure-body<#4391#>
72
(000,010)<#4392#>(1,0)<#3188#>030<#3188#><#4892#>#tex2html_wrap6279#(040,010)<#4893#>root<#4893#><#4892#>
(1,0)<#3191#>030<#3191#><#4895#>#tex2html_wrap6283#(080,010)<#4896#>top-down-part<#4896#><#4895#>
(1,0)<#3194#>030<#3194#><#4392#>
73
<#4616#>
(315,050)<#4617#>
(000,040)<#4393#>procedure-tail<#4393#>
74
(000,020)<#4394#>(1,0)<#3196#>030<#3196#> <#4902#>(040,010)<#4905#>ENDPROC<#4905#><#4902#> (040,010)
(1,0)<#3199#>030<#3199#><#4907#>#tex2html_wrap6299#(080,010)<#4908#>procedure-name<#4908#><#4907#>
(1,0)<#3202#>030<#3202#><#4394#>
75
(075,010)<#3203#>(20,20)[rt]<#3203#>
(095,010)<#3204#>(20,20)[lb]<#3204#>
(095,000)<#4395#>(1,0)<#3205#>90<#3205#><#4395#>
(185,010)<#3206#>(20,20)[rb]<#3206#>
(205,010)<#3207#>(20,20)[lt]<#3207#>
76
<#4617#>
The name of the procedure is repeated after the <#3208#>ENDPROC<#3208#>
symbol. In the Elan Programming Environment this name may be
left out (in which case it is inserted automatically).