     || 'Cascade call for "LOGGING" en%'
     AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
 
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test11: Limit passed to ROOT with warn',
+  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test10: Limit passed to ROOT with warn',
+    EXPECTED, ACTUAL);
+--  DELETE FROM LOGS
+--    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieve, for %';
+ END @
+
+-- Test11: Limit passed logging to ROOT with info.
+CREATE OR REPLACE PROCEDURE TEST_11C()
+ BEGIN
+  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE RAISED_LG001 BOOLEAN DEFAULT FALSE; -- Just one ROOT.
+  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
+    SET RAISED_LG001 = TRUE;
+
+  SET EXPECTED = 'TRUE';
+  SET CASCADE = VAL_C_57;
+  CALL LOGGING(1, 4, CASCADE);
+
+  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test11: Limit passed to ROOT with info',
+    RAISED_LG001);
+
+  SELECT 'TRUE' INTO ACTUAL
+    FROM LOGS
+    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieved, for INFO: (0) '
+    || 'Cascade call for "LOGGING" en%'
+    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
+
+  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test11: Limit passed to ROOT with info',
     EXPECTED, ACTUAL);
   DELETE FROM LOGS
     WHERE MESSAGE LIKE 'LG001. Cascade call limit achieve, for %';
  END @
 
--- Test12: Cascade call limit with warn.
-CREATE OR REPLACE PROCEDURE TEST_12()
+-- Test12: Limit passed logging to ROOT with debug.
+CREATE OR REPLACE PROCEDURE TEST_12C()
+ BEGIN
+  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE RAISED_LG001 BOOLEAN DEFAULT FALSE; -- Just one ROOT.
+  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
+    SET RAISED_LG001 = TRUE;
+
+  SET EXPECTED = 'TRUE';
+  SET CASCADE = VAL_C_57;
+  CALL LOGGING(1, 5, CASCADE);
+
+  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test12: Limit passed to ROOT with debug',
+    RAISED_LG001);
+
+  SELECT 'TRUE' INTO ACTUAL
+    FROM LOGS
+    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieved, for DEBUG: (0) '
+    || 'Cascade call for "LOGGING" en%'
+    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
+
+  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test12: Limit passed to ROOT with debug',
+    EXPECTED, ACTUAL);
+  DELETE FROM LOGS
+    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieve, for %';
+ END @
+
+-- Test13: Limit logging to ROOT with fatal.
+CREATE OR REPLACE PROCEDURE TEST_13C()
+ BEGIN
+  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
+    BEGIN END;
+
+  SET EXPECTED = 'TRUE';
+  SET CASCADE = VAL_C_57;
+  CALL LOGGING(1, 1, CASCADE);
+  SELECT 'TRUE' INTO ACTUAL
+    FROM LOGS
+    WHERE MESSAGE = 'LG001. Cascade call limit achieved, for FATAL: (0) '
+    || 'Cascade call for "LOGGING" enters with ' || CASCADE
+    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
+
+  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test13: Limit logging to ROOT with fatal',
+    EXPECTED, ACTUAL);
+ END @
+
+-- Test14: Limit logging to ROOT with error.
+CREATE OR REPLACE PROCEDURE TEST_14C()
+ BEGIN
+  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
+    BEGIN END;
+
+  SET EXPECTED = 'TRUE';
+  SET CASCADE = VAL_C_57;
+  CALL LOGGING(1, 2, CASCADE);
+  SELECT 'TRUE' INTO ACTUAL
+    FROM LOGS
+    WHERE MESSAGE = 'LG001. Cascade call limit achieved, for ERROR: (0) '
+    || 'Cascade call for "LOGGING" enters with ' || CASCADE
+    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
+
+  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test05: Limit logging to ROOT with error',
+    EXPECTED, ACTUAL);
+ END @
+
+-- Test15: Limit logging to ROOT with warn.
+CREATE OR REPLACE PROCEDURE TEST_15C()
+ BEGIN
+  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
+    BEGIN END;
+
+  SET EXPECTED = 'TRUE';
+  SET CASCADE = VAL_C_57;
+  CALL LOGGING(1, 3, CASCADE);
+  SELECT 'TRUE' INTO ACTUAL
+    FROM LOGS
+    WHERE MESSAGE = 'LG001. Cascade call limit achieved, for WARN: (0) Cascade '
+    || 'call for "LOGGING" enters with ' || CASCADE
+    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
+
+  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test09: Limit logging to ROOT with warn',
+    EXPECTED, ACTUAL);
+ END @
+
+-- Test16: Limit logging to ROOT with info.
+CREATE OR REPLACE PROCEDURE TEST_16C()
+ BEGIN
+  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
+    BEGIN END;
+
+  SET EXPECTED = 'TRUE';
+  SET CASCADE = VAL_C_57;
+  CALL LOGGING(1, 4, CASCADE);
+  SELECT 'TRUE' INTO ACTUAL
+    FROM LOGS
+    WHERE MESSAGE = 'LG001. Cascade call limit achieved, for INFO: (0) Cascade '
+    || 'call for "LOGGING" enters with ' || CASCADE
+    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
+
+  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test13: Limit logging to ROOT with info',
+    EXPECTED, ACTUAL);
+ END @
+
+-- Test17: Limit logging to ROOT with debug.
+CREATE OR REPLACE PROCEDURE TEST_17C()
+ BEGIN
+  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
+    BEGIN END;
+
+  SET EXPECTED = 'TRUE';
+  SET CASCADE = VAL_C_57;
+  CALL LOGGING(1, 5, CASCADE);
+  SELECT 'TRUE' INTO ACTUAL
+    FROM LOGS
+    WHERE MESSAGE = 'LG001. Cascade call limit achieved, for DEBUG: (0) '
+    || 'Cascade call for "LOGGING" enters with ' || CASCADE
+    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
+
+  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test17: Limit logging to ROOT with debug',
+    EXPECTED, ACTUAL);
+ END @
+
+-- Test18: Cascade call limit with fatal.
+CREATE OR REPLACE PROCEDURE TEST_18D()
  BEGIN
   DECLARE CASCADE SMALLINT; -- Cascade calls.
   DECLARE RAISED_724 BOOLEAN DEFAULT FALSE; -- Null value.
   DECLARE CONTINUE HANDLER FOR SQLSTATE '54038'
     SET RAISED_724 = TRUE;
 
