|
HSQLDB example source code file (plcontrolflow.sql)
The HSQLDB plcontrolflow.sql source code
/*
* $Id$
*
* Tests PL control flow. if, foreach statements, etc.
*/
*if (*UNSET)
\q Failed boolean test of an unset variable
*end if
*if (astring)
* y = something
*end if
*if (*X)
\q Failed boolean test of a simple string constant
*end if
*if (0)
\q Failed boolean test of zero constant
*end if
*if (! x)
/* Note that there must be white space to separate the two tokens above. */
\q Failed boolean test of a plain constant
*end if
/* Nested if tests */
* if (1)
* L1 = true
* if (2)
* L2 = true
* end if
* L11 = true
* end if
*if (! *L1)
\q Pre-nest failure
*end if
*if (! *L2)
\q Inside-nest failure
*end if
*if (! *L11)
\q Post-nest failure
*end if
* L1 =
* L2 =
* L11 =
* if (1)
* L1 = true
* if (2)
* L2 = true
* end if
* L11 = true
* end if
*if (! *L1)
\q Pre-nest failure
*end if
*if (! *L2)
\q Inside-nest failure
*end if
*if (! *L11)
\q Post-nest failure
*end if
/* Test deep nesting of IFs, including negatives. */
* if (1)
* L1 = true
* if (0)
* N2 = true
* end if
* if (2)
* L2 = true
* if (3)
* L3 = true
* if (4)
* L4 = true
* if (0)
* N5 = true
* end if
* if (5)
* L5 = true
* if (0)
* N6 = true
* end if
* if (6)
* L6 = true
* if (0)
* N7 = true
* end if
* end if
* L51 = true
* end if
* end if
* if (0)
* N4 = true
* end if
* L31 = true
* end if
* if (0)
* N3 = true
* end if
* end if
* L11 = true
* end if
*if (! *L1)
\q Pre-deep-nest failure 1
*end if
*if (! *L2)
\q Inside-deep-nest failure 2
*end if
*if (! *L11)
\q Post-deep-nest failure 11
*end if
*if (! *L3)
\q Pre-deep-nest failure 3
*end if
*if (! *L4)
\q Inside-deep-nest failure 4
*end if
*if (! *L31)
\q Post-deep-nest failure 31
*end if
*if (! *L5)
\q Pre-deep-nest failure 5
*end if
*if (! *L6)
\q Inside-deep-nest failure 6
*end if
*if (! *L51)
\q Post-deep-nest failure 51
*end if
*if (*N2)
\q Negative deep-nest failure 2
*end if
*if (*N3)
\q Negative deep-nest failure 3
*end if
*if (*N4)
\q Negative deep-nest failure 4
*end if
*if (*N5)
\q Negative deep-nest failure 5
*end if
*if (*N6)
\q Negative deep-nest failure 6
*end if
*if (*N7)
\q Negative deep-nest failure 7
*end if
/* Nested foreach tests */
/* Initialize Results to I */
* R = I
*foreach L1 (A B C)
*foreach L2 (1 2 3 4)
*foreach L3 (a b)
* R = *{R}:*{L1}*{L2}*{L3}
*end foreach
*end foreach
*end foreach
*if (*R != I:A1a:A1b:A2a:A2b:A3a:A3b:A4a:A4b:B1a:B1b:B2a:B2b:B3a:B3b:B4a:B4b:C1a:C1b:C2a:C2b:C3a:C3b:C4a:C4b)
\q nested foreach result unexpected: *{R}
*end if
/* Initialize Results to I */
* R = I
*foreach L1 (A B C)
*if (*L1 != A)
*foreach L2 (1 2 3 4)
*if (*L2 != 3)
*foreach L3 (a b c)
*if (*L3 != b)
* R = *{R}:*{L1}*{L2}*{L3}
*end if
*end foreach
*end if
*end foreach
*end if
*end foreach
*if (*R != I:B1a:B1c:B2a:B2c:B4a:B4c:C1a:C1c:C2a:C2c:C4a:C4c)
\q nested conditional foreach result unexpected: *{R}
*end if
/* Test break and continue */
/* Initialize Results to I */
* R = I
*foreach L1 (A B C)
*foreach L2 (1 2 3 4)
*foreach L3 (a b)
*if (*L3 == a)
*continue
*end if
* R = *{R}:*{L1}*{L2}*{L3}
*end foreach
*if (*L2 == 3)
*break foreach
*end if
*end foreach
*end foreach
*if (*R != I:A1b:A2b:A3b:B1b:B2b:B3b:C1b:C2b:C3b)
\q nested foreach result unexpected: *{R}
*end if
/* If something doesn't work right, could get into infinite loop below. */
* accum=L
*while (1)
* accum = *{accum}P
* subcum = M
*while (*subcum < MQQ)
* subcum = *{subcum}Q
*end while
* accum = *{accum}*{subcum}
*if (*accum == LPMQQPMQQ)
*break while
*end if
*end while
*if (*accum != LPMQQPMQQ)
\p Wrong value accumulated by nested while loops (*{accum})
*end if
Other HSQLDB examples (source code examples)Here is a short list of links related to this HSQLDB plcontrolflow.sql source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.