if ( ! empty( InputFile.Reserved3 ) ) ? ? "Custom Properties and Methods:" ? lnCustom = memlines( InputFile.Reserved3 ) - 1 dimension laCustom[m.lnCustom, 4] lnLength = 0 for i = 1 to m.lnCustom * parse out name and comment lcCustom = mline( InputFile.Reserved3, i ) j = at( ' ', m.lcCustom ) if ( j > 0 ) laCustom[i,1] = left( m.lcCustom, j - 1 ) laCustom[i,2] = substr( m.lcCustom, j + 1 ) else laCustom[i,1] = m.lcCustom laCustom[i,2] = "" endif * determine whether it's a property, method or array c = left( laCustom[i,1], 1 ) do case case ( c == '*' ) laCustom[i,3] = 'M' case ( c == '^' ) laCustom[i,3] = 'A' otherwise laCustom[i,3] = 'P' endcase if ( laCustom[i,3] != 'P' ) * strip off marker character laCustom[i,1] = substr( laCustom[i,1], 2 ) endif laCustom[i,1] = CorrectCase( laCustom[i,1] ) laCustom[i,4] = ( laCustom[i,1] $ InputFile.Protected ) lnLength = max( m.lnLength, len( laCustom[i,1] ) ) endfor * sort properties and methods and output = asort( laCustom ) lnLength = lnLength + 1 for i = 1 to m.lnCustom if ( laCustom[i,4] ) ? " Protected " else ? " Public " endif do case case ( laCustom[i,3] $ "PA" ) ?? " Property " case ( laCustom[i,3] $ "M" ) ?? " Method " endcase ?? padr( laCustom[i,1], lnLength ) ?? laCustom[i,2] endfor else lnCustom = 0 endif>Where can I find details for tidbits such as this one. I am trying to write an FPD to VFP converter and would like to know where is the best palce to define variables to have scope throughout the form, and where is the best place to place the functions/procedures (without using read-compatibility).