*! version 1.0.0 MLB 04Apr2009
program define mkspline2, rclass
	syntax anything(equalok) [if] [in] [fweight] , [cubic *]
	
// only do something different when restricted cubic splines are created
	if "`cubic'" == "" {
		mkspline `0'
	}
	
	else {
// the spline variables are the new variables created with -mkspline-
		unab before : _all
		mkspline `0'
		unab after : _all
		local splines : list after - before
		
// the oldvar is the first variable after the = sign in anything
		gettoken a b : anything, parse("=")
		gettoken a b : b, parse("=")
		local oldvar : word 1 of `b'

// the knot locations are stored in the matrix r(knots)				
		tempname knotmat
		matrix `knotmat' = r(knots)
		forvalues k = 1/`r(N_knots)' {
			local k = el(`knotmat',1,`k')
			local knots "`knots' `k'"
		}
		local knots : list retokenize knots

// leave the results behind in characteristics
		char define _dta[rcsplines] "`splines'"
		char define _dta[oldvar] "`oldvar'"
		char define _dta[knots] "`knots'"

// leave knots behind in matrix r(knots) in order to be consistent with the behavior of -mkspline-		
		return matrix knots `knotmat'
	}
end