Here is the "game plan"..
(1) Your original code (IF..ELSE). No ENDIFs used
(2) We'll run it through a parser to show what is going on
(3) Show the corrected version
(4) Show the optimized version.
(1) Your original code (IF..ELSE). No ENDIFs used
Looking at your original code -
Code:
IF INGROUP('LONGUP')
setdefaultprinter('\\mcsrv\LONGCSR')
ELSE
IF INGROUP('Mallory\LONGFC')
setdefaultprinter('\\mcsrv\LONGFC')
ELSE
IF INGROUP('Mallory\VANC')
setdefaultprinter('\\mcsrv\VANCCTR')
ELSE
IF INGROUP('Mallory\Rancho')
setdefaultprinter('\\mcsrv\RanchoCo')
ELSE
IF INGROUP('Mallory\SanBerna')
setdefaultprinter('\\mcsrv\SanBerna')
ELSE
IF INGROUP('Mallory\SanRosa')
setdefaultprinter('\\mcsrv\SanRosa')
ELSE
IF INGROUP('Mallory\SSFWareh')
setdefaultprinter('\\mcsrv\SSFWareh')
ELSE
IF INGROUP('Mallory\SSF')
setdefaultprinter('\\mcsrv\SSFLaser')
ELSE
? '[really really long marker]'
ENDIF
This absolutely will not work.
(2) We'll run it through a parser to show what is going on
If we take your original IF..ELSE structure and run it through a parser like KiXStrip, we see what is wrong:
Code:
IF INGROUP('LONGUP')
setdefaultprinter('\\mcsrv\LONGCSR')
ELSE
IF INGROUP('Mallory\LONGFC')
setdefaultprinter('\\mcsrv\LONGFC')
ELSE
IF INGROUP('Mallory\VANC')
setdefaultprinter('\\mcsrv\VANCCTR')
ELSE
IF INGROUP('Mallory\Rancho')
setdefaultprinter('\\mcsrv\RanchoCo')
ELSE
IF INGROUP('Mallory\SanBerna')
setdefaultprinter('\\mcsrv\SanBerna')
ELSE
IF INGROUP('Mallory\SanRosa')
setdefaultprinter('\\mcsrv\SanRosa')
ELSE
IF INGROUP('Mallory\SSFWareh')
setdefaultprinter('\\mcsrv\SSFWareh')
ELSE
IF INGROUP('Mallory\SSF')
setdefaultprinter('\\mcsrv\SSFLaser')
ELSE
? '[really really long marker]'
ENDIF
;($begin)
;
; wed 25-may-2005 21:00:30 (kix 4.20 vs 4.00e)
;
;Informative KIXSTRIP: input=27 output=27 skip=0
;
;Warning KIXSTRIP: 7 errors in block structure(s). missing statement(s).
; - do:until [0:0]
; - for|each:in|to:step|next [0|0:0|0:0|0]
; - function:endfunction [0:0]
; -ERROR- - if:else:endif [8:8:1]
; - select:case:endselect [0:0:0]
; - while:loop [0:0]
;Warning KIXSTRIP: some lines contains errors or possible errors.
;Informative KIXSTRIP: 8 block_structures found.
;Informative KIXSTRIP: no UDF's found.
;Informative KIXSTRIP: no labels found.
;Summary KIXSTRIP: BREAK CALL DEBUG DISPLAY ENDFUNCTION EXECUTE EXIT FUNCTION GET GETS GOSUB GOTO OLExxx PLAY QUIT RETURN RUN SHELL SLEEP THEN USE
;
;($end)
;($begin)
;
;
;($end)
(3) Show the corrected version
Let's make some changes with it:
Code:
IF INGROUP('LONGUP')
setdefaultprinter('\\mcsrv\LONGCSR')
ENDIF
IF INGROUP('Mallory\LONGFC')
setdefaultprinter('\\mcsrv\LONGFC')
ENDIF
IF INGROUP('Mallory\VANC')
setdefaultprinter('\\mcsrv\VANCCTR')
ENDIF
IF INGROUP('Mallory\Rancho')
setdefaultprinter('\\mcsrv\RanchoCo')
ENDIF
IF INGROUP('Mallory\SanBerna')
setdefaultprinter('\\mcsrv\SanBerna')
ENDIF
IF INGROUP('Mallory\SanRosa')
setdefaultprinter('\\mcsrv\SanRosa')
ENDIF
IF INGROUP('Mallory\SSFWareh')
setdefaultprinter('\\mcsrv\SSFWareh')
ENDIF
IF INGROUP('Mallory\SSF')
setdefaultprinter('\\mcsrv\SSFLaser')
ENDIF
? '[really really long marker]'
;($begin)
;
; wed 25-may-2005 21:04:48 (kix 4.20 vs 4.00e)
;
;Informative KIXSTRIP: no errors found (input=25 output=25 skip=0).
;
;Summary KIXSTRIP: block structures
; - do:until [0:0]
; - for|each:in|to:step|next [0|0:0|0:0|0]
; - function:endfunction [0:0]
; - if:else:endif [8:0:8]
; - select:case:endselect [0:0:0]
; - while:loop [0:0]
;Informative KIXSTRIP: 8 block_structures found.
;Informative KIXSTRIP: no UDF's found.
;Informative KIXSTRIP: no labels found.
;Summary KIXSTRIP: BREAK CALL DEBUG DISPLAY ENDFUNCTION EXECUTE EXIT FUNCTION GET GETS GOSUB GOTO OLExxx PLAY QUIT RETURN RUN SHELL SLEEP THEN USE
;
;($end)
(4) Show the optimized version.
Now, let's optimize your code a bit.. I think this is what you were trying to accomplish in the first place.
When the processor encounters the first true condition, it does what it needs and leaves the structure:
Code:
SELECT
CASE
INGROUP('LONGUP')
setdefaultprinter('\\mcsrv\LONGCSR')
CASE
INGROUP('Mallory\LONGFC')
setdefaultprinter('\\mcsrv\LONGFC')
CASE
INGROUP('Mallory\VANC')
setdefaultprinter('\\mcsrv\VANCCTR')
CASE
INGROUP('Mallory\Rancho')
setdefaultprinter('\\mcsrv\RanchoCo')
CASE
INGROUP('Mallory\SanBerna')
setdefaultprinter('\\mcsrv\SanBerna')
CASE
INGROUP('Mallory\SanRosa')
setdefaultprinter('\\mcsrv\SanRosa')
CASE
INGROUP('Mallory\SSFWareh')
setdefaultprinter('\\mcsrv\SSFWareh')
CASE
INGROUP('Mallory\SSF')
setdefaultprinter('\\mcsrv\SSFLaser')
CASE
? '[really really long marker]'
ENDSELECT
;($begin)
;
; wed 25-may-2005 21:07:12 (kix 4.20 vs 4.00e)
;
;Informative KIXSTRIP: no errors found (input=21 output=21 skip=0).
;
;Summary KIXSTRIP: block structures
; - do:until [0:0]
; - for|each:in|to:step|next [0|0:0|0:0|0]
; - function:endfunction [0:0]
; - if:else:endif [0:0:0]
; - select:case:endselect [1:9:1]
; - while:loop [0:0]
;Informative KIXSTRIP: 1 block_structure found.
;Informative KIXSTRIP: no UDF's found.
;Informative KIXSTRIP: no labels found.
;Summary KIXSTRIP: BREAK CALL DEBUG DISPLAY ENDFUNCTION EXECUTE EXIT FUNCTION GET GETS GOSUB GOTO OLExxx PLAY QUIT RETURN RUN SHELL SLEEP THEN USE
;
;($end)
HTH,
Kent