                     ----------  Declear Routine  ----------

 "declear routine" ϥޥɤǤϤޤ󡣤 "create module" ޥɤ
ɤΤ褦ʥ롼⥸塼äƤ뤫򿽹𤷤ޤ

ܺ٤ʾϡcreate a module ǻȤǤޡ

          help module;ϤƲ

ĤμΥ롼󤬤ޤ: procedure, function, operator  
aggregate function Ǥ

1) Procedure :

  [declare] procedure PROC_NAME

  ( [ [| in  |] [PARAM_NAME] DATATYPE {, [| in  |] [PARAM_NAME] DATATYPE} ] )
       | out |                            | out |
       |inout|                            |inout|

  [allocate workspace | INTERGER |]
                      | VARIABLE |

  external [begin expression BEGIN_EXPR_NAME]
           
           [name EXT_NAME] 
   
           [end expression END_EXPR_NAME]

  [ parameter style | general | ]
                    |   sql   |

  ץˤϣΥѥ᡼⡼ɤޤ: "in", "out"  "inout"
Ǥά "in" Ȥʤޤ    
      
  άΥѥ᡼ "general" Ǥ

2) Function :

  [declare] function FUNC_NAME

  ( [ [in] [PARAM_NAME] DATATYPE {, [in] [PARAM_NAME] DATATYPE} ] )

  returns DATATYPE 
  
  [allocate workspace | INTERGER |]
                      | VARIABLE |

  external [begin expression BEGIN_EXPR_NAME]
           
           [name EXT_NAME] 
   
           [end expression END_EXPR_NAME]

  [ parameter style | general | ]
                    |   sql   |
      
  άѥ᡼ "general" Ǥ

3) Operator :

  [declare] operator | prefix             | OPER_NAME
                     | postfix            |
                     | infix [PRECEDENCE] |
                     | comparison         |
                     | equality           |

  ( [ [in] [PARAM_NAME] DATATYPE {, [in] [PARAM_NAME] DATATYPE} ] )

  returns DATATYPE 
  
  [allocate workspace | INTERGER |]
                      | VARIABLE |

  external [begin expression BEGIN_EXPR_NAME]

           [name EXT_NAME] 
   
           [end expression END_EXPR_NAME]

  [ parameter style | general | ]
                    |   sql   |
      
  boolean ڥ졼Ǥ PRECEDENCE  1 ޤ 2 (ά)򥻥åȤޤ
arithmetic ڥ졼Ǥ PRECEDENCE  1, 2, 3, 4 (ά), 5, 6, "right" 
Τ줫򥻥åȤޤ
  
  άΥѥ᡼ϡ "general" Ǥ

4) Aggregate function :

  [declare] aggregate function AGGR_FUNC_NAME

  ( [in] [PARAM_NAME] DATATYPE {, [in] [PARAM_NAME] DATATYPE} )

  returns DATATYPE 
  
  [allocate workspace | INTERGER |]
                      | VARIABLE |

  external [begin expression BEGIN_EXPR_NAME]
           
           begin group BEGIN_GRP_NAME

           body BODY_NAME 
 
           end group END_GRP_NAME
  
           [end expression END_EXPR_NAME]

  [ parameter style | general | ]
                    |   sql   |
      
  άΥѥ᡼ϡ"general" Ǥ

