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