-  SET CASCADE = MIN_59;
-  CALL LOGGING(1, 3, CASCADE);
-
-  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test12: Cascade call limit with warn',
+  SET CASCADE = MIN_D_58;
+  CALL LOGGING(1, 1, CASCADE);
+
+  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test18: Cascade call limit with fatal',
     RAISED_724);
  END @
 
--- Test13: Limit logging to ROOT with info.
-CREATE OR REPLACE PROCEDURE TEST_13()
- BEGIN
-  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CASCADE SMALLINT; -- Cascade calls.
-  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
-    BEGIN END;
-
-  SET EXPECTED = 'TRUE';
-  SET CASCADE = VAL_57B;
-  CALL LOGGING(1, 4, CASCADE);
-  SELECT 'TRUE' INTO ACTUAL
-    FROM LOGS
-    WHERE MESSAGE = 'LG001. Cascade call limit achieved, for INFO: (0) Cascade '
-    || 'call for "LOGGING" enters with ' || CASCADE
-    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
-
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test13: Limit logging to ROOT with info',
-    EXPECTED, ACTUAL);
- END @
-
--- Test14: Limit achieved logging to ROOT with info.
-CREATE OR REPLACE PROCEDURE TEST_14()
- BEGIN
-  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CASCADE SMALLINT; -- Cascade calls.
-  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE RAISED_LG001 BOOLEAN DEFAULT FALSE; -- Just one ROOT.
-  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
-    SET RAISED_LG001 = TRUE;
-
-  SET EXPECTED = 'TRUE';
-  SET CASCADE = VAL_56_57;
-  CALL LOGGING(1, 4, CASCADE);
-
-  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test14: Limit achieved to ROOT with info',
-    RAISED_LG001);
-
-  SELECT 'TRUE' INTO ACTUAL
-    FROM LOGS
-    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieved, for LOG: Cascade '
-    || 'call for "LOGGING" enters w%'
-    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
-
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test14: Limit achieved to ROOT with info',
-    EXPECTED, ACTUAL);
- END @
-
--- Test15: Limit passed logging to ROOT with info.
-CREATE OR REPLACE PROCEDURE TEST_15()
- BEGIN
-  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CASCADE SMALLINT; -- Cascade calls.
-  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE RAISED_LG001 BOOLEAN DEFAULT FALSE; -- Just one ROOT.
-  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
-    SET RAISED_LG001 = TRUE;
-
-  SET EXPECTED = 'TRUE';
-  SET CASCADE = VAL_57A;
-  CALL LOGGING(1, 4, CASCADE);
-
-  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test15: Limit passed to ROOT with info',
-    RAISED_LG001);
-
-  SELECT 'TRUE' INTO ACTUAL
-    FROM LOGS
-    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieved, for INFO: (0) '
-    || 'Cascade call for "LOGGING" en%'
-    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
-
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test15: Limit passed to ROOT with info',
-    EXPECTED, ACTUAL);
-  DELETE FROM LOGS
-    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieve, for %';
- END @
-
--- Test16: Cascade call limit with info.
-CREATE OR REPLACE PROCEDURE TEST_16()
+-- Test19: Cascade call limit with error.
+CREATE OR REPLACE PROCEDURE TEST_19D()
  BEGIN
   DECLARE CASCADE SMALLINT; -- Cascade calls.
   DECLARE RAISED_724 BOOLEAN DEFAULT FALSE; -- Null value.
   DECLARE CONTINUE HANDLER FOR SQLSTATE '54038'
     SET RAISED_724 = TRUE;
 
