             AST.scope = nil
             return -1
         }
+        
+        override func code(loc: Int) throws -> Int {
+            var loc1 = loc
+            let routine = AST.globalRoutineTable[ident]!
+            AST.scope = routine.scope
+            routine.adress = loc1
+            let params = routine.parameterList
+            for param in params {
+                throw ImplementationError.ToBeImplement
+                if(param.mechMode == MechModeType.REF){
+                    //TODO: no alloc needed
+                } else {
+                    let store = AST.scope!.storeTable[param.ident]
+                }
+            }
+            //TODO: What to do here?
+            
+            AST.scope = nil
+            return loc1
+        }
 	}
 
 	class DeclarationProcedure: Declaration {

            return (expressionType, valueSide)
        }
        
    }

	class ExpressionList: AST {

        }
        
        override func code(loc: Int) throws -> Int {
            throw ImplementationError.ToBeImplement
        }
	}

