142 lines
3.8 KiB
Plaintext
142 lines
3.8 KiB
Plaintext
/*
|
|
* $Id$
|
|
*/
|
|
|
|
PROCEDURE MAIN()
|
|
LOCAL A:={ "one ", "two ", "three" }
|
|
LOCAL AA:={ "AA-one ", "AA-two ", "AA-three", "AA-four " }
|
|
LOCAL c:="abcdefghij"
|
|
LOCAL enum:="b"
|
|
LOCAL bb, cc
|
|
LOCAL i
|
|
|
|
/*
|
|
test(@a,b)
|
|
test(a,@b)
|
|
test(@a,@b)
|
|
*/
|
|
? "========================================================"
|
|
? "before loop: ENUM=",ENUM
|
|
? 'before loop: a[1]=',a[1], 'a[2]=',a[2], 'a[3]=',a[3]
|
|
FOR EACH enum IN A
|
|
? "start: ENUM=", ENUM
|
|
IF( ENUM = 'two' )
|
|
ENUM := UPPER( ENUM )
|
|
ENDIF
|
|
? "end: ENUM=", ENUM, "| index:", ENUM:__enumIndex, "| value:", ENUM:__enumValue, "| base: ", VALTYPE(ENUM:__enumBase)
|
|
NEXT
|
|
? "after loop ENUM=", ENUM
|
|
? 'after loop: a[1]=',a[1], 'a[2]=',a[2], 'a[3]=',a[3]
|
|
? "-----------------"
|
|
?
|
|
inkey(0)
|
|
|
|
|
|
? "========================================================"
|
|
? "Testing passing by reference"
|
|
? "before loop: ENUM=",ENUM
|
|
? 'after loop: a[1]=',a[1], 'a[2]=',a[2], 'a[3]=',a[3]
|
|
FOR EACH ENUM IN A
|
|
IF( UPPER(ENUM) = 'TWO' )
|
|
ENUM := UPPER( ENUM )
|
|
? "before passing by @ | ENUM=", ENUM, "| index:", ENUM:__enumIndex, "| value:", ENUM:__enumValue, "| base: ", VALTYPE(ENUM:__enumBase)
|
|
testBYREF( @ENUM )
|
|
? " after passing by @ | ENUM=", ENUM, "| index:", ENUM:__enumIndex, "| value:", ENUM:__enumValue, "| base: ", VALTYPE(ENUM:__enumBase)
|
|
ENDIF
|
|
NEXT
|
|
? "after loop ENUM=", ENUM
|
|
? 'after loop: a[1]=',a[1], 'a[2]=',a[2], 'a[3]=',a[3]
|
|
inkey(0)
|
|
|
|
? "========================================================"
|
|
? "Testing BREAK"
|
|
? "before loop: ENUM=",ENUM
|
|
? 'after loop: a[1]=',a[1], 'a[2]=',a[2], 'a[3]=',a[3]
|
|
BEGIN SEQUENCE
|
|
FOR EACH enum IN A DESCEND
|
|
? "loop: ENUM=", ENUM, "| index:", ENUM:__enumIndex, "| value:", ENUM:__enumValue, "| base: ", VALTYPE(ENUM:__enumBase)
|
|
TESTbreak( ENUM )
|
|
NEXT
|
|
|
|
RECOVER USING i
|
|
? "after loop ENUM=", ENUM
|
|
? 'after loop: a[1]=',a[1], 'a[2]=',a[2], 'a[3]=',a[3]
|
|
? "recover variable i=", i
|
|
END SEQUENCE
|
|
inkey(0)
|
|
|
|
? "========================================================"
|
|
? "before loop: ENUM=",ENUM
|
|
? 'before loop: c=',c
|
|
BEGIN SEQUENCE
|
|
FOR EACH enum IN c
|
|
? "start: ENUM=", ENUM
|
|
IF( enum = 'd' )
|
|
enum := UPPER( enum )
|
|
ENDIF
|
|
Testbreak( enum )
|
|
? "end: ENUM=", ENUM, "| index:", ENUM:__enumIndex, "| value:", ENUM:__enumValue, "| base: ", VALTYPE(ENUM:__enumBase)
|
|
NEXT
|
|
RECOVER USING i
|
|
? "after loop ENUM=", ENUM
|
|
? 'after loop: c=', c
|
|
? "recover variable i=", i
|
|
END SEQUENCE
|
|
|
|
|
|
? "========================================================"
|
|
FOR EACH enum,bb,cc IN A,AA,c
|
|
? enum, enum:__enumIndex, enum:__enumValue
|
|
? bb, bb:__enumIndex, bb:__enumValue
|
|
? cc, cc:__enumIndex, cc:__enumValue
|
|
NEXT
|
|
inkey(0)
|
|
|
|
? "========================================================"
|
|
FOR EACH enum,bb,cc IN A,AA,c DESCEND
|
|
? enum, enum:__enumIndex, enum:__enumValue
|
|
? bb, bb:__enumIndex, bb:__enumValue
|
|
? cc, cc:__enumIndex, cc:__enumValue
|
|
NEXT
|
|
|
|
FOR EACH enum IN a
|
|
BEGIN SEQUENCE
|
|
IF( enum = '2' )
|
|
BREAK
|
|
ENDIF
|
|
END SEQUENCE
|
|
NEXT
|
|
|
|
FOR EACH enum IN a
|
|
BEGIN SEQUENCE
|
|
IF( enum = '2' )
|
|
? "Breaking... enum=", enum
|
|
BREAK enum
|
|
ENDIF
|
|
RECOVER USING enum
|
|
? "after recovery: enum=", enum
|
|
END SEQUENCE
|
|
NEXT
|
|
|
|
RETURN
|
|
|
|
|
|
PROCEDURE TESTbreak( v )
|
|
IF( v = '2' .or. v = 'd' )
|
|
? "issuing break"
|
|
BREAK( v )
|
|
ENDIF
|
|
|
|
RETURN
|
|
|
|
PROCEDURE TESTBYREF( enum )
|
|
? "start of testBYREF ENUM=", ENUM
|
|
FOR EACH ENUM IN {1,2,3}
|
|
? " -testBYREF=", ENUM
|
|
NEXT
|
|
? "end of loop: ENUM=", ENUM
|
|
ENUM := "22222"
|
|
? "end of testBYREF ENUM=", ENUM
|
|
RETURN
|
|
|