-  SET CASCADE = MIN_59;
-  CALL LOGGING(1, 4, CASCADE);
-
-  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test16: Cascade call limit with info',
+  SET CASCADE = MIN_D_58;
+  CALL LOGGING(1, 2, CASCADE);
+
+  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test19: Cascade call limit with error',
     RAISED_724);
  END @
 
--- Test17: Limit logging to ROOT with debug.
-CREATE OR REPLACE PROCEDURE TEST_17()
- BEGIN
-  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CASCADE SMALLINT; -- Cascade calls.
-  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
-    BEGIN END;
-
-  SET EXPECTED = 'TRUE';
-  SET CASCADE = VAL_57B;
-  CALL LOGGING(1, 5, CASCADE);
-  SELECT 'TRUE' INTO ACTUAL
-    FROM LOGS
-    WHERE MESSAGE = 'LG001. Cascade call limit achieved, for DEBUG: (0) '
-    || 'Cascade call for "LOGGING" enters with ' || CASCADE
-    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
-
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test17: Limit logging to ROOT with debug',
-    EXPECTED, ACTUAL);
- END @
-
--- Test18: Limit achieved logging to ROOT with debug.
-CREATE OR REPLACE PROCEDURE TEST_18()
- BEGIN
-  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CASCADE SMALLINT; -- Cascade calls.
-  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE RAISED_LG001 BOOLEAN DEFAULT FALSE; -- Just one ROOT.
-  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
-    SET RAISED_LG001 = TRUE;
-
-  SET EXPECTED = 'TRUE';
-  SET CASCADE = VAL_56_57;
-  CALL LOGGING(1, 5, CASCADE);
-
-  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test18: Limit achieved to ROOT with debug',
-    RAISED_LG001);
-
-  SELECT 'TRUE' INTO ACTUAL
-    FROM LOGS
-    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieved, for LOG: Cascade '
-    || 'call for "LOGGING" enters w%'
-    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
-
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test18: Limit achieved to ROOT with debug',
-    EXPECTED, ACTUAL);
- END @
-
--- Test19: Limit passed logging to ROOT with debug.
-CREATE OR REPLACE PROCEDURE TEST_19()
- BEGIN
-  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CASCADE SMALLINT; -- Cascade calls.
-  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE RAISED_LG001 BOOLEAN DEFAULT FALSE; -- Just one ROOT.
-  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
-    SET RAISED_LG001 = TRUE;
-
-  SET EXPECTED = 'TRUE';
-  SET CASCADE = VAL_57A;
-  CALL LOGGING(1, 5, CASCADE);
-
-  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test19: Limit passed to ROOT with debug',
-    RAISED_LG001);
-
-  SELECT 'TRUE' INTO ACTUAL
-    FROM LOGS
-    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieved, for DEBUG: (0) '
-    || 'Cascade call for "LOGGING" en%'
-    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
-
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test19: Limit passed to ROOT with debug',
-    EXPECTED, ACTUAL);
-  DELETE FROM LOGS
-    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieve, for %';
- END @
-
--- Test20: Cascade call limit with debug.
-CREATE OR REPLACE PROCEDURE TEST_20()
+-- Test20: Cascade call limit with warn.
+CREATE OR REPLACE PROCEDURE TEST_20D()
  BEGIN
   DECLARE CASCADE SMALLINT; -- Cascade calls.
   DECLARE RAISED_724 BOOLEAN DEFAULT FALSE; -- Null value.
   DECLARE CONTINUE HANDLER FOR SQLSTATE '54038'
     SET RAISED_724 = TRUE;
 
