Couple of quick things..

$test = NOTICE <= no quotes around NOTICE

Call "$path\$runenabled" <= variables in strings - would be better as
Call $Path + '\' | $RunEnabled

Also, I guess you have something like
 Code:
$MyPath = 'c:\somewhere\enabled'
Run_Enabled($MyPath)
somewhere to call the function?

I've added some comments and debug statements to your code. Since you're only interested in .KIX files, I've eliminated the checks for "." and ".kix". Those were necessary in my example because I searched for .KXF and .UDF files.

 Code:
Function RUN_ENABLED($path)
  $count = 0
  $runenabled = Dir($path + '\*.KIX')
  While $runenabled <> '' AND @ERROR = 0
 ;;;   If Left($runenabled, 1) <> '.'
 ;;;     If Right($runenabled, 4) = '.kix'
        'Loading ' $Path + '\' + $runenabled ' into memory' ?
        CALL $path + '\' + $runenabled		; Load into memory
        If Open(3,$path + '\' + $runenabled,2) = 0 ; open the function file
          $Line = Trim(ReadLine(3)) ; read the line, remove all leading/trailing spaces
          While @ERROR = 0 			; loop until EOF error
            If InStr($Line, 'Function') = 1	; does the line contain a Function declaration?
              ; Line should look like:
              ; 1234567890123...
              ; Function MyFunc(arg)
              ; so get the data starting at the 10th char and continue to the "(" char
              $Fn = Trim(Split(SubStr($Line, 10), '(')[0])
              'Calling ' $Fn ?
              Execute ($Fn + '()' ; This string might need to be built to contain args.
              ;CALL NOTICE
            EndIf
            $Line = Trim(ReadLine(3)) 		; Get the next line
          Loop
          $ = Close(3)				; done, close the input file
        EndIf  ; open success   
 ;;;     EndIf  ; .kix file
 ;;;   EndIf  ; not a dir file
  $runenabled = Dir()				; find next file
  Loop  
EndFunction

Adding diagnostic messages in your code is an important part of development. Without them, you can only guess as to what's happening. You might want to use a RedirectOutput statement so they are saved to a log file.

Another comment - "?" is not a shortcut for the "print" command like it is in BASIC. It's actually a shortcut for the CRLF - "?" and @CRLF are interchangable, and generally would occure AFTER the text is output, not before.

Also - a personal preference with a reason. I use single quotes to surround strings unless the string contains a contraction (like "can't"), when I use double quotes. The reason is that DOS commands usually require double quotes, so - if you Shell or Run O/S commands, you'll need to surround your commands in "'" so you can embed the " chars for the O/S commands.

Glenn


Edited by Glenn Barnas (2007-10-03 01:34 PM)
Edit Reason: Adjusted for Richard's Execute correction
_________________________
Actually I am a Rocket Scientist! \:D