| **Navigation:**  [[introduction.htm|Language Reference]] > 2 - Program Source Code Format > Prototype Attributes >====== TYPE (specify PROCEDURE type definition) ====== | [[replace set replacement constructor or destructor .htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[virtual set virtual method .htm|{{btn_next_n.gif|Next page}}]] | | || **TYPE** {{blk2blue.jpg|blk2blue.jpg}} The **TYPE** attribute specifies a prototype that does not reference an actual PROCEDURE. Instead, it defines a prototype //name// to use in other prototypes to indicate the type of procedure passed to another PROCEDURE as a parameter. When the //name// of the TYPEd prototype is used in the //parameter list// of another prototype, the procedure being prototyped will receive, as a passed parameter, the label of a PROCEDURE that has the same type of //parameter list// (and has the same //return type//, if it returns a value). **Example:** ** MAP** **ProcType PROCEDURE(FILE),****TYPE****       !Procedure-parameter type definition** **MyFunc3  PROCEDURE(ProcType),STRING !ProcType procedure-parameter, returning a STRING,** ** END                                ! must be passed the label of a procedure that ** **                                    !takes a FILE as a required parameter** **See Also:** [[procedure prototypes.htm|PROCEDURE Prototypes]] [[prototype parameter lists.htm|Prototype Parameter Lists]]