-  SET CASCADE = MIN_59;
-  CALL LOGGING(1, 5, CASCADE);
-
-  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test20: Cascade call limit with debug',
+  SET CASCADE = MIN_D_58;
+  CALL LOGGING(1, 3, CASCADE);
+
+  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test20: Cascade call limit with warn',
     RAISED_724);
  END @
 
--- Test21: Limit passed logging to ROOT with default.
-CREATE OR REPLACE PROCEDURE TEST_22()
- BEGIN
-  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CASCADE SMALLINT; -- Cascade calls.
-  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE RAISED_LG001 BOOLEAN DEFAULT FALSE; -- Just one ROOT.
-  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
-    SET RAISED_LG001 = TRUE;
-
-  SET EXPECTED = 'TRUE';
-  SET CASCADE = VAL_57_58;
-  CALL LOGGING(1, -1, CASCADE);
-
-  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test21: Limit passed to ROOT with default',
-    RAISED_LG001);
-
-  SELECT 'TRUE' INTO ACTUAL
-    FROM LOGS
-    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieved, for LOG: Cascade '
-    || 'call for "LOGGING" enters w%'
-    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
-
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test21: Limit passed to ROOT with default',
-    EXPECTED, ACTUAL);
-  DELETE FROM LOGS
-    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieve, for %';
- END @
-
--- Test22: Cascade call limit with default.
-CREATE OR REPLACE PROCEDURE TEST_23()
+-- Test21: Cascade call limit with info.
+CREATE OR REPLACE PROCEDURE TEST_21D()
  BEGIN
   DECLARE CASCADE SMALLINT; -- Cascade calls.
   DECLARE RAISED_724 BOOLEAN DEFAULT FALSE; -- Null value.
   DECLARE CONTINUE HANDLER FOR SQLSTATE '54038'
     SET RAISED_724 = TRUE;
 
