/* _gtvnot.ado 10-5-2000 By David Kantor, Institute for Policy Studies, Johns Hopkins University. This is a user-added feature for Stata's egen command. As such, it goes in c:\ado rather than c:\stata\ado\_. This is a three-valued logic NOT function in an egen context. It is based on the earlier tvlnot.ado, but this is now set in the context of egen; consequently, it uses egen grammar. This is part of a suite of three-valued logic egen utilities: tvnot, rtvor, rtvand, tvor, tvand. (There are also tvlnot, tvlor, & tvland. Those are earlier, less complete versions, which stand as separate programs; they are not egen utilities. These egen utilities are to be preferred.) (This does not have "r" in the name, as do some of the others, since it is not a "row" operation. But it is not really a column operation either. It is just a function, set in the egen context.) This borrows ideas from c:\stata\ado\_\_gmax.ado and _gcount.ado. */ *! version 2.2 11/27/2000 program define _gtvnot version 5.0 if "`1'" == " " { local typ1 "byte" } else { local typ1 "" } /* We use typ1 to force a type of byte as a default. egen sends a value of one single space if the type was not specified. */ local varlist "req new max(1)" local exp "req nopre" local if "opt" local in "opt" parse "`typ1' `*'" tempvar x quietly { gen double `x'=`exp' replace `varlist'= cond(`x'==., ., ~`x') `if' `in' } end