****************************************************************************** * * Routine to handle UniVerse SQLCO Server Parameters Management * * Module %M% Version %I% Date %H% * * (c) Copyright 1998 Ardent Software Inc. - All Rights Reserved * This is unpublished proprietary source code of Ardent Software Inc. * The copyright notice above does not evidence any actual or intended * publication of such source code. * ******************************************************************************* * * Maintenence log - insert most recent change descriptions at top * * Date.... GTAR# WHO Description........................................ * 10/14/98 23801 SAP Change copyrights. * 10/08/93 12380 CSM comments, cleanup * 10/05/93 ---- CSM Initial programming * ******************************************************************************* $OPTIONS INFORMATION $INCLUDE UNIVERSE.INCLUDE FILENAMES.H $INCLUDE UNIVERSE.INCLUDE MTF.INCL.H common /sqlcocfg/ GNRC, IDBMS, SRVRS, CDBMS, PARMS, config2 ****************************************************************************** * SRVPARS is the combination of GNRC, IDBMS and CDBMS for all servers * lSRVPARS is the combination of SRVPARS and lSRVRS for the server at srvploc * * SRVPARS: Field n, Value 1 contains a user-configured server name * Value 2 contains the SV params separated by sub-value marks * Value 3 contains keywords of the SV params with SV marks * Value 4 contains the MV params separated by sub-value marks * lSRVPARS: Value 5 contains flags set for user-configured MV params * lSRVPARS: Value 6 contains flags set for user-configured SV params ****************************************************************************** * Various other variables ****************************************************************************** equ Default to 1 equ Y.N.Start to 17 ; * Starting location of y/n box ****************************************************************************** * Strings representing shell scripts to be executed and files used ****************************************************************************** Blank.Message = @SYS.BELL:UVREADMSG(071004,"") ****************************************************************************** temp=NULL CALL *ISUSER.B(0,temp) IF temp=0 THEN TPRINT UVREADMSG(071000,"") SLEEP 3 * STOP END help.message=CONVERT(@FM," ",UVREADMSG(073644,"")) ***************************************************************************** * go to all initialization routines ***************************************************************************** GOSUB init.vars ; * initialize local variables ****************************************************************************** * In this section, we draw the first screen, print the menu bar and help * areas, and put up the first title and form to fill out. ****************************************************************************** CALL *DRAW.SCRN.B(UVREADMSG(073834,""),1) CALL *HELP.PRINT.B(CONVERT(@FM," ",UVREADMSG(073802,"")),2) GOSUB init.menu ; * Initialize menu bar items CALL *MNU.BAR.PR.B(Menu.Bar,1) GOSUB init.form ; * Initialize forms to be used CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) CALL READ.CONFIG lSRVRS = SRVRS GOSUB create.lists ****************************************************************************** * Starting point for routines actual activity. Paint help message and * continue ****************************************************************************** help.loop: CALL *HELP.PRINT.B(form,1) ****************************************************************************** * Starting point for actual data input. Here we position the cursor to the * place of the secondary prompt and get the input character, which is returned * in special, if a special character was encountered, or in temp, is data * was entered. ****************************************************************************** input.loop: TPRINT form: ; * position cursor temp=temp.form CALL *CINPUT.B(SEC.PRMPT,temp,special,form,form) ****************************************************************************** * First section handles all the special characters. ****************************************************************************** IF special # 0 THEN ; * if special character encountered BEGIN CASE ****************************************************************************** * Special character was Function Key F10. FALSE menu bar, get more data * Unless operation = Maintain, then do menu bar actions... ****************************************************************************** CASE special = F.10 ; * Function key F10 was pressed action.value = 1 CALL *DO.MNU.BAR.B(Menu.Bar,action.value,form.size,form,temp.form) BEGIN CASE CASE action.value = 1 ; * ADD server parameter temp.form<1>="Add" modified=0 CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) IF temp.form<2>=NULL THEN CALL *HELP.BOX.B(5,5,50,UVREADMSG(073827,"")) END GOTO end.f10 CASE action.value = 2 ; * Delete current entry temp.form<1>="Delete" modified=0 GOTO end.f10 CASE action.value = 3 ; * List current parameters of server IF temp.form<2>=NULL THEN CALL *HELP.BOX.B(5,5,50,UVREADMSG(073827,"")) GOTO end.f10 END GOSUB prcurprms GOTO end.f10 CASE action.value = 10 ; * Modify parameter of server temp.form<1>="Modify" modified=0 GOTO end.f10 CASE action.value = 5 ; * Refresh screen flag = TRUE CALL *HELP.PRINT.B(NULL,3) CALL *YES.NO.BOX.B(Y.N.Start,UVREADMSG(073061,""),flag) IF flag=TRUE THEN form.line=2 temp.form<3>=NULL server.param=NULL lSRVRS=SRVRS END CASE action.value = 6 ; * Save changes flag=TRUE CALL *HELP.PRINT.B(NULL,3) CALL *YES.NO.BOX.B(Y.N.Start,UVREADMSG(073066,""),flag) IF flag=TRUE THEN GOSUB Write.Server form.line=2 CASE action.value = 7 ; * Exit flag = FALSE CALL *HELP.PRINT.B(NULL,3) CALL *YES.NO.BOX.B(Y.N.Start,UVREADMSG(073066,""),flag) IF flag=TRUE THEN GOSUB Write.Server END STOP @(-1) CASE action.value = 4 ; * help on Application message=UVREADMSG(073808,"") CONVERT @FM TO " " IN message CALL *HELP.BOX.B(4,10,60,message) CASE action.value = 8 ; * help on Keys message=UVREADMSG(076001,"") CONVERT @FM TO " " IN message CALL *HELP.BOX.B(3,10,60,message) CASE action.value = 9 ; * help on version CALL *HELP.BOX.B(6,4,45,UVREADMSG(076000,"")) END CASE end.f10: CALL *PUT.FORM.B(form.size, form, temp.form, PRMPT,1) GOTO help.loop ; * repaint and get new value ****************************************************************************** * Up arrow was pressed. ****************************************************************************** CASE special = UP.ARROW ; * Up arrow was pressed TPRINT form:PRMPT: IF temp.form # NULL THEN TPRINT temp.form: TPRINT STR(SPACE,form-LEN(temp.form)) END form.line-=1 IF form.line < 2 THEN form.line=form.size END GOTO help.loop ; * get more input ****************************************************************************** * Down arrow was pressed. ****************************************************************************** CASE special = DOWN.ARROW ; * Down arrow was pressed TPRINT form:PRMPT: IF temp.form # NULL THEN TPRINT temp.form: TPRINT STR(SPACE,form-LEN(temp.form)) END form.line+=1 IF form.line > form.size THEN form.line=2 END GOTO help.loop ; * get more input ****************************************************************************** * Function key F1 was pushed. This key is used to display more involved * Help messages ****************************************************************************** CASE special = F.1 CALL *HELP.PRINT.B(form,3) GOTO input.loop ; * get more input ****************************************************************************** * Escape key pressed. This is the systems signal to return to the calling * procedure. First clear the screen however ****************************************************************************** CASE special = ESCAPE ; * escape was pressed STOP @(-1) CASE special = F.4 temp="*" GOTO new.enter CASE Default GOTO help.loop END CASE ; * end of case END ; * end of if statement ****************************************************************************** * If we reach here, we must have had data input, which is returned from * *NINPUT in the variable temp. Therefore, process it and execute the * desired operation. ****************************************************************************** ELSE new.enter: sel.val=1 CALL *HELP.PRINT.B(NULL,3) ; * Clears help area jump=0 BEGIN CASE CASE form.line=2 IF temp="*" THEN CALL *HELP.PRINT.B(UVREADMSG(073058,""),2) CALL *HELP.PRINT.B(help.message,2) GOSUB prlstsrv CALL *HELP.PRINT.B(NULL,3) IF sel.val=-1 THEN temp=NULL CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END ELSE temp=sel.val temp.form=temp END CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) END IF temp=NULL THEN CALL *HELP.BOX.B(17,5,50,Blank.Message) GOTO help.loop END IF NOT(temp MATCHES "1A0X") THEN CALL *HELP.BOX.B(17,5,50,UVREADMSG(073814,"")) temp.form=NULL server.name=NULL CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END locname=temp gosub locatesrvr IF srvrloc=0 THEN ; * Server does not exist CALL *HELP.BOX.B(5,5,50,UVREADMSG(073835,temp)) temp.form=temp server.name=temp CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END temp.form=temp server.name=temp CASE form.line=3 ; * Enter Parameter IF temp="?" THEN CALL *HELP.PRINT.B(UVREADMSG(073058,""),2) CALL *HELP.PRINT.B(help.message,2) GOSUB prlstprms CALL *HELP.PRINT.B(NULL,3) IF sel.val=-1 THEN temp=NULL ELSE temp=sel.val:" = " temp.form=temp END CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END IF modified=1 OR temp.form<1>="Add" AND temp=NULL THEN CALL *HELP.BOX.B(17,5,50,Blank.Message) temp.form<3>=NULL server.param=NULL modified=0 GOTO help.loop END IF temp="*" THEN CALL *HELP.PRINT.B(UVREADMSG(073058,""),2) CALL *HELP.PRINT.B(help.message,2) GOSUB prcurprms CALL *HELP.PRINT.B(NULL,3) IF sel.val=-1 THEN temp=NULL ELSE temp=sel.val temp.form=temp server.param = temp END CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END IF NOT(temp=NULL) AND NOT(temp MATCHES "1A0X") THEN CALL *HELP.BOX.B(17,5,50,UVREADMSG(073833,"")) temp.form=NULL CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END IF NOT(temp=NULL) THEN param = upcase(field(temp, ' ', 1)) locate param in PARMS<1> by "AL" setting loc else CALL *HELP.BOX.B(17,5,50,UVREADMSG(073840,param)) temp.form=NULL CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END eqpos=index(temp, '=', 2) IF NOT(eqpos=0) THEN IF NOT(field(temp,' ',2)='=') OR field(temp,' ',3)=NULL OR NOT(field(temp,' ',4)='=') OR field(temp,' ',5)=NULL OR index(temp,' ',5) THEN CALL *HELP.BOX.B(17,5,50,UVREADMSG(073852,"")) temp.form=temp CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END END ELSE IF index(temp,' ',3) THEN CALL *HELP.BOX.B(17,5,50,UVREADMSG(073841,"")) temp.form=temp CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END IF param="MAPERROR" OR param="SQLTYPE" THEN CALL *HELP.BOX.B(17,5,50,UVREADMSG(073852,"")) temp.form=temp CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END END eqpos=index(temp, ' = ', 1) IF eqpos=0 OR NOT(field(temp,' ',2)='=') OR field(temp,' ',3)=NULL THEN CALL *HELP.BOX.B(17,5,50,UVREADMSG(073841,"")) temp.form=temp CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop END temp[1,eqpos]=upcase(temp[1,eqpos]) END temp.form = temp server.param = temp END CASE END IF form.line > 2 AND server.name=NULL THEN CALL *HELP.BOX.B(17,5,50,Blank.Message) form.line=2 GOTO help.loop END locname=server.name gosub locatesrvr IF srvrloc=0 THEN CALL *HELP.BOX.B(17,5,50,UVREADMSG(073835,server.name)) form.line=2 GOTO help.loop END TPRINT form:PRMPT:temp.form: TPRINT STR(SPACE,form-LEN(temp.form)): IF jump=1 THEN jump=0 form.line+=1 TPRINT form:PRMPT:temp.form: TPRINT STR(SPACE,form-LEN(temp.form)): END form.line +=1 IF form.line <= form.size THEN GOTO help.loop IF temp.form<1>="Delete" THEN GOSUB procdel IF temp.form<1>="Modify" AND temp.form<3> = NULL THEN GOSUB procmodify GOTO help.loop END IF temp.form<1>="Add" AND temp.form<3>=NULL THEN CALL *HELP.BOX.B(17,5,50,Blank.Message) form.line=3 GOTO help.loop END IF temp.form<1>="Add" OR temp.form<1>="Modify" THEN flag=FALSE CALL *YES.NO.BOX.B(Y.N.Start,UVREADMSG(073065,""),flag) IF flag = FALSE THEN GOSUB amparam END form.line = 2 CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) GOTO help.loop STOP @(-1) ****************************************************************************** * init.menu - * Routine that initializes Menu Bar values for Maintain Servers section * of code. ****************************************************************************** init.menu: scratch=UVREADMSG(073828,"") Menu.Bar = NULL Menu.Bar<1,1> = 3 ; * Number of Items in Menu.Bar Menu.Bar<1,2> = 2 ; * Line # on which to print the Menu Bar * First Item Menu.Bar<2,1,1>=scratch<1> ; * SubMenu Title Menu.Bar<2,1,2>=3 ; * # of items in SubMenu * SubMenu #1 Menu.Bar<2,2,1>=scratch<2> ; * SubMenu Item Menu.Bar<2,2,2>=5 ; * Action Code (Returned to calling process) Menu.Bar<2,2,3>=scratch<3> Menu.Bar<2,3,1>=scratch<4> Menu.Bar<2,3,2>=6 Menu.Bar<2,3,3>=scratch<5> Menu.Bar<2,4,1>=scratch<6> Menu.Bar<2,4,2>=7 Menu.Bar<2,4,3>=scratch<7> * Second Item Menu.Bar<3,1,1>=scratch<8> ; * SubMenu Title Action Menu.Bar<3,1,2>=4 ; * # of items in SubMenu * SubMenu #1 Menu.Bar<3,2,1>=scratch<9> ; * SubMenu Item Add Menu.Bar<3,2,2>=1 ; * Action Code Menu.Bar<3,2,3>=scratch<10> Menu.Bar<3,3,1>=scratch<11> ; * SubMenu Item Delete Menu.Bar<3,3,2>=2 ; * Action Code Menu.Bar<3,3,3>=scratch<12> Menu.Bar<3,4,1>=scratch<13> ; * SubMenu Item List Menu.Bar<3,4,2>=3 ; * Action Code Menu.Bar<3,4,3>=scratch<14> Menu.Bar<3,5,1>=scratch<15> ; * SubMenu Item Modify Menu.Bar<3,5,2>=10 ; * Action Code Menu.Bar<3,5,3>=scratch<16> scratch=UVREADMSG(073089,"") Menu.Bar<4,1,1>=scratch<1> Menu.Bar<4,1,2>=3 Menu.Bar<4,2,1>=scratch<2> Menu.Bar<4,2,2>=4 Menu.Bar<4,2,3>=scratch<3> Menu.Bar<4,3,1>=scratch<4> Menu.Bar<4,3,2>=8 Menu.Bar<4,3,3>=scratch<5> Menu.Bar<4,4,1>=scratch<6> Menu.Bar<4,4,2>=9 Menu.Bar<4,4,3>=scratch<7> RETURN ****************************************************************************** * Init.form * This routine initializes all the positional parameters, help strings, * text strings, and default values for the form used in this subroutine ****************************************************************************** init.form: form.size=3 form=NULL scratch=UVREADMSG(073829,"") form<1,1>=@(5,5) ; * Start of Field Text form<1,2>=@(17,5) ; * Start of Field Data form<1,3>=scratch<1> ; * Message File Field Text form<1,4>="" ; * Message File Field Help form<1,5>="" ; * Message File Field long help, if any form<1,6>=10 ; * Field data length form<1,7>=1 ; * Field data upper-case form<2,1>=@(5,7) form<2,2>=@(17,7) form<2,3>=scratch<2> form<2,4>=scratch<3> form<2,5>=form<2,4> form<2,6>=31 form<2,7>=1 form<3,1>=@(5,8) form<3,2>=@(17,8) form<3,3>=scratch<4> form<3,4>=scratch<5> form<3,5>=scratch<6> form<3,6>=60 form<3,7>=1 temp.form<1>="Add" RETURN ****************************************************************************** * Write.Server - * This routine will write out the various lists to the configuration file. ****************************************************************************** Write.Server: rewrite: openseq config2 to cfgfile else retry=0 m1=UVREADMSG(073800,"") call *ERROR.BOX.B(10,3,0,UVREADMSG(073005,config2),retry,m1) if retry#0 then stop @(-1) else goto rewrite end line=1 OK=1 m1=UVREADMSG(073818,"") writeseq "[ODBC DATA SOURCES]" to cfgfile else goto writeerr for i=1 to dcount(lSRVRS,@FM) writeseq "<":lSRVRS:">" to cfgfile else goto writeerr writeseq lSRVRS to cfgfile else goto writeerr writeseq lSRVRS to cfgfile else goto writeerr writeseq lSRVRS to cfgfile else goto writeerr writeseq lSRVRS to cfgfile else goto writeerr svpars = dcount(lSRVRS,@SVM) for k=1 to svpars writeseq lSRVRS to cfgfile else goto writeerr next k mvpars = dcount(lSRVRS,@SVM) for k=1 to mvpars writeseq lSRVRS to cfgfile else goto writeerr next k next i for i=1 to dcount(CDBMS,@FM) writeseq "[":CDBMS:"]" to cfgfile else goto writeerr svpars = dcount(CDBMS,@SVM) for k=1 to svpars writeseq CDBMS to cfgfile else goto writeerr next k mvpars = dcount(CDBMS,@SVM) for k=1 to mvpars writeseq CDBMS to cfgfile else goto writeerr next k next i weofseq cfgfile closeseq cfgfile SRVRS = lSRVRS CALL *HELP.BOX.B(5,5,50,UVREADMSG(073816,"")) goto end.wr.server writeerr: m1=UVREADMSG(073818,"") retry=0 CALL *ERROR.BOX.B(5,9,0,UVREADMSG(073070,config2),retry,m1) IF retry#0 THEN STOP @(-1) GOTO rewrite end.wr.server: RETURN ****************************************************************************** * Init.vars - * Routine which initializes various global variables ****************************************************************************** init.vars: form.line = 2 temp.form = NULL server.name=NULL server.param=NULL modified=0 RETURN ****************************************************************************** * Prlstsrv - * Routine which prints the list of servers ****************************************************************************** prlstsrv: heading="" heading=UVREADMSG(073813,"") IF lSRVRS="" THEN srvn=0 ELSE srvn = dcount(lSRVRS, @FM) print.array="" print.count=srvn FOR i = 1 TO srvn print.array = lSRVRS NEXT i IF srvn = 0 THEN print.array<1>=UVREADMSG(073812,"") print.count=1 END sel.val=1 CALL *LIST.BOX.B(heading,4,10,print.array,print.count,1,sel.val,0) IF sel.val=-1 THEN RETURN IF srvn=0 THEN sel.val=-1 else sel.val=print.array RETURN ****************************************************************************** * Prlstprms - * Routine which prints the list of parameters ****************************************************************************** prlstprms: heading="" heading=UVREADMSG(073830,"") print.array = PARMS print.count = dcount(PARMS, @FM) IF print.count = 0 THEN print.array<1>=UVREADMSG(73832,"") print.count=1 END sel.val=1 CALL *LIST.BOX.B(heading,4,10,print.array,print.count,1,sel.val,0) IF sel.val=-1 THEN RETURN sel.val=print.array RETURN ****************************************************************************** * Prcurprms - * Routine which prints the list of currently set parameters ****************************************************************************** prcurprms: heading="" heading=UVREADMSG(073831,"") * Go through List 6 and pick out the relevant parameters for this server srvploc = 0 if SRVPARS[1, len(server.name)+1] = server.name:@VM then srvploc = 1 else loc = index(SRVPARS, @FM:server.name:@VM, 1) if loc then srvploc = dcount(SRVPARS[1,loc], @FM) end print.array = "" IF srvploc = 0 THEN print.array<1,1>=UVREADMSG(73835,server.name) print.count=1 END ELSE GOSUB combine.lists svc = dcount(lSRVPARS, @SVM) mvc = dcount(lSRVPARS, @SVM) print.count = svc + mvc FOR i = 1 TO svc print.array = lSRVPARS IF lSRVPARS="1" THEN print.array="User" ELSE print.array="" NEXT i FOR i = 1 TO mvc print.array = lSRVPARS IF lSRVPARS="1" THEN print.array="User" ELSE print.array="" NEXT i END IF print.count = 0 THEN print.array<1,1>=UVREADMSG(73832,"") print.count=1 END sel.val=1 CALL *LIST.BOX.B(heading,4,10,print.array,print.count,2,sel.val,0) IF srvploc=0 OR svc+mvc=0 THEN sel.val=-1 IF sel.val=-1 THEN RETURN sel.val=print.array RETURN ****************************************************************************** * locatesrvr - * Routine which finds the location of locname in the list of servers lSRVRS ****************************************************************************** locatesrvr: srvrloc = 0 if lSRVRS[1, len(locname)+1] = locname:@VM then srvrloc = 1 else loc = index(lSRVRS, @FM:locname:@VM, 1) if loc then srvrloc = dcount(lSRVRS[1,loc], @FM) end RETURN ****************************************************************************** * create.lists - * Routine which creates the lists required for this menu. ****************************************************************************** create.lists: SRVPARS = "" TMPL = "" * Move Generic parameters to TMPL for i=1 to dcount(GNRC,@FM) for j=1 to dcount(GNRC,@VM) for k=1 to dcount(GNRC,@SVM) if index(GNRC, ' = ', 2) then locate GNRC in TMPL<1,4,1> by "AL" setting loc else TMPL = insert(TMPL,1,4,loc,GNRC) end end else param = field(GNRC, ' ', 1) locate param in TMPL<1,3,1> by "AL" setting loc else TMPL = insert(TMPL,1,2,loc,GNRC) TMPL = insert(TMPL,1,3,loc,param) end end next k next j next i for srv=1 to dcount(lSRVRS,@FM) * For each server copy TMPL to SRVPARS SRVPARS = lSRVRS SRVPARS = TMPL<1,2> SRVPARS = TMPL<1,3> SRVPARS = TMPL<1,4> * Copy IDBMS parameters into SRVPARS dbmsname = trim(field(lSRVRS, "=", 2)) gosub locatedbms if NOT(dbmsloc=0) then for k=1 to dcount(IDBMS,@SVM) param = field(IDBMS, ' ', 1) locate param in SRVPARS by "AL" setting loc then SRVPARS = IDBMS else SRVPARS = insert(SRVPARS,srv,2,loc,IDBMS) SRVPARS = insert(SRVPARS,srv,3,loc,param) end next k for k=1 to dcount(IDBMS,@SVM) locate IDBMS in SRVPARS by "AL" setting loc else SRVPARS = insert(SRVPARS,srv,4,loc,IDBMS) end next k end * Copy CDBMS parameters into SRVPARS gosub loccdbms if NOT(dbmsloc=0) then for k=1 to dcount(CDBMS,@SVM) param = field(CDBMS, ' ', 1) locate param in SRVPARS by "AL" setting loc then SRVPARS = CDBMS else SRVPARS = insert(SRVPARS,srv,2,loc,CDBMS) SRVPARS = insert(SRVPARS,srv,3,loc,param) end next k for j=1 to dcount(CDBMS,@SVM) param = field(CDBMS, '=', 1) pval = field(CDBMS, '=', 3) curparam="" curpval="" nummvpars = dcount(SRVPARS,@SVM) for k=1 to nummvpars curpval = field(SRVPARS, '=', 3) if NOT(pval=curpval) then continue curparam = field(SRVPARS, '=', 1) if NOT(param=curparam) then continue loc = k k = nummvpars next k if param=curparam AND pval=curpval then SRVPARS = CDBMS else locate CDBMS in SRVPARS by "AL" setting loc else SRVPARS = insert(SRVPARS,srv,4,loc,CDBMS) end end next j end * Make Field 8 of lSRVRS to be the list of user configured SV parameter names for k=1 to dcount(lSRVRS,@SVM) param = field(lSRVRS, ' ', 1) locate param in lSRVRS by "AL" setting loc else lSRVRS = insert(lSRVRS,srv,8,loc,param) next k next srv SRVRS=lSRVRS TMPL = "" RETURN ****************************************************************************** * combine.lists - * Routine which combines the SRVPARS and lSRVRS lists into lSRVPARS. ****************************************************************************** combine.lists: * Copy SRVRS parameters into lSRVPARS lSRVPARS = SRVPARS for k=1 to dcount(lSRVRS,@SVM) param = field(lSRVRS, ' ', 1) locate param in lSRVPARS by "AL" setting loc then lSRVPARS = lSRVRS lSRVPARS = "1" end else lSRVPARS = insert(lSRVPARS,srvploc,2,loc,lSRVRS) lSRVPARS = insert(lSRVPARS,srvploc,3,loc,param) lSRVPARS = insert(lSRVPARS,srvploc,6,loc,"1") end next k for j=1 to dcount(lSRVRS,@SVM) param = field(lSRVRS, '=', 1) pval = field(lSRVRS, '=', 3) curparam="" curpval="" nummvpars = dcount(lSRVPARS,@SVM) for k=1 to nummvpars curpval = field(lSRVPARS, '=', 3) if NOT(pval=curpval) then continue curparam = field(lSRVPARS, '=', 1) if NOT(param=curparam) then continue loc = k k = nummvpars next k if param=curparam AND pval=curpval then lSRVPARS = lSRVRS lSRVPARS = "1" end else locate lSRVRS in lSRVPARS by "AL" setting loc else lSRVPARS = insert(lSRVPARS,srvploc,4,loc,lSRVRS) lSRVPARS = insert(lSRVPARS,srvploc,5,loc,"1") end end next j RETURN ****************************************************************************** * locatedbms - * Routine which finds the location of dbmsname in the list IDBMS ****************************************************************************** locatedbms: dbmsloc = 0 if IDBMS[1, len(dbmsname)+1] = dbmsname:@VM then dbmsloc = 1 else loc = index(IDBMS, @FM:dbmsname:@VM, 1) if loc then dbmsloc = dcount(IDBMS[1,loc], @FM) end RETURN ****************************************************************************** * loccdbms - * Routine which finds the location of dbmsname in the list CDBMS ****************************************************************************** loccdbms: dbmsloc = 0 if CDBMS[1, len(dbmsname)+1] = dbmsname:@VM then dbmsloc = 1 else loc = index(CDBMS, @FM:dbmsname:@VM, 1) if loc then dbmsloc = dcount(CDBMS[1,loc], @FM) end RETURN ****************************************************************************** * amparam - * Routine which adds or modifies the chosen parameter ****************************************************************************** amparam: modified=0 if index(server.param, ' = ', 2) then param = field(server.param, '=', 1) pval = field(server.param, '=', 3) curparam="" curpval="" nummvpars = dcount(lSRVRS,@SVM) for k=1 to nummvpars curpval = field(lSRVRS, '=', 3) if NOT(pval=curpval) then continue curparam = field(lSRVRS, '=', 1) if NOT(param=curparam) then continue loc = k k = nummvpars next k if param=curparam AND pval=curpval then lSRVRS = server.param end else lSRVRS = insert(lSRVRS,srvrloc,7,nummvpars,server.param) end else param = field(server.param, ' ', 1) locate param in lSRVRS by "AL" setting loc then lSRVRS = server.param else lSRVRS = insert(lSRVRS,srvrloc,6,loc,server.param) lSRVRS = insert(lSRVRS,srvrloc,8,loc,param) end end IF temp.form<1>="Add" THEN CALL *HELP.PRINT.B(UVREADMSG(073838,server.param),2) ELSE CALL *HELP.PRINT.B(UVREADMSG(073839,server.param),2) RETURN ****************************************************************************** * delparam - * Routine which deletes the chosen parameter ****************************************************************************** delparam: if index(server.param, ' = ', 2) then for k=1 to dcount(lSRVRS,@SVM) until server.param = lSRVRS next k if server.param = lSRVRS then lSRVRS = delete(lSRVRS,srvrloc,7,k) temp.form<3>=NULL CALL *HELP.PRINT.B(UVREADMSG(073825,server.name),2) end else CALL *HELP.BOX.B(17,5,50,UVREADMSG(073836,"")) end else locate server.param in lSRVRS by "AL" setting loc then lSRVRS = delete(lSRVRS,srvrloc,6,loc) lSRVRS = delete(lSRVRS,srvrloc,8,loc) temp.form<3>=NULL CALL *HELP.PRINT.B(UVREADMSG(073825,server.name),2) end else CALL *HELP.BOX.B(17,5,50,UVREADMSG(073836,"")) end RETURN ****************************************************************************** * procdel - * Routine which processes the delete option. ****************************************************************************** procdel: flag=FALSE CALL *HELP.PRINT.B(NULL,3) CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) form.line=3 IF server.param=NULL THEN GOSUB prcurprms IF sel.val=-1 THEN temp=NULL ELSE temp=sel.val temp.form=temp server.param=temp END CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) END IF server.param = NULL THEN RETURN CALL *YES.NO.BOX.B(17,UVREADMSG(073837,server.param),flag) IF flag=TRUE THEN GOSUB delparam ELSE CALL *HELP.PRINT.B(UVREADMSG(073826,server.name),2) RETURN ****************************************************************************** * procmodify - * Routine which processes the modify option. ****************************************************************************** procmodify: form.line=3 IF server.param=NULL THEN GOSUB prcurprms IF sel.val=-1 THEN temp=NULL ELSE temp=sel.val temp.form=temp server.param=temp END modified=1 END CALL *PUT.FORM.B(form.size,form,temp.form,PRMPT,1) RETURN STOP @(-1) END