-  SET CASCADE = MIN_59;
+  SET CASCADE = MIN_D_58;
+  CALL LOGGING(1, 4, CASCADE);
+
+  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test21: Cascade call limit with info',
+    RAISED_724);
+ END @
+
+-- Test22: Cascade call limit with debug.
+CREATE OR REPLACE PROCEDURE TEST_22D()
+ BEGIN
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE RAISED_724 BOOLEAN DEFAULT FALSE; -- Null value.
+  DECLARE CONTINUE HANDLER FOR SQLSTATE '54038'
+    SET RAISED_724 = TRUE;
+
+  SET CASCADE = MIN_D_58;
+  CALL LOGGING(1, 5, CASCADE);
+
+  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test22: Cascade call limit with debug',
+    RAISED_724);
+ END @
+
+-- Test24: Cascade call limit with default.
+CREATE OR REPLACE PROCEDURE TEST_23D()
+ BEGIN
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE RAISED_724 BOOLEAN DEFAULT FALSE; -- Null value.
+  DECLARE CONTINUE HANDLER FOR SQLSTATE '54038'
+    SET RAISED_724 = TRUE;
+
+  SET CASCADE = MIN_D_58;
   CALL LOGGING(1, -1, CASCADE);
 
-  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test22: Cascade call limit with default',
+  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test23: Cascade call limit with default',
     RAISED_724);
  END @
 
--- Test23: Limit logging to ROOT  56 - 57.
-CREATE OR REPLACE PROCEDURE TEST_24()
- BEGIN
-  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CASCADE SMALLINT; -- Cascade calls.
-  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
-    BEGIN END;
-
-  SET EXPECTED = 'TRUE';
-  SET CASCADE = VAL_56_57;
-  CALL LOGGING(1, 1, CASCADE);
-  SELECT 'TRUE' INTO ACTUAL
-    FROM LOGS
-    WHERE MESSAGE = 'LG001. Cascade call limit achieved, for LOG: Cascade call '
-    || 'for "LOGGING" enters with ' || CASCADE
-    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
-
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test23: Limit logging to ROOT 60',
-    EXPECTED, ACTUAL);
- END @
-
--- Test24: Limit logging to ROOT 56 - 57.
-CREATE OR REPLACE PROCEDURE TEST_25()
- BEGIN
-  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CASCADE SMALLINT; -- Cascade calls.
-  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
-  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
-    BEGIN END;
-
-  SET EXPECTED = 'TRUE';
-  SET CASCADE = VAL_56_57;
-  CALL LOGGING(1, 1, CASCADE);
-  SELECT 'TRUE' INTO ACTUAL
-    FROM LOGS
-    WHERE MESSAGE = 'LG001. Cascade call limit achieved, for LOG: Cascade call '
-    || 'for "LOGGING" enters with ' || CASCADE
-    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
-
-  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test24: Limit logging to ROOT 61',
-    EXPECTED, ACTUAL);
+-- Test2F: Limit passed logging to ROOT with default.
+CREATE OR REPLACE PROCEDURE TEST_24E()
+ BEGIN
+  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE CASCADE SMALLINT; -- Cascade calls.
+  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
+  DECLARE RAISED_LG001 BOOLEAN DEFAULT FALSE; -- Just one ROOT.
+  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
+    SET RAISED_LG001 = TRUE;
+
+  SET EXPECTED = 'TRUE';
+  SET CASCADE = VAL_E_56_57;
+  CALL LOGGING(1, -1, CASCADE);
+
+  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test24: Limit passed to ROOT with default',
+    RAISED_LG001);
+
+  SELECT 'TRUE' INTO ACTUAL
+    FROM LOGS
+    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieved, for LOG: Cascade '
+    || 'call for "LOGGING" enters w%'
+    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);
+
+  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test24: Limit passed to ROOT with default',
+    EXPECTED, ACTUAL);
+  DELETE FROM LOGS
+    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieve, for %';
  END @
 
 -- Register the suite.

    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS)
    AND LEVEL_ID = 2;

  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test06: Limit achieved to ROOT with error',
    EXPECTED, ACTUAL);
 END @

