Domokos Vekas wrote: > Is there a simple rule for when to use # ? The rule is only moderately simple. It is however very silly, er, a lovable idiosyncrasy inherited from early versions of FB.  Check the toolbox definition, in this case: toolbox fn FD_FSSpecCreatePath( FSSpec *spec, CFStringRef *outPath ) = OSStatus  If the parameter of interest has a '*', that parameter is marked by FBtoC as being pass-by-reference.  When a function call is processed by FBtoC, simple variable arguments corresponding to pass-by-reference parameters have their address taken, as though you had prefixed the variable with '@'. Thus the two calls below would generate the same (in this case obviously wrong) C code: dim as ^FSSpec fs fs = ... fn FD_FSSpecCreatePath( fs, ... ) fn FD_FSSpecCreatePath( @fs, ... )  The behaviour in  can be overridden by the prefix '#', which means 'I want this argument to be passed by value'. fn FD_FSSpecCreatePath( #fs,... ) Robert P.