Procedure declaration
SYNTAX:
procedure_decl = procedure_head [ algorithm_head ] stmt { stmt } END_PROCEDURE ';' .
procedure_head = PROCEDURE procedure_id [ '(' [ VAR ] formal_parameter { ';' [ VAR ] formal_parameter } ')' ] ':' parameter_type ';' .
formal_parameter = parameter_id { ',' parameter_id } ':' parameter_type .
parameter_type = generalized_types | named_types | simple_types .
algorithm_head = { declaration } [ local_decl ] .
declaraton = constant_decl | function_decl | procedure_decl .
Except for a change in the algorithm head, a procedure declaration in EDMexpressX is similar to a procedure declaration in the EXPRESS language. ENTITY and TYPE declarations are not supported in EDMexpressX. More than one constant declaration is allowed, and the constant declarations are not restricted to be the first declarations in an algorithm head.
The scope of a procedure identifier is the schema, function, procedure, map, statements or compose declaration in which the procedure declaration occurs.