And all these settings can be run from (as appropriate) ON BEFORE CONNECT, ON CONNECT using the latest and greatest having FULL support for RUN SELECT...

----- Original Message ----- From: "Dennis McGrath" <[EMAIL PROTECTED]>
To: "RBASE-L Mailing List" <[email protected]>
Sent: Friday, December 05, 2008 11:09 AM
Subject: [RBASE-L] - Re: Running 7.6 code from a batch?



Karen,

A long time ago, I cobbled up this code to check and fix the settings after connecting to a DB.
It was done for exatly the reason you are describing.
Our users were getting tired of waiting for the database to connect, especially as they open several sessions on each computer.


It does NOTHING TIME CONSUMING if all settings are correct.
If it does need to fix a setting it changes the user to the OWNER so the fixed setting will STICK.
It should be easy to cobble up one that matches your preferences.

All my modules to connect to databases call this module.

I would think this would be something that should be stored in an archive somewhere so others can learn from it.

This could be put into a codelocked module for security purposes.

Dennis McGrath


--FixSets.Cmd
--Fast Settings Checker/Fixer

SET VAR vConnUseFlag INTEGER = 0
SET VAR vTempConnUser TEXT = (CVAL('USER'))

SET VAR vOwnerSet = 'SET USER OwnerName' -- change to reflect correct owner name
-- SET VAR vOwnerSet = ' ' -- uncomment this line if no owner

SET VAR vSetting = 'Quotes'
SET VAR vTesting = (CHAR(39))
SET VAR vTmp = (CVAL(.vSetting))
IF vTmp <> .vTesting THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET QUOTES=''''
ENDIF

SET VAR vTmp = (CVAL('CASE'))
IF vTmp <> 'OFF' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET CASE OFF
ENDIF


SET VAR vTmp = (CVAL('IDQUOTES'))
IF vTmp <> '`' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET IDQUOTES='`'
ENDIF

SET VAR vTmp = (CVAL('RULES'))
IF vTmp <> 'ON' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET RULES ON
ENDIF

SET VAR vTmp = (CVAL('DELIMIT'))
IF vTmp <> ',' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET DELIMIT=','
ENDIF

SET VAR vTmp = (CVAL('LINEEND'))
IF vTmp <> 'þ' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET LINEEND='þ'
ENDIF

SET VAR vTmp = (CVAL('ROWLOCKS'))
IF vTmp <> 'ON' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET ROWLOCKS ON
ENDIF

SET VAR vTmp = (CVAL('WALKMENU'))
IF vTmp <> 'ON' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET WALKMENU ON
ENDIF


SET VAR vTmp = (CVAL('QUALCOLS'))
IF vTmp <> '2' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET QUALCOLS 2
ENDIF

SET VAR vTmp = (CVAL('WHILEOPT'))
IF vTmp <> 'OFF' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET WHILEOPT OFF
ENDIF


SET VAR vTmp = (CVAL('SINGLE'))
IF vTmp <> '_' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET SINGLE=NULL
 SET SINGLE=_
ENDIF

SET VAR vTmp = (CVAL('MANY'))
IF vTmp <> '%' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET MANY=NULL
 SET MANY=%
ENDIF

SET VAR vTmp = (CVAL('NULL'))
IF vTmp <> '-0-' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET NULL '-0-'
ENDIF


SET VAR vTmp = (CVAL('DATE FORMAT'))
IF vTmp <> 'MM/DD/YY' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET DATE FOR MM/DD/YY
ENDIF

SET VAR vTmp = (CVAL('DATE SEQUENCE'))
IF vTmp <> 'MMDDYY' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET DATE SEQ MMDDYY
ENDIF

SET VAR vTesting = (CVAL('DATE CENTURY'))
SET VAR vYearText = (CTXT(INT(FORMAT(.#DATE,'YYYY')) - 90))
SET VAR vTmp = (SGET(.vYearText,2,1))
IF vTmp <> .vTesting THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET DATE CENTURY &vTmp
ENDIF

SET VAR vTesting = (CVAL('DATE YEAR'))
SET VAR vTmp = (SGET(.vYearText,2,3))
IF vTmp <> .vTesting THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET DATE YEAR &vTmp
ENDIF

SET VAR vTmp = (CVAL('TIME FORMAT'))
IF vTmp <> 'HH:MM' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET TIME FOR HH:MM
ENDIF

SET VAR vTmp = (CVAL('TIME SEQUENCE'))
IF vTmp <> 'HHMMSS' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET TIME SEQ HHMMSS
ENDIF

SET VAR vTmp = (CVAL('ZERO'))
IF vTmp <> 'ON' THEN
 SET VAR vConnUseFlag = 1
 &vOwnerSet
 SET ZERO ON
ENDIF
IF vConnUseFlag = 1 THEN
 SET USER &vTempConnUser
ENDIF

RETURN


Reply via email to