***********************************************************************; * Version 3.1 July 20, 1994 *; ***********************************************************************; START _SETOPT_( OPT_ON, OPT_OFF, _ECODE_, _OPT_, _PNAME_, _MNEMON_, _MODNMS_ ); *___________________________________________________________________* * This module sets options. The options specified by the user in the vector OPT_ON are "Turned on" (SET = 1), while those in the vector OPT_OFF are "Turned off" (SET = 0). If an option is specified in both vectors, its status is not changed. If neither OPT_ON or OPT_OFF is specified, the default options are restored. Inputs OPT_ON, OPT_OFF, _ECODE_, _OPT_, _PNAME_, _MNEMON_, _MODNMS_ Outputs _OPT_ _ECODE_ *___________________________________________________________________*; * Some modest input validity checks; IF (NROW(_ECODE_)=0)|(NROW(_OPT_ )=0) THEN DO; PRINT "One or more system matrix does not exist. " , "_ECODE_ and _OPT_ were checked. " ,, "------------SETOPT, LINMOD, and IML stopped.------------" , "------------SETOPT, LINMOD, and IML stopped.------------" , "------------SETOPT, LINMOD, and IML stopped.------------" ; ABORT; END; IF _OPT_(| 1 , 5 |) = 0 THEN DO; NOTES_1 = { "**************************************" , "** BEGIN SETOPT **" , "**************************************" }; PRINT , NOTES_1 , ; END; IF _ECODE_(| 1 , 1 |) > 2000 THEN DO; PRINT ,, "SETOPT: Options not reset due to previous SETOPT errors"; RETURN; END; _ON1_ = J( NROW( _OPT_ ) , NCOL( _OPT_ ) , 0); _OFF1_ = _ON1_; _OLDINF_=_OPT_(|1,2|); * Store LISTINFO status on entry; * Check to see if selected options are valid requests ; IF (NCOL( OPT_ON )>0) | (NCOL(OPT_OFF)>0) THEN DO; _T1_ = OPT_ON || OPT_OFF ; _ERR = SETDIF( _T1_, _PNAME_ ); IF NROW( _ERR ) ^= 0 THEN DO; _ECODE_ (| 1 , 1 |) = 9001; PRINT ,, "SETOPT: Bad option name specified for OPT_ON or OPT_OFF" , _ERR (| FORMAT = $8. |) ; END; END; * Check to see if any name errors have occured.... ; IF _ECODE_(| 1 , 1 |) > 2000 THEN DO; NOTES_2={"SETOPT: Options not reset due to errors noted above." , " : The names currently allowed are below. "}; PRINT ,, NOTES_2, ; _T1_ = _PNAME_`; PRINT , _T1_ (| ROWNAME=_MNEMON_ COLNAME=_MODNMS_ FORMAT=$8. |); RETURN; END; * ELSE no errors detected, reset _OPT_ by making changes specified * in OPT_ON &/or OPT_OFF; IF NCOL( OPT_OFF ) > 0 | NCOL( OPT_ON ) > 0 THEN DO; IF NCOL( OPT_ON ) > 0 THEN DO _I1_ = 1 TO NCOL( OPT_ON ); _OPT_ = _OPT_ <> ( _PNAME_ = OPT_ON(| 1, _I1_ |) ); END; IF NCOL( OPT_OFF ) > 0 THEN DO _I1_ = 1 TO NCOL( OPT_OFF ); _OPT_ = _OPT_ # ( _PNAME_ ^= OPT_OFF(| 1, _I1_ |) ); END; END; * of do group for resetting options; * Set the default options if neither OPT_ON or OPT_OFF IS DEFINED; IF (NCOL(OPT_ON)=0) & (NCOL(OPT_OFF)=0) THEN DO; NOTES_3 = { "SETOPT : Neither OPT_ON or OPT_OFF specified" , "Default options restored" } ; IF _OPT(|1,5|)=0 THEN PRINT , NOTES_3 , ; RUN _DEFOPT_( _OPT_ ); END; * Print ALL available options for user if requested ; __ = _PNAME_` ; IF _OPT_(| 1 , 1 |) = 1 THEN DO; RESET NONAME ; PRINT ,, "Options available" , __ (| ROWNAME = _MNEMON_ COLNAME = _MODNMS_ FORMAT = $8. |); RESET NAME ; END; *Print options to be modified (to new values) if requested; IF _OPT_(| 1 , 4 |) = 1 THEN DO; IF NCOL( OPT_ON )>0 THEN PRINT ,, "OPT_ON = Options turned on" , OPT_ON (| FORMAT = $8. |); IF NCOL( OPT_OFF )>0 THEN PRINT , "OPT_OFF = Options turned off" , OPT_OFF (| FORMAT = $8. |); END; *Print current option settings if requested; IF _OPT_(| 1 , 3 |) = 1 THEN DO; _BLANK1_ = { "" }; _T1_ = J( NROW( _OPT_), NCOL( _OPT_ ), " " ); DO _I1_ = 1 TO NROW( _OPT_ ); DO _I2_ = 1 TO NCOL( _OPT_ ); IF _OPT_(|_I1_,_I2_|)=1 THEN _T1_(|_I1_,_I2_|)=_PNAME_(|_I1_,_I2_|); ELSE _T1_(| _I1_, _I2_ |) = _BLANK1_ ; END; END; __ = _T1_`; PRINT , "Options currently turned on" , __ (| ROWNAME=_MNEMON_ COLNAME=_MODNMS_ FORMAT=$8. |); END; * Give user list of data available (if requested) ; IF (_OPT_(|1,2|)=1) & (_OLDINF_=0) THEN PRINT "Information available after module has completed. " , " Module Option Matrix Name Row Label Colmn Label" , "__________________________________________________________" , "FITMODEL BETA,EXBETA _BETA_ _XNAME_ _YNAME_ " , " | EXBETA _BPVAL_ _XNAME_ _YNAME_ " , " | EXBETA _BSE_ _XNAME_ _YNAME_ " , " | EXBETA _BT_ _XNAME_ _YNAME_ " , " | SIGMA _SIGMA_ _YNAME_ _YNAME_ " , " | SCORR _ECORR_ _YNAME_ _YNAME_ " , " | UNIBETA _PARM1_ ---- _PM1CNM_ " , " | UNIBETA _STAT_ _STRNM_ _YNAME_ " , "FITMODEL XPXINV _XPXINV_ _XNAME_ _YNAME_ " , "TESTGLH THETA _THETA_ _THRNM_ _THCNM_ " , " | MID _MID_ _THRNM_ _THRNM_ " , " | MATTHETA _SDTHTA_ _THRNM_ _THCNM_ " , " | MATTHETA _TTHTA_ _THRNM_ _THCNM_ " , " | MATTHETA _PVTHTA_ _THRNM_ _THCNM_ " , " | UNITHETA _FSTATS_ _FSTRNM_ _THCNM_ " , " | MSH _MSH_ _THRNM_ _THCNM_ " , " | MSE _MSE_ _THRNM_ _THCNM_ " , " | ECORR _ECORR_ _THCNM_ _THCNM_ " , " | HEIVAL _HEIVAL_ _CANNM_ _NONM_ " , " | CANVEC _CANVEC_ _THCNM_ _CANNM_ " , " | CANRSQ _CANRSQ_ _CANNM_ _NONM_ " , " | MULTTEST _STMAT1_ _STMRNM_ _STMCNM_ " , " | MULTTEST _TPARM1_ _NONM_ _TPCNM1_ " , " | RSQUARED (attached to _FSTATS_) " , "TESTGLH UNIREP _URESUL_ _UCOLNM_ _UROWNM_ " ; FINISH _SETOPT_;