-- Test07: Limit passed logging to ROOT with error.
CREATE OR REPLACE PROCEDURE TEST_07()
 BEGIN
  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
  DECLARE CASCADE SMALLINT; -- Cascade calls.
  DECLARE ACTUAL ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
  DECLARE RAISED_LG001 BOOLEAN DEFAULT FALSE; -- Just one ROOT.
  DECLARE CONTINUE HANDLER FOR SQLSTATE 'LG001'
    SET RAISED_LG001 = TRUE;

  SET EXPECTED = 'TRUE';
  SET CASCADE = VAL_57A;
  CALL LOGGING(1, 2, CASCADE);

  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test07: Limit passed to ROOT with error',
    RAISED_LG001);

  SELECT 'TRUE' INTO ACTUAL
    FROM LOGS
    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieved, for ERROR: (0) '
    || 'Cascade call for "LOGGING" en%'
    AND DATE = (SELECT MAX(DATE) FROM LOGDATA.LOGS);

  CALL DB2UNIT.ASSERT_STRING_EQUALS('Test07: Limit passed to ROOT with error',
    EXPECTED, ACTUAL);
  DELETE FROM LOGS
    WHERE MESSAGE LIKE 'LG001. Cascade call limit achieve, for %';
 END @

-- Test08: Cascade call limit with error.
CREATE OR REPLACE PROCEDURE TEST_08()
 BEGIN
  DECLARE CASCADE SMALLINT; -- Cascade calls.
  DECLARE RAISED_724 BOOLEAN DEFAULT FALSE; -- Null value.
  DECLARE CONTINUE HANDLER FOR SQLSTATE '54038'
    SET RAISED_724 = TRUE;

  SET CASCADE = MIN_59;
  CALL LOGGING(1, 2, CASCADE);

  CALL DB2UNIT.ASSERT_BOOLEAN_TRUE('Test08: Cascade call limit with error',
    RAISED_724);
 END @

-- Test09: Limit logging to ROOT with warn.
CREATE OR REPLACE PROCEDURE TEST_09()
 BEGIN
  DECLARE EXPECTED ANCHOR DATA TYPE TO LOGDATA.LOGS.MESSAGE;
  DECLARE CASCADE SMALLINT; -- Cascade calls.

BEGIN
 DECLARE STATEMENT VARCHAR(128);
 DECLARE CONTINUE HANDLER FOR SQLSTATE '42704' BEGIN END;
 SET STATEMENT = 'DROP VARIABLE VAL_A_55_56';
 EXECUTE IMMEDIATE STATEMENT;
 SET STATEMENT = 'DROP VARIABLE VAL_B_55_57';
 EXECUTE IMMEDIATE STATEMENT;
 SET STATEMENT = 'DROP VARIABLE VAL_C_57';
 EXECUTE IMMEDIATE STATEMENT;
 SET STATEMENT = 'DROP VARIABLE MIN_D_58';
 EXECUTE IMMEDIATE STATEMENT;
 SET STATEMENT = 'DROP VARIABLE VAL_E_56_57';
 EXECUTE IMMEDIATE STATEMENT;
END @

-- 55,56 : 01, 02, 03, 04, 05, 06
CREATE VARIABLE VAL_A_55_56 SMALLINT CONSTANT 55 @
-- 56-58 for test 07
CREATE VARIABLE VAL_B_55_57 SMALLINT CONSTANT 55 @
-- 57 for test 08, 09, 10, 11, 12, 13, 14, 15, 16, 17
CREATE VARIABLE VAL_C_57 SMALLINT CONSTANT 57 @
-- 59 ... for test 18, 19, 20, 21, 22, 23, 24
CREATE VARIABLE MIN_D_58 SMALLINT CONSTANT 58 @
-- 57 or 58 for test 25
CREATE VARIABLE VAL_E_56_57 SMALLINT CONSTANT 56 @

CREATE OR REPLACE PROCEDURE LOGGING (
  IN VAL SMALLINT,
