code: def exit_proc(self, lineno):
          
          __DEBUG__('Exiting current scope from lineno %i' % lineno)
  
          if len(self.local_labels) <= 1:
              error(lineno, 'ENDP in global scope (with no PROC)')
              return
  
          for label in self.local_labels[-1].values():
              if label.local:
                  if not label.defined:
                      error(lineno, "Undefined LOCAL label '%s'" % label.name)
                      return
                  continue
  
              name = label.name
              _lineno = label.lineno
              value = label.value
  
              if name not in self.global_labels.keys():
                  self.global_labels[name] = label
              else:
                  self.global_labels[name].define(value, _lineno)
  
          self.local_labels.pop()  # Removes current context
          self.scopes.pop()
docs: Exits current procedure. Local labels are transferred to global
          scope unless they have been marked as local ones.
  
          Raises an error if no current local context (stack underflow)