diff --git a/regression_test/Makefile b/regression_test/Makefile
index 8874e711f4ae037520489d667eeeca4153bd0703..a74f83ec160fd1d7413a2d2daf2c446762b38f92 100644
--- a/regression_test/Makefile
+++ b/regression_test/Makefile
@@ -49,7 +49,7 @@ all_from lazyEval tryCatch text2ttcn json ttcn2json profiler templateOmit \
 customEncoding makefilegen uidChars checkstate hostid templateIstemplatekind \
 selectUnion templateExclusiveRange any_from templatePatternRef indexWithRecofArray \
 connectMapOperTest fuzzy portTranslation ischosen OER functionSubref done \
-nondeterministicDefaultParam
+nondeterministicDefaultParam predefFunction2
 
 ifdef DYN
 DIRS += loggerplugin junitlogger 
diff --git a/regression_test/predefFunction2/Makefile b/regression_test/predefFunction2/Makefile
new file mode 100755
index 0000000000000000000000000000000000000000..4d1d25461b142afc851050d757760291e0c91ed1
--- /dev/null
+++ b/regression_test/predefFunction2/Makefile
@@ -0,0 +1,56 @@
+##############################################################################
+# Copyright (c) 2000-2017 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#   Balasko, Jeno
+#
+##############################################################################
+TOPDIR := ..
+include $(TOPDIR)/Makefile.regression
+
+.SUFFIXES: .ttcn .hh
+.PHONY: all clean dep run
+
+TTCN3_LIB = ttcn3$(RT2_SUFFIX)$(DYNAMIC_SUFFIX)
+
+TTCN3_MODULES = predefFunctTest.ttcn
+
+GENERATED_SOURCES = $(TTCN3_MODULES:.ttcn=.cc)
+GENERATED_HEADERS = $(GENERATED_SOURCES:.cc=.hh)
+ifdef CODE_SPLIT
+GENERATED_SOURCES := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), .cc _seq.cc _set.cc  _seqof.cc _setof.cc _union.cc))
+else ifdef SPLIT_TO_SLICES
+POSTFIXES := $(foreach file, $(SPLIT_TO_SLICES), $(addsuffix $(file), _part_))
+POSTFIXES := $(foreach file, $(POSTFIXES), $(addprefix $(file), .cc))
+GENERATED_SOURCES2 := $(foreach file, $(GENERATED_SOURCES:.cc=), $(addprefix $(file), $(POSTFIXES)))
+GENERATED_SOURCES += $(GENERATED_SOURCES2)
+endif
+
+OBJECTS = $(GENERATED_SOURCES:.cc=.o)
+
+TARGET = predefFunctTest$(EXESUFFIX)
+
+all: $(TARGET)
+
+$(TARGET): $(GENERATED_SOURCES) $(USER_SOURCES)
+	$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ -L$(TTCN3_DIR)/lib -l$(TTCN3_LIB) -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS)
+
+.ttcn.cc .ttcn.hh:
+	$(TTCN3_COMPILER) $<
+
+clean distclean:
+	-rm -f $(TARGET) $(OBJECTS) $(GENERATED_HEADERS) \
+	$(GENERATED_SOURCES) *.log Makefile.bak
+
+dep: $(GENERATED_SOURCES)
+	makedepend $(CPPFLAGS) $(GENERATED_SOURCES)
+
+run: $(TARGET) config.cfg
+	./$^
+
+.NOTPARALLEL:
+
diff --git a/regression_test/predefFunction2/config.cfg b/regression_test/predefFunction2/config.cfg
new file mode 100755
index 0000000000000000000000000000000000000000..1f3853943400d2bb26fa7711255d8120260641aa
--- /dev/null
+++ b/regression_test/predefFunction2/config.cfg
@@ -0,0 +1,19 @@
+###############################################################################
+# Copyright (c) 2000-2017 Ericsson Telecom AB
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+#   Balasko, Jeno
+#   Szabo, Janos Zoltan – initial implementation
+#
+###############################################################################
+[MODULE_PARAMETERS]
+[LOGGING]
+Logfile := "predefFunctTest.log"
+FileMask := LOG_ALL
+ConsoleMask := TTCN_WARNING | TTCN_ERROR | TTCN_TESTCASE | TTCN_STATISTICS
+[EXECUTE]
+predefFunctTest.control
diff --git a/regression_test/predefFunction2/predefFunctTest.ttcn b/regression_test/predefFunction2/predefFunctTest.ttcn
new file mode 100755
index 0000000000000000000000000000000000000000..fe7f215905090910d8d6cafa05b024294ecf3216
--- /dev/null
+++ b/regression_test/predefFunction2/predefFunctTest.ttcn
@@ -0,0 +1,3951 @@
+//These tests are supplementary testcases to the existing regression test
+//If commented testcases are commented back, the code can be used in static test, as well
+module predefFunctTest {
+
+const charstring c_cs_empty := ""
+type record of bitstring RoBS;
+type record of hexstring RoHS;
+type record of octetstring RoOS;
+type record of integer RoI;
+type record of charstring RoCS;
+type record of universal charstring RoUCS;
+
+type set of integer SoI;
+const bitstring c_bs_empty1 := ''B
+const integer c_2e31 := 2147483648;
+const integer c_2e32 := 4294967296;
+const RoI c_roi_empty := {};
+const RoI c_roi_1 := {-1}
+const RoI c_roi_2 := {-2, -1}
+const RoI c_roi3 := {-3,-2,-1}
+
+type component CT{}
+
+//====== str2float ==========
+testcase tc_predef_str2float_empty() runs on CT {
+  var charstring vl_cs_empty := "";
+  @try {
+    var float f := str2float( vl_cs_empty & c_cs_empty);
+    setverdict(fail, "exception was expected")
+
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+testcase tc_predef_str2float_empty2() runs on CT {
+  var charstring vl_cs_empty := "";
+  @try {
+    var float f := str2float( vl_cs_empty);
+    setverdict(fail, "exception was expected")
+
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+type record of float RoF;
+
+// good cases
+testcase tc_predef_str2float_good1() runs on CT {
+  var RoCS vl_roc := {"1","-123", "-0.000","0.0","+0.0", "1.0", "002.34567890", "+003.000000", "+4.0","5.0e+0", "-6.0e+2", "7.125e+10", "8.250e+100","9e5" }
+  var RoF vl_expected := {1.0, -123.0, -0.0, 0.0, +0.0,1.0, 2.34567890, 3.0, 4.0, 5.0,-600.0, 71.25e+9, 8.25e100, 9e5 }
+  var integer N := sizeof( vl_roc );
+
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(str2float(vl_roc[i])==vl_expected[i]) {
+      //      setverdict(pass);
+      log(i);
+    } else {
+      setverdict(fail,"Expected(",i,"): ", vl_expected[i], "got:",str2float(vl_roc[i]));
+    }
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_str2float_good2() runs on CT {
+  var charstring vl_cs := "infinity";
+  if(str2float(vl_cs) == infinity){
+    setverdict(pass)
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_str2float_good2a() runs on CT {
+  var charstring vl_cs := "infinity";
+  if (infinity == str2float(vl_cs)) {
+    setverdict(pass)
+  } else {
+    setverdict(fail);
+  }
+}
+
+//compile time evaluation
+testcase tc_predef_str2float_good2b() runs on CT {
+  if(str2float("infinity") == infinity){
+    setverdict(pass)
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_str2float_good2c() runs on CT {
+  if(infinity == str2float("infinity")){
+    setverdict(pass)
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_str2float_good2d() runs on CT {
+  var charstring vl_cs := "INF";
+  @try {
+    if(str2float(vl_cs) == infinity){
+      setverdict(fail, "DTE expected")
+    } else {
+      setverdict(fail,"DTE expected");
+    }
+  } @catch(e) {
+    setverdict(pass,"DTE catched")
+  }
+}
+
+
+
+//compile time evaluation - semantic error
+//testcase tc_predef_str2float_good2d() runs on CT {
+//  if(str2float("INF") == infinity){
+//    setverdict(pass)
+//  } else {
+//    setverdict(fail);
+//  }
+//}
+testcase tc_predef_str2float_good3() runs on CT {
+  var charstring vl_cs := "-infinity";
+  if(str2float(vl_cs) == -infinity){
+    setverdict(pass)
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_str2float_good3b() runs on CT {
+  if(str2float("-infinity") == -infinity){
+    setverdict(pass)
+  } else {
+    setverdict(fail);
+  }
+}
+
+//Status:fails on cpp, pass on java
+testcase tc_predef_str2float_good4() runs on CT {
+  var charstring vl_cs := "not_a_number";
+  if(str2float(vl_cs) == not_a_number){
+    setverdict(pass)
+  } else {
+    setverdict(fail,"expected not_a_number got:", str2float(vl_cs));
+  }
+}
+//Status:pass on cpp, pass on java
+testcase tc_predef_str2float_good4b() runs on CT {
+  if(str2float("not_a_number") == not_a_number){
+    setverdict(pass)
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_str2float_good4c() runs on CT {
+  var charstring vl_cs := "NaN";
+  @try {
+    if(str2float(vl_cs) == not_a_number){
+      setverdict(fail)
+    } else {
+      setverdict(fail);
+    }
+  } @catch(e) {
+    setverdict(pass,"DTE catched")
+  }
+}
+
+testcase tc_predef_str2float_good5() runs on CT {
+  var charstring vl_cs := "not_a_number";
+  if( not_a_number == str2float(vl_cs) ){
+    setverdict(pass)
+  } else {
+    setverdict(fail,"expected not_a_number got:", str2float(vl_cs));
+  }
+}
+//semantic error
+//testcase tc_predef_str2float_good4d() runs on CT {
+//  if(str2float("NaN") == not_a_number){
+//    setverdict(pass)
+//  } else {
+//    setverdict(fail);
+//  }
+//}
+
+testcase tc_predef_str2float_bad1() runs on CT {
+  var charstring vl_cs := ".3";
+  @try {
+    var float f := str2float( vl_cs );
+    setverdict(fail, "exception was expected but got:",f)
+
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+//testcase tc_predef_str2float_bad1b() runs on CT {
+//  @try {
+//    var float f := str2float(".3");//semantic error
+//    setverdict(fail, "exception was expected but got:" , f )
+//
+//  } @catch(e) {
+//    setverdict(pass, "exception catched")
+//  }
+//}
+testcase tc_predef_str2float_bad2() runs on CT {
+  var charstring vl_cs := "1.2f3";
+  @try {
+    var float f := str2float( vl_cs & c_cs_empty);
+    setverdict(fail, "exception was expected")
+
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+//testcase tc_predef_str2float_bad2b() runs on CT {
+//  @try {
+//    var float f := str2float( "1.2f3"); //semantic error
+//    setverdict(fail, "exception was expected")
+//
+//  } @catch(e) {
+//    setverdict(pass, "exception catched")
+//  }
+//}
+
+testcase tc_predef_str2float_bad3() runs on CT {
+  var charstring vl_cs := "DADDY1.23";
+  @try {
+    var float f := str2float( vl_cs & c_cs_empty);
+    setverdict(fail, "exception was expected")
+
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+testcase tc_predef_str2float_bad4() runs on CT {
+  var charstring vl_cs := "1.23e23d";
+  @try {
+    var float f := str2float( vl_cs & c_cs_empty);
+    setverdict(fail, "exception was expected")
+
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+//=========== rnd ======================
+testcase tc_predef_rnd() runs on CT {
+  var float vl_f := rnd();
+  var float vl_seed :=3.45e+2;
+  for(var integer i:=0; i<10;i:=i+1){
+    vl_f := rnd();
+    if( 0.0 <= vl_f and vl_f< 1.0) {
+      log(vl_f)
+    } else {
+      setverdict(fail, vl_f);
+    }
+    vl_f := rnd(vl_seed);
+    if( 0.0 <= vl_f and vl_f< 1.0) {
+      log(vl_f)
+    } else {
+      setverdict(fail, vl_f);
+    }
+    setverdict(pass);
+  }
+}
+//====== bit2hex ===============
+
+
+testcase tc_predef_bit2hex1() runs on CT {
+  var bitstring vl_bs := '0001'B;
+  var hexstring vl_hs := bit2hex( c_bs_empty1 & vl_bs & vl_bs[1]);
+  if (vl_hs == '02'H) {
+    setverdict(pass)
+  } else {
+    setverdict(fail, "expected '02'H got:", vl_hs);
+  }
+}
+
+testcase tc_predef_bit2hex2() runs on CT {
+  var bitstring vl_bs1 := '0001'B, vl_bs2 :='0010'B,vl_bsF := '1111'B,vl_bsA:= '1010'B;
+
+  var hexstring vl_hs := bit2hex( vl_bs1 & vl_bs2 & vl_bsF & vl_bsA);
+  if (vl_hs == '12FA'H) {
+    setverdict(pass)
+  } else {
+    setverdict(fail, "expected '12FA'H got:", vl_hs);
+  }
+}
+
+
+testcase tc_predef_bit2oct0010() runs on CT {
+  var bitstring vl_bs := '0010'B;
+  var octetstring vl_os := bit2oct(vl_bs);
+  if (vl_os == '02'O) {
+    setverdict(pass)
+  } else {
+    setverdict(fail, "expected '02'H got:", vl_os);
+  }
+}
+
+testcase tc_predef_bit2oct00010() runs on CT {
+  var bitstring vl_bs := '00010'B;
+  var octetstring vl_os := bit2oct(vl_bs);
+  if (vl_os == '02'O) {
+    setverdict(pass)
+  } else {
+    setverdict(fail, "expected '02'O got:", vl_os);
+  }
+}
+testcase tc_predef_bit2oct1() runs on CT {
+  var bitstring vl_bs := '0001'B;
+  var octetstring vl_os := bit2oct( c_bs_empty1 & vl_bs & vl_bs[1]);
+  if (vl_os == '02'O) {
+    setverdict(pass)
+  } else {
+    setverdict(fail, "expected '02'O got:", vl_os);
+  }
+}
+
+testcase tc_predef_bit2oct2() runs on CT {
+  var bitstring vl_bs1 := '0001'B, vl_bs2 :='0010'B,vl_bsF := '1111'B,vl_bsA:= '1010'B;
+
+  var octetstring vl_os := bit2oct( vl_bs1 & vl_bs2 & vl_bsF & vl_bsA);
+  if (vl_os == '12FA'O) {
+    setverdict(pass)
+  } else {
+    setverdict(fail, "expected '12FA'O got:", vl_os);
+  }
+}
+//====== bit2int ===============
+testcase tc_predef_bit2int_good() runs on CT {
+  var RoBS vl_bslist := {'0'B, '00000'B, '1'B, '0001'B,'000000000001'B,'0010'B, '0011'B,'0100'B,'0101'B,
+    '0110'B,'0111'B,'1000'B,'00001000'B,'1001'B,'1010'B, '10000'B, '10001'B
+  }
+  var RoI vl_expectedList := {0,0,1,1,1,2,3,4,5,6,7,8,8,9,10,16,17}
+  var integer N := sizeof(vl_bslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(bit2int(vl_bslist[i])!=vl_expectedList[i]){
+      setverdict(fail, "expected:", vl_expectedList[i]," got:", bit2int(vl_bslist[i]));
+    }
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_bit2int_good_with_space() runs on CT {
+  var bitstring vl_bs := '1 0000'B
+  if (bit2int(vl_bs)!=16 ){
+    setverdict(fail, "expected: 16 got:", bit2int('1 0000'B) );
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_bit2int_good_long1() runs on CT {
+  var bitstring vl_bs := '1 0000 0000 0000 0000'B
+  if (bit2int('1 0000 0000 0000 0000'B)!=65536 ){
+    setverdict(fail, "expected: 65536 got:", bit2int('1 0000 0000 0000 0000'B) );
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_bit2int_good_long2() runs on CT {
+  var bitstring vl_bs := '1 0000 0000 0000 0000'B
+  if (bit2int(vl_bs)!=65536 ){
+    setverdict(fail, "expected: 65536 got:", bit2int(vl_bs) );
+  }
+  setverdict(pass);
+}
+testcase tc_predef_bit2int_good_long3() runs on CT {
+  var bitstring vl_bs := '1 0000 1000 0010 0001'B
+  if (bit2int(vl_bs)!=67617 ){
+    setverdict(fail, "expected: 67617 got:", bit2int(vl_bs) );
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_bit2int_good_long4() runs on CT {
+  var bitstring vl_bs := '10 0000 1000 0010 0001'B
+  if (bit2int(vl_bs)!=133153 ){
+    setverdict(fail, "expected: 133153 got:", bit2int(vl_bs) );
+  }
+  setverdict(pass,"expected: 133153 got:", bit2int(vl_bs));
+}
+
+//Eclipse Titan handles only space as whitespace
+//testcase tc_predef_bit2int_good_with_whitespace() runs on CT {
+//  if (bit2int('1 100000'B)!=16 ){
+//    setverdict(fail, "expected: 16 got:", bit2int('1 0000'B) );
+//  }
+//  setverdict(pass);
+//}
+
+testcase tc_predef_bit2int_good_empty() runs on CT {
+  var bitstring vl_bs :=''B
+  if (bit2int(vl_bs)!=0 ){ //??????
+    setverdict(fail, "expected: 0 got:", bit2int(''B) );
+  }
+  setverdict(pass);
+}
+
+//bit2oct
+testcase tc_predef_bit2oct_good() runs on CT {
+  var RoBS vl_bslist := {'0'B, '00000'B, '1'B, '0001'B,'0000 0000 0001'B,'0010'B, '0011'B,'0100'B,'0101'B,
+    '0110'B,'0111'B,'1000'B,'00001000'B,'1001'B,'1010'B, '10000'B, '10001'B
+  }
+  var RoOS vl_expectedList := {'00'O,'00'O,'01'O,'01'O,'0001'O,'02'O,'03'O,'04'O,'05'O,
+    '06'O,'07'O,'08'O,'08'O,'09'O,'0A'O,'10'O,'11'O}
+  var integer N := sizeof(vl_bslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(bit2oct(vl_bslist[i])!=vl_expectedList[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_expectedList[i]," got:", bit2oct(vl_bslist[i]));
+    }
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_bit2oct_good_with_space() runs on CT {
+  var bitstring vl_bs := '10000'B;
+  if (bit2oct(vl_bs)!='10'O ){
+    setverdict(fail, "expected: '10'O got:", bit2oct('10000'B) );
+  }
+  setverdict(pass);
+}
+//bit2str
+testcase tc_predef_bit2str_good() runs on CT {
+  var RoBS vl_bslist := {'0'B, '00000'B, '1'B, '0001'B,'000000000001'B,'0010'B, '0011'B,'0100'B,'0101'B,
+    '0110'B,'0111'B,'1000'B,'00001000'B,'1001'B,'1010'B, '10000'B, '10001'B
+  }
+  var RoCS vl_expectedList := {"0", "00000", "1", "0001","000000000001","0010", "0011","0100","0101",
+    "0110","0111","1000","00001000","1001","1010", "10000", "10001"
+  }
+  var integer N := sizeof(vl_bslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(bit2str(vl_bslist[i])!=vl_expectedList[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_expectedList[i]," got:", bit2str(vl_bslist[i]));
+    }
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_bit2str_good_with_space() runs on CT {
+  var bitstring vl_bs := '1 0000'B
+  if (bit2str(vl_bs)!="10000" ){
+    setverdict(fail, "expected: \"1 0000\" got:", bit2str('1 0000'B) );
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_bit2str_good_empty() runs on CT {
+  var bitstring vl_bs := ''B
+  if (bit2str(vl_bs)!="" ){
+    setverdict(fail, "expected: \"\" got:", bit2str(''B) );
+  }
+  setverdict(pass);
+}
+
+//char2int
+testcase tc_predef_char2int_good() runs on CT {
+  var RoCS vl_cslist := { "a","b", "z", "A","Z", "0","1", "9"," ","!", "\"","~","\n","\b","\t", "\f","\r" }
+  var RoI vl_expectedList := { 97, 98, 122, 65, 90, 48,49,57, 32, 33, 34,126,10,8,9,12,13}
+  var integer N := sizeof(vl_cslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(char2int(vl_cslist[i])!=vl_expectedList[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_expectedList[i]," got:", char2int(vl_cslist[i]));
+    }
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_char2int_bad1() runs on CT {
+  var charstring vl_cs := "aa";
+  @try {
+    var integer vl_i :=char2int(vl_cs);
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+
+testcase tc_predef_char2int_bad2() runs on CT {
+  var charstring vl_cs := ""
+  @try {
+    var integer vl_i :=char2int(vl_cs);
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+
+//char2oct
+testcase tc_predef_char2oct_good1() runs on CT {
+  var RoCS vl_cslist := {"a","b", "z", "A","Z", "0","1", "9"," ","!", "\"", "\\","~"  }
+  var RoOS vl_expectedList := { '61'O,'62'O,'7A'O, '41'O, '5A'O,'30'O,'31'O,'39'O,'20'O,'21'O, '22'O, '5C'O,'7E'O  }
+  var integer N := sizeof(vl_cslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(char2oct(vl_cslist[i])!=vl_expectedList[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_expectedList[i]," got:", char2oct(vl_cslist[i]));
+    }
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_char2oct_good2() runs on CT {
+  var RoCS vl_cslist := {"abzAZ019 !\"\\~\b\t\n\f\r\'\"*?"  }
+  var RoOS vl_expectedList := { '61627A415A3031392021225C7E08090A0C0D27222A3F'O  }
+  var integer N := sizeof(vl_cslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(char2oct(vl_cslist[i])!=vl_expectedList[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_expectedList[i]," got:", char2oct(vl_cslist[i]));
+    }
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_char2oct_good_empty() runs on CT {
+  var charstring vl_cs := "";
+  if (char2oct(vl_cs)!=''O ){
+    setverdict(fail, "expected: \'\'O got:", char2oct("") );
+  }
+  setverdict(pass);
+}
+//char2hexdigit ??
+//float2int
+testcase tc_predef_float2int_good1() runs on CT {
+  //  var RoC vl_roc := {"1","-123", "-0.000","0.0","+0.0", "1.0", "002.34567890", "+003.000000", "+4.0","5.0e+0", "-6.0e+2", "7.125e+10", "8.250e+100","9e5" }
+  var RoF vl_rof := {1.0, -123.0, -0.0, 0.0, +0.0,1.0, 2.34567890, 3.0, 4.0, 5.0,-600.0, 71.25e+9, 429496729.6e+1, 9e5, -0.1}
+  var RoI vl_expected := {1,-123,0,0,0,1,2,3,4,5,-600, 71250000000, 4294967296,900000, 0}
+  var integer N := sizeof( vl_rof );
+
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(float2int(vl_rof[i])!=vl_expected[i]) {
+      setverdict(fail,"Expected(",i,"): ", vl_expected[i], "got:",float2int(vl_rof[i]));
+    }
+  }
+  setverdict(pass);
+}
+//======= float2str ==============
+testcase tc_predef_float2str_good0() runs on CT {
+  //  var RoC vl_roc := {"1","-123", "-0.000","0.0","+0.0", "1.0", "002.34567890", "+003.000000", "+4.0","5.0e+0", "-6.0e+2", "7.125e+10", "8.250e+100","9e5" }
+  var RoF vl_rof := {1.0, -123.0, -0.0, 0.0, +0.0,1.0, 2.34567890, 3.0, 4.0, 5.0,-600.0, 71.25e+9, 429496729.6e+1, 9e5, -0.1}
+  var RoCS vl_expected := {"1.000000","-123.000000","-0.000000"}
+  var integer N := 2; //sizeof( vl_rof );
+
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(float2str(vl_rof[i])!=vl_expected[i]) {
+      setverdict(fail,"Expected(",i,"): ", vl_expected[i], "got:",float2str(vl_rof[i]), ", log2str:", vl_rof[i]);
+    }
+  }
+  setverdict(pass);
+}
+
+//First case
+// -MAX_DECIMAL_FLOAT<f && f<=-MIN_DECIMAL_FLOAT
+//|| (MIN_DECIMAL_FLOAT<=f && MAX_DECIMAL_FLOAT)
+
+// ( Not scientific notation: )
+testcase tc_predef_float2str_good1() runs on CT{
+  var float f := -0.99e+10;
+  var charstring expected := "-9900000000.000000"; // -9 900 000 000
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} else {setverdict(fail,"Expected:",expected," got: ", log2str(f))}
+}
+
+testcase tc_predef_float2str_good2() runs on CT{ 
+  var float f := 0.99e+10 ; //-MIN_DEC_FLOAT<-f && f<MIN_DEC_FLOAT 
+  var charstring expected := "9900000000.000000"; // -9 900 000 000
+  log(f);
+  if(float2str(f)==expected) {
+    setverdict(pass,"Expected:",expected," got: ", float2str(f), " log2str:", f)
+  } else {
+    setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+testcase tc_predef_float2str_good3() runs on CT{
+  var float f := -0.0001 ;  
+  var charstring expected := "-0.000100";
+  log(f);
+  var charstring logged := float2str(f);
+  if(logged==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} else {setverdict(fail,"Expected:",expected," got: ", logged)}
+}
+
+testcase tc_predef_float2str_good4() runs on CT{
+  var float f := 0.0001 ;  
+  var charstring expected := "0.000100";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} 
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+
+testcase tc_predef_float2str_good5() runs on CT{
+  var float f := -1000.0 ; //-MIN_DEC_FLOAT<-f && f<MIN_DEC_FLOAT 
+  var charstring expected := "-1000.000000";
+  //  var charstring result := float2str(f);
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} 
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+testcase tc_predef_float2str_good6() runs on CT{
+  var float f := 1000.0 ; //-MIN_DEC_FLOAT<-f && f<MIN_DEC_FLOAT 
+  var charstring expected := "1000.000000";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} 
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+testcase tc_predef_float2str_good7() runs on CT{
+  var float f := 0.0 ; //-MIN_DEC_FLOAT<-f && f<MIN_DEC_FLOAT 
+  var charstring expected := "0.000000";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} 
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+//2nd case:
+testcase tc_predef_float2str_good8() runs on CT{
+  var float f := infinity ; //-MIN_DEC_FLOAT<-f && f<MIN_DEC_FLOAT
+  var charstring expected := "infinity";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} 
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+//3rd case:
+testcase tc_predef_float2str_good9() runs on CT{
+  var float f := -infinity ; //-MIN_DEC_FLOAT<-f && f<MIN_DEC_FLOAT
+  var charstring expected := "-infinity";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} 
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+//4th case not a number
+testcase tc_predef_float2str_good10() runs on CT{
+  var float f := not_a_number ; //-MIN_DEC_FLOAT<-f && f<MIN_DEC_FLOAT
+  var charstring expected := "not_a_number";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} 
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+
+//5th case: Scientific notation
+//too small or too big absolut value
+testcase tc_predef_float2str_good11() runs on CT{
+  var float f := -1.0e-5 ; //-MIN_DEC_FLOAT<-f && f<MIN_DEC_FLOAT
+  var charstring expected := "-1.000000e-05";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))}
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+testcase tc_predef_float2str_good12() runs on CT{
+  var float f := 1.0e-5 ; //f<MIN_DEC_FLOAT
+  var charstring expected := "1.000000e-05";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))} 
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+testcase tc_predef_float2str_good13() runs on CT{
+  var float f := 0.000099 ;  
+  var charstring expected := "9.900000e-05";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))}
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), " log2str:", f)}
+}
+
+testcase tc_predef_float2str_good14() runs on CT{
+  var float f := -0.000099;
+  var charstring expected := "-9.900000e-05";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))}
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), "log2str:", f)}
+}
+
+//Status: fails on cpp
+testcase tc_predef_float2str_good15() runs on CT{
+  var float f := 9.987654e+5;
+  var charstring expected := "998765.400000";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))}
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), "log2str:", f)}
+}
+testcase tc_predef_float2str_good16() runs on CT{
+  var float f := 9.987654e-5;
+  var charstring expected := "9.987654e-05";
+  log(f);
+  if(float2str(f)==expected) {setverdict(pass,"Expected:",expected," got: ", float2str(f))}
+  else {setverdict(fail,"Expected:",expected," got: ", float2str(f), "log2str:", f)}
+}
+//hex2bit
+testcase tc_predef_hex2bit_empty1() runs on CT {
+  if(hex2bit(''H)==''B){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+testcase tc_predef_hex2bit_empty2() runs on CT {
+  var hexstring vl_hs :=''H
+  if(hex2bit(vl_hs)==''B){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+testcase tc_predef_hex2bit_unbound() runs on CT {
+  var hexstring vl_hs;
+  @try {
+    if(hex2bit(vl_hs)==''B){
+      setverdict(fail,"DTE expected");
+    } else {
+      setverdict(fail,"DTE expected");
+    }
+  }@catch(e){
+    setverdict(pass, "Expected DTE catched")
+  }
+}
+
+//testcase tc_predef_hex2bit_good1() runs on CT {
+//  var hexstring vl_hs :='FE'H
+//  if(hex2bit(vl_hs)=='11111111'B){
+//    setverdict(pass);
+//  } else {
+//    setverdict(fail);
+//  }
+//}
+
+testcase tc_predef_hex2bit_good1() runs on CT {
+  var RoHS vl_hexaValues := {
+    '0'H,'1'H,'2'H,'3'H,'4'H,
+    '5'H,'6'H,'7'H,'8'H,'9'H,
+    'A'H,'B'H,'C'H,'D'H,'E'H,'F'H
+  }
+  var RoBS vl_expectedValues := { 
+    '0000'B,'0001'B,'0010'B,'0011'B,'0100'B,
+    '0101'B,'0110'B,'0111'B,'1000'B,'1001'B,
+    '1010'B,'1011'B,'1100'B,'1101'B,'1110'B,'1111'B
+  }
+  var integer N := sizeof(vl_hexaValues);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2bit(vl_hexaValues[i])==vl_expectedValues[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    //log(vl_hexaValues[i],"->expected:",vl_expectedValues[i]," got:",hex2bit(vl_hexaValues[i]))
+  }
+}
+
+testcase tc_predef_hex2bit_good2() runs on CT{
+  var RoHS vl_hexaValues := {'01'H,'0A'H,'FF'H}
+  var RoBS vl_expectedValues := {'00000001'B,'0000 1010'B,'11111111'B} 
+  var integer N := sizeof(vl_hexaValues);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2bit(vl_hexaValues[i])==vl_expectedValues[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hexaValues[i],"->expected:",vl_expectedValues[i]," got:",hex2bit(vl_hexaValues[i]))
+  }
+}
+
+testcase tc_predef_hex2bit_good20() runs on CT {
+  var hexstring vl_hs :='ABBA9'H
+  if(hex2bit(vl_hs)=='10101011101110101001'B){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_hex2bit_good21() runs on CT {
+  var hexstring vl_hs :='ABBA9'H
+  var bitstring vl_bs := '10101011101110101001'B
+  var integer N := lengthof(vl_hs);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2bit(vl_hs[i])==substr(vl_bs,i*4,4)){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hs[i],"->",hex2bit(vl_hs[i])," expected: ",substr(vl_bs,i*4,4));
+  }
+}
+//hex2int
+testcase tc_predef_hex2int_unbound() runs on CT {
+  var hexstring vl_hs;
+  @try {
+    if(hex2int(vl_hs)==0){
+      setverdict(fail,"DTE expected");
+    } else {
+      setverdict(fail,"DTE expected");
+    }
+  }@catch(e){
+    setverdict(pass, "Expected DTE catched")
+  }
+}
+
+testcase tc_predef_hex2int_empty() runs on CT {
+  var hexstring vl_hs:=''H;
+  if(hex2int(vl_hs)==0){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_hex2int_good1() runs on CT {
+  var RoHS vl_hexaValues := {
+    '0'H,'1'H,'2'H,'3'H,'4'H,
+    '5'H,'6'H,'7'H,'8'H,'9'H,
+    'A'H,'B'H,'C'H,'D'H,'E'H,'F'H
+  }
+  var RoI vl_expectedValues := { 
+    0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
+  }
+  var integer N := sizeof(vl_hexaValues);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2int(vl_hexaValues[i])==vl_expectedValues[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hexaValues[i],"->expected:",vl_expectedValues[i]," got:",hex2int(vl_hexaValues[i]))
+  }
+}
+
+testcase tc_predef_hex2int_good2() runs on CT{
+  var RoHS vl_hexaValues := {'01'H,'0A'H,'FF'H,'ABBA9'H}
+  var RoI vl_expectedValues := {1,10,255,703401} 
+  var integer N := sizeof(vl_hexaValues);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2int(vl_hexaValues[i])==vl_expectedValues[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hexaValues[i],"->expected:",vl_expectedValues[i]," got:",hex2int(vl_hexaValues[i]))
+  }
+}
+
+testcase tc_predef_hex2int_good20() runs on CT {
+  var hexstring vl_hs :='ABBA9'H
+  if(hex2int(vl_hs)==703401){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+//hex2oct
+testcase tc_predef_hex2oct_empty1() runs on CT {
+  if(hex2oct(''H)==''O) {
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_hex2oct_empty2() runs on CT {
+  var hexstring vl_hs :=''H
+  if(hex2oct(vl_hs)==''O){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+testcase tc_predef_hex2oct_unbound() runs on CT {
+  var hexstring vl_hs;
+  @try {
+    if(hex2oct(vl_hs)==''O){
+      setverdict(fail,"DTE expected");
+    } else {
+      setverdict(fail,"DTE expected");
+    }
+  }@catch(e){
+    setverdict(pass, "Expected DTE catched")
+  }
+}
+
+
+testcase tc_predef_hex2oct_good1() runs on CT {
+  var RoHS vl_hexaValues := {
+    '0'H,'1'H,'2'H,'3'H,'4'H,
+    '5'H,'6'H,'7'H,'8'H,'9'H,
+    'A'H,'B'H,'C'H,'D'H,'E'H,'F'H
+  }
+  var RoOS vl_expectedValues := {
+    '00'O,'01'O,'02'O,'03'O,'04'O,
+    '05'O,'06'O,'07'O,'08'O,'09'O,
+    '0A'O,'0B'O,'0C'O,'0D'O,'0E'O,'0F'O
+  }
+  var integer N := sizeof(vl_hexaValues);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2oct(vl_hexaValues[i])==vl_expectedValues[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hexaValues[i],"->expected:",vl_expectedValues[i]," got:",hex2oct(vl_hexaValues[i]))
+  }
+}
+
+testcase tc_predef_hex2oct_good2() runs on CT{
+  var RoHS vl_hexaValues := {'01'H,'0A'H,'EF'H, 'FF'H}
+  var RoOS vl_expectedValues := {'01'O,'0A'O, 'EF'O, 'FF'O} 
+  var integer N := sizeof(vl_hexaValues);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2oct(vl_hexaValues[i])==vl_expectedValues[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hexaValues[i],"->expected:",vl_expectedValues[i]," got:",hex2oct(vl_hexaValues[i]))
+  }
+}
+
+testcase tc_predef_hex2oct_good1_bug() runs on CT{
+  if(hex2oct('4'H)=='04'O){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+testcase tc_predef_hex2oct_good2_bug() runs on CT{
+  if(hex2oct('00FF'H)=='00FF'O){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_hex2oct_good3_bug() runs on CT{
+  if(hex2oct('0FF'H)=='00FF'O){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+//padding expected
+testcase tc_predef_hex2oct_good4_bug() runs on CT{
+  var hexstring vl_hs := '0FF'H
+  if(hex2oct(vl_hs)=='00FF'O){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_hex2oct_good20() runs on CT {
+  var hexstring vl_hs :='ABBA9'H
+  if(hex2oct(vl_hs)=='0ABBA9'O){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_hex2oct_good21() runs on CT {
+  var hexstring vl_hs :='ABBA9'H
+  var RoOS vl_bs := { '0A'O,'0B'O,'0B'O,'0A'O,'09'O}
+  var integer N := lengthof(vl_hs);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2oct(vl_hs[i])==vl_bs[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hs[i],"->",hex2oct(vl_hs[i])," expected: ",vl_bs[i]);
+  }
+}
+
+//=========hex2str=============
+testcase tc_predef_hex2str_empty1() runs on CT {
+  var hexstring vl_hs :=''H
+  if(hex2str(vl_hs)==""){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+testcase tc_predef_hex2str_unbound() runs on CT {
+  var hexstring vl_hs;
+  @try {
+    if(hex2str(vl_hs)==""){
+      setverdict(fail,"DTE expected");
+    } else {
+      setverdict(fail,"DTE expected");
+    }
+  }@catch(e){
+    setverdict(pass, "Expected DTE catched")
+  }
+}
+
+testcase tc_predef_hex2str_good1() runs on CT {
+  var RoHS vl_hexaValues := {
+    '0'H,'1'H,'2'H,'3'H,'4'H,
+    '5'H,'6'H,'7'H,'8'H,'9'H,
+    'A'H,'B'H,'C'H,'D'H,'E'H,'F'H
+  }
+  var RoCS vl_expectedValues := {
+    "0","1","2","3","4",
+    "5","6","7","8","9",
+    "A","B","C","D","E","F"
+  }
+  var integer N := sizeof(vl_hexaValues);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2str(vl_hexaValues[i])==vl_expectedValues[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hexaValues[i],"->expected:",vl_expectedValues[i]," got:",hex2str(vl_hexaValues[i]))
+  }
+}
+
+testcase tc_predef_hex2str_good2() runs on CT{
+  var RoHS vl_hexaValues := {'01'H,'0A'H,'EF'H, 'FF'H}
+  var RoCS vl_expectedValues := {"01","0A", "EF", "FF"}
+  var integer N := sizeof(vl_hexaValues);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2str(vl_hexaValues[i])==vl_expectedValues[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hexaValues[i],"->expected:",vl_expectedValues[i]," got:",hex2oct(vl_hexaValues[i]))
+  }
+}
+
+testcase tc_predef_hex2str_good1_bug() runs on CT{
+  if(hex2str('4'H)=="4"){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+testcase tc_predef_hex2str_good2_bug() runs on CT{
+  if(hex2str('00FF'H)=="00FF"){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_hex2str_good3_bug() runs on CT{
+  if(hex2str('0FF'H)=="0FF"){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+//padding expected
+testcase tc_predef_hex2str_good4_bug() runs on CT{
+  var hexstring vl_hs := '0FF'H
+  if(hex2str(vl_hs)=="0FF"){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_hex2str_good20() runs on CT {
+  var hexstring vl_hs :='ABBA9'H
+  if(hex2str(vl_hs)=="ABBA9"){
+    setverdict(pass);
+  } else {
+    setverdict(fail);
+  }
+}
+
+testcase tc_predef_hex2str_good21() runs on CT {
+  var hexstring vl_hs :='ABBA9'H
+  var RoCS vl_bs := { "A","B","B","A","9"}
+  var integer N := lengthof(vl_hs);
+  for(var integer i:=0;i<N;i:=i+1){
+    if(hex2str(vl_hs[i])==vl_bs[i]){
+      setverdict(pass);
+    } else {
+      setverdict(fail);
+    }
+    log(vl_hs[i],"->",hex2str(vl_hs[i])," expected: ",vl_bs[i]);
+  }
+}
+
+//int2bit
+testcase tc_predef_int2bit_unbound() runs on CT {
+  var integer vl_i;
+  @try {
+    var bitstring vl_bs := int2bit(vl_i,2);
+    setverdict(fail, "DTE expected");
+  } @catch(e){
+    setverdict(pass,"DTE catched");
+  }
+}
+
+testcase tc_predef_int2bit_wrongLength() runs on CT {
+  var integer vl_i:= 4;
+  @try {
+    var bitstring vl_bs := int2bit(vl_i,2);
+    setverdict(fail, "DTE expected:");
+  } @catch(e){
+    setverdict(pass,"DTE catched");
+  }
+}
+
+testcase tc_predef_int2bit_good1() runs on CT {
+  var RoBS vl_expectedList := {'00000'B, '00001'B,'00010'B, '00011'B,'00100'B,'00101'B,
+    '00110'B,'00111'B,'01000'B,'01001'B,'01010'B, '10000'B, '10001'B 
+  }
+  var RoI vl_intList := {0,1,2,3,4,5,6,7,8,9,10,16,17}
+  var integer N := sizeof(vl_intList);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(int2bit(vl_intList[i],5) != vl_expectedList[i]){
+      setverdict(fail, "expected:", vl_expectedList[i]," got:", int2bit(vl_intList[i],5) );
+    }
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_int2bit_good2() runs on CT {
+  var RoBS vl_expectedList := {'011111111'B,'100000000'B
+  }
+  var RoI vl_intList := {255,256}
+  var integer N := sizeof(vl_intList);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(int2bit(vl_intList[i],9) != vl_expectedList[i]){
+      setverdict(fail, "expected:", vl_expectedList[i]," got:", int2bit(vl_intList[i],9) );
+    }
+  }
+  setverdict(pass);
+}
+
+
+testcase tc_predef_int2bit_good3() runs on CT {
+  var RoBS vl_expectedList := {'0111111110000'B,'1000000000000'B
+  }
+  var RoI vl_intList := {255*16,256*16}
+  var integer N := sizeof(vl_intList);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(int2bit(vl_intList[i],9+4) != vl_expectedList[i]){
+      setverdict(fail, "expected:", vl_expectedList[i]," got:", int2bit(vl_intList[i],9+4) );
+    }
+  }
+  setverdict(pass);
+}
+//==== int2char ======
+testcase tc_predef_int2char_good() runs on CT {
+  var RoCS vl_cslist := { "a","b", "z", "A","Z", "0","1", "9"," ","!", "\"","~","\n","\b","\t","\f","\r"}
+  var RoI vl_intList := { 97, 98, 122, 65, 90, 48,49,57, 32, 33, 34,126,10,8,9,12,13}
+  var integer N := sizeof(vl_cslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(int2char(vl_intList[i])!=vl_cslist[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_cslist[i]," got:", int2char(vl_intList[i]));
+    }
+    //    log("expected (i=",i,") ", vl_cslist[i]," got:", int2char(vl_intList[i]))
+  }
+  setverdict(pass);
+}
+testcase tc_predef_int2char_list() runs on CT {
+  var charstring vl_c :="";
+  for(var integer i:=0;i<128; i:=i+1){
+    vl_c := int2char(i);
+    //    log(int2char(i));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_int2char_bad1() runs on CT {
+  var integer i := 128;
+  @try {
+    var charstring vl_cs := int2char(i)
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+
+testcase tc_predef_int2char_bad2() runs on CT {
+  var integer i := -1;
+  @try {
+    var charstring vl_cs := int2char(i)
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+//==== int2float =====
+testcase tc_predef_int2float_good1() runs on CT {
+  var RoI vl_intlist := {1,-123,0,1,2,3,4,5,-600, 71250000000, 4294967296,9000000, 123000000000000000  }
+  var RoF vl_floatlist :={1.0,-123.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, -600.0, 7.125e+10, 4294967296.0, 9000000.0,  1.23e+17}
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2float(vl_intlist[i])!=vl_floatlist[i]){
+      setverdict(fail);
+    }
+    //    log((int2float(vl_intlist[i])));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_int2float_good2() runs on CT {
+  const integer c_10e12 := 1000*1000*1000*1000;
+  var RoI vl_intlist := {c_10e12,  c_10e12*c_10e12, c_10e12*c_10e12*c_10e12}
+  var RoF vl_floatlist :={ 1.0e+12, 1e24,1.0e36}
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2float(vl_intlist[i])!=vl_floatlist[i]){
+      setverdict(fail);
+    }
+    //    log((int2float(vl_intlist[i])));
+  }
+  setverdict(pass);
+}
+
+//==== int2hex ====
+
+testcase tc_predef_int2hex_good1() runs on CT {
+  var RoI vl_intlist := {0,1,123, 600, 703401  }
+  var RoHS vl_hexlist :={'00000'H,'00001'H,'0007B'H,'00258'H, 'ABBA9'H}
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2hex(vl_intlist[i],5)!=vl_hexlist[i]){
+      setverdict(fail);
+    }
+    //    log((int2hex(vl_intlist[i],5)));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_int2hex_bad1() runs on CT {
+  var integer i := -1;
+  @try {
+    var hexstring vl_cs := int2hex(i,2)
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+
+testcase tc_predef_int2hex_bad2() runs on CT {
+  var integer i := 600;
+  @try {
+    var hexstring vl_cs := int2hex(i,2)
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+
+testcase tc_predef_int2hex_bad3() runs on CT {
+  var integer i := 703401;
+  @try {
+    var hexstring vl_cs := int2hex(i,4)
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+//int2oct
+testcase tc_predef_int2oct_good1() runs on CT {
+  var RoI vl_intlist := {0,1,123, 600, 703401 }
+  var RoOS vl_octlist :={'000000'O,'000001'O,'00007B'O,'000258'O, '0ABBA9'O }
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2oct(vl_intlist[i],3)!=vl_octlist[i]){
+      setverdict(fail);
+    }
+    //    log((int2oct(vl_intlist[i],3)));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_int2oct_good1a() runs on CT {
+  var RoI vl_intlist := {2147483648,2147483648*256,2147483648*256*2}
+  var RoI vl_lenlist := {4,5,6}
+  var RoOS vl_octlist := {'8000 0000'O,'80 0000 0000'O,'010000000000'O}
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2oct(vl_intlist[i],vl_lenlist[i])!=vl_octlist[i]){
+      setverdict(fail, "expected: ", vl_octlist[i]," got: ",int2oct(vl_intlist[i],vl_lenlist[i]));
+    }
+    //    log((int2oct(vl_intlist[i],4)));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_int2oct_good2() runs on CT {
+  var RoI vl_intlist := {0,c_2e31/8,c_2e31/2,c_2e31 /*first BigInteger - ok*/,
+    1*c_2e32-1,1*c_2e32,123*c_2e32, 600*c_2e32, 703401*c_2e32  }
+  var RoOS vl_octlist :={
+    '000000000000000000000000000000'O,
+    '000000000000000000000010000000'O,
+    '000000000000000000000040000000'O,
+    '000000000000000000000080000000'O,
+    '0000000000000000000000FFFFFFFF'O,
+    '000000000000000000000100000000'O,
+    '000000000000000000007B00000000'O,
+    '000000000000000000025800000000'O,
+    '00000000000000000ABBA900000000'O
+  }
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2oct(vl_intlist[i],3+12)!=vl_octlist[i]){
+      setverdict(fail,"expected: ", vl_octlist[i]," got: ",int2oct(vl_intlist[i],3+12));
+    }
+    //    log((int2oct(vl_intlist[i],3+12)));
+  }
+  setverdict(pass);
+}
+testcase tc_predef_int2oct_good3() runs on CT {
+  var RoI vl_intlist := {0,1*c_2e32,123*c_2e32, 600*c_2e32, 703401*c_2e32  }
+  var RoOS vl_octlist :={
+    '00000000000000'O,
+    '00000100000000'O,
+    '00007B00000000'O,
+    '00025800000000'O,
+    '0ABBA900000000'O
+  }
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2oct(vl_intlist[i],3+4)!=vl_octlist[i]){
+      setverdict(fail,"expected: ", vl_octlist[i]," got: ",int2oct(vl_intlist[i],3+4));
+    }
+    //    log((int2oct(vl_intlist[i],3+4)));
+  }
+  setverdict(pass);
+}
+testcase tc_predef_int2oct_bad1() runs on CT {
+  var integer i := -1;
+  @try {
+    var octetstring vl_cs := int2oct(i,2)
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+
+testcase tc_predef_int2oct_bad2() runs on CT {
+  var integer i := 600;
+  @try {
+    var octetstring vl_cs := int2oct(i,1)
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+
+testcase tc_predef_int2oct_bad3() runs on CT {
+  var integer i := 703401;
+  @try {
+    var octetstring vl_cs := int2oct(i,2)
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+
+testcase tc_predef_int2oct_bad4() runs on CT {
+  var integer i := 2147483648;
+  @try {
+    var octetstring vl_cs := int2oct(i,3)
+    setverdict(fail, "Not expected to reach this line, DTE expected")
+  } @catch(e){
+    setverdict(pass, "DTE catched")
+  }
+}
+
+//int2str
+testcase tc_predef_int2str_good1() runs on CT {
+  var RoI vl_intlist := {0,1,123, 600, 703401,-703401}
+  var RoCS vl_strlist :={"0","1","123","600","703401","-703401"}
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2str(vl_intlist[i])!=vl_strlist[i]){
+      setverdict(fail);
+    }
+    //    log((int2str(vl_intlist[i])));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_int2str_good2() runs on CT {
+  var RoI vl_intlist := {0,c_2e31/8,c_2e31/2,c_2e31 /*first BigInteger - ok*/,
+    1*c_2e32-1,1*c_2e32,123*c_2e32, 600*c_2e32, 703401*c_2e32  }
+  var RoCS vl_strlist :={
+    "0",
+    "268435456",
+    "1073741824",
+    "2147483648",
+    "4294967295",
+    "4294967296",
+    "528280977408", 
+    "2576980377600",
+    "3021084290973696"
+  }
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2str(vl_intlist[i])!=vl_strlist[i]){
+      setverdict(fail,"expected: ", vl_strlist[i]," got: ",int2str(vl_intlist[i]));
+    }
+    //    log((int2str(vl_intlist[i])));
+  }
+  setverdict(pass);
+}
+//int2unichar
+testcase tc_predef_int2unichar_good1() runs on CT {
+  var RoI vl_intlist := {0,1,123, 600, 703401}
+  var RoUCS vl_strlist :={char(0,0,0,0),char(0,0,0,1),"{",char(0,0,2,88),char(0,10,187,169)}
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2unichar(vl_intlist[i])!=vl_strlist[i]){
+      setverdict(fail,i);
+    }
+    //    log((int2unichar(vl_intlist[i])));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_int2unichar_good2() runs on CT {
+  var RoI vl_intlist := {0,c_2e31/8,c_2e31/2, c_2e31-1}
+  var RoUCS vl_strlist :={
+    char(0, 0, 0, 0),
+    char(16, 0, 0, 0),
+    char(64, 0, 0, 0),
+    char(127,255,255,255)
+  }
+  var integer N := sizeof( vl_intlist );
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(int2unichar(vl_intlist[i])!=vl_strlist[i]){
+      setverdict(fail,"expected: ", vl_strlist[i]," got: ",int2unichar(vl_intlist[i]));
+    }
+    //    log((int2unichar(vl_intlist[i])));
+  }
+  setverdict(pass);
+}
+
+
+testcase tc_predef_int2unichar_bad1() runs on CT {
+  var integer vl_i := -1;
+  var universal charstring vl_cs;
+  @try {
+    vl_cs := int2unichar(vl_i);
+    setverdict(fail, "exception was expected but got:",vl_cs)
+
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+testcase tc_predef_int2unichar_bad2() runs on CT {
+  var integer vl_i := c_2e31 /*first BigInteger - ok*/;
+  var universal charstring vl_cs;
+  @try {
+    vl_cs := int2unichar(vl_i);
+    setverdict(fail, "exception was expected but got:",vl_cs)
+
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+testcase tc_predef_int2unichar_bad3() runs on CT {
+  var integer vl_i := 703401*c_2e32;
+  var universal charstring vl_cs;
+  @try {
+    vl_cs := int2unichar(vl_i);
+    setverdict(fail, "exception was expected but got:",vl_cs)
+
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+//===== oct2bit =====
+testcase tc_predef_oct2bit_good() runs on CT {
+  var RoBS vl_bslist := {
+    '00000000'B, '0000 0001'B,'0000 0000 0000 0001'B,'0000 0010'B, '0000 0011'B,
+    '0000 0100'B,'0000 0101'B,'0000 0110'B,'0000 0111'B,'0000 1000'B,
+    '0000 1001'B,'0000 1010'B, '0001 0000'B, '0001 0001'B, '0000 0000 0000 0000 0001 0001'B, 
+    '1010 1011 1100 1101 1110 1111'B
+  }
+  var RoOS vl_oslist := {
+    '00'O,'01'O,'0001'O,'02'O,'03'O,
+    '04'O,'05'O,'06'O,'07'O,'08'O,
+    '09'O,'0A'O,'10'O,'11'O,'00 00 11'O, 
+    'AB CD EF'O
+  }
+  var integer N := sizeof(vl_oslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(oct2bit(vl_oslist[i])!=vl_bslist[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_bslist[i]," got:", oct2bit(vl_oslist[i]));
+    }
+    log(oct2bit(vl_oslist[i]))
+  }
+  setverdict(pass);
+}
+
+//oct2char
+//1. "The input parameter invalue shall not contain octet values higher than 7F."
+//2. "The resulting charstring shall have the same length as the input octetstring."
+
+testcase tc_predef_oct2char_good1() runs on CT {
+  var RoOS vl_oslist := {
+    '00'O,'01'O,'0001'O,'02'O,'03'O,
+    '04'O,'05'O,'06'O,'07'O,'08'O,
+    '08'O,'09'O,'0A'O,'10'O,'11'O,
+    '00 00 11'O,'1A'O,'7F'O, '30 31 32 33 39 3A 3B 7e 60'O,''O
+  }
+  var RoCS vl_cslist := {
+    char(0, 0, 0, 0),char(0, 0, 0, 1),char(0, 0, 0, 0) & char(0, 0, 0, 1),char(0, 0, 0, 2),char(0, 0, 0, 3),
+    char(0, 0, 0, 4),char(0, 0, 0, 5),char(0, 0, 0, 6),char(0, 0, 0, 7),char(0, 0, 0, 8),
+    "\b","\t","\n",char(0, 0, 0, 16),char(0, 0, 0, 17),
+    char(0, 0, 0, 0)& char(0, 0, 0, 0)& char(0, 0, 0, 17),
+    char(0, 0, 0, 26), char(0,0,0,127), "01239:;~`",""
+  }
+  var integer N := sizeof(vl_oslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(oct2char(vl_oslist[i])!=vl_cslist[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_cslist[i]," got:", oct2char(vl_oslist[i]));
+    }
+    log(oct2char(vl_oslist[i]))
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_oct2char_good2() runs on CT {
+  var RoOS vl_oslist := {
+    '00'O,'01'O,'02'O,'03'O,
+    '04'O,'05'O,'06'O,'07'O,'08'O,
+    '09'O,'0A'O,'0b'O,'0C'O, '0d'O,'0e'O,'0f'O,
+    '10'O, '11'O,'12'O,'13'O
+  }
+  var integer N := sizeof(vl_oslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(oct2char(vl_oslist[i])!= int2char(i)) {
+      setverdict(fail, "expected (i=",i,") ",int2char(i)," got:", oct2char(vl_oslist[i]));
+    }
+    //    log(oct2char(vl_oslist[i]))
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_oct2char_bad1() runs on CT {
+  var charstring vl_cs;
+  var octetstring vl_os := '80'O;
+  @try {
+    vl_cs := oct2char(vl_os);
+    setverdict(fail, "exception was expected but got:",vl_cs)
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+testcase tc_predef_oct2char_bad2() runs on CT {
+  var charstring vl_cs;
+  var octetstring vl_os := 'AF'O;
+  @try {
+    vl_cs := oct2char(vl_os);
+    setverdict(fail, "exception was expected but got:",vl_cs)
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+
+testcase tc_predef_oct2char_bad3() runs on CT {
+  var charstring vl_cs;
+  var octetstring vl_os := 'FF'O;
+  @try {
+    vl_cs := oct2char(vl_os);
+    setverdict(fail, "exception was expected but got:",vl_cs)
+  } @catch(e) {
+    setverdict(pass, "exception catched")
+  }
+}
+//oct2hex
+
+testcase tc_predef_oct2hex_good1() runs on CT {
+  var RoOS vl_oslist := {
+    '00'O,'01'O,'0001'O,'02'O,'03'O,
+    '04'O,'05'O,'06'O,'07'O,'08'O,
+    '08'O,'09'O,'0A'O,'10'O,'11'O, 
+    '00 00 11'O,'1A'O,'7F'O, '30 31 32 33 39 3A 3B 7e 60'O, 'ABBA'O, ''O
+  }
+  var RoHS vl_cslist :=  {
+    '00'H,'01'H,'0001'H,'02'H,'03'H,
+    '04'H,'05'H,'06'H,'07'H,'08'H,
+    '08'H,'09'H,'0A'H,'10'H,'11'H, 
+    '00 00 11'H,'1A'H,'7F'H, '30 31 32 33 39 3A 3B 7e 60'H,'ABBA'H,''H
+  }
+  var integer N := sizeof(vl_oslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(oct2hex(vl_oslist[i])!=vl_cslist[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_cslist[i]," got:", oct2hex(vl_oslist[i]));
+    }
+    //    log(oct2hex(vl_oslist[i]))
+  }
+  setverdict(pass);
+}
+//oct2int
+testcase tc_predef_oct2int_good1() runs on CT {
+  var RoOS vl_oslist := {
+    '00'O,'01'O,'0001'O,'02'O,'03'O,
+    '04'O,'05'O,'06'O,'07'O,'08'O,
+    '09'O,'0A'O,'10'O,'11'O, 
+    '00 00 11'O,'1A'O,'7F'O,'ABBA'O, 'FFFF FFFF'O, '01 0000 0000'O
+  }
+  var RoI vl_intlist := {
+    0,1,1,2,3,4,5,6,7,8,9,
+    10,16,17,17,26,127,43962, 4294967295, 4294967296
+  }
+  var integer N := sizeof(vl_oslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(oct2int(vl_oslist[i])!=vl_intlist[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_intlist[i]," got:", oct2int(vl_oslist[i]));
+    }
+    //    log(oct2int(vl_oslist[i]))
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_oct2int_good1a() runs on CT {
+  var octetstring vl_os := '30 31 32 33 39 3A 3B 7e 60'O;
+  var integer vl_i := 888988667715635609184;
+  if(oct2int(vl_os) != vl_i) {
+    setverdict(fail,"expected:", vl_i, " got: ", oct2int(vl_os));
+  } else {
+    setverdict(pass);
+  }
+}
+
+testcase tc_predef_oct2int_good1b() runs on CT {
+  var octetstring vl_os := '10 0000 0000 0000 0000'O;
+  var integer vl_i := 16*65536*65536*65536*65536;
+  if(oct2int(vl_os) != vl_i) {
+    setverdict(fail,"expected:", vl_i, " got: ", oct2int(vl_os));
+  } else {
+    setverdict(pass,"expected:", vl_i, " got: ", oct2int(vl_os));
+  }
+}
+
+testcase tc_predef_oct2int_good2() runs on CT {
+  const RoOS vl_oslist := {
+    '00'O,'01'O,'0001'O,'02'O,'03'O,
+    '04'O,'05'O,'06'O,'07'O,'08'O,
+    '09'O,'0A'O,'10'O,'11'O, 
+    '00 00 11'O,'1A'O,'7F'O, '30 31 32 33 39 3A 3B 7e 60'O, 'ABBA'O
+  }
+  var RoI vl_intlist := {
+    0,1,1,2,3,4,5,6,7,8,9,
+    10,16,17,17,26,127,888988667715635609184,43962
+  }
+  var integer N := sizeof(vl_oslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(oct2int(vl_oslist[i])!=vl_intlist[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_intlist[i]," got:", oct2int(vl_oslist[i]));
+    }
+    //    log(oct2int(vl_oslist[i]))
+  }
+  setverdict(pass);
+}
+
+
+
+testcase tc_predef_oct2int_empty() runs on CT {
+  var integer vl_i;
+  var octetstring vl_os := ''O;
+  if (oct2int(vl_os)!= 0) {
+    setverdict(fail,"expected 0")
+  } else {
+    setverdict(pass)
+  }
+}
+
+//oct2str
+testcase tc_predef_oct2str_good1() runs on CT {
+  var RoOS vl_oslist := {
+    '00'O,'01'O,'0001'O,'02'O,'03'O,
+    '04'O,'05'O,'06'O,'07'O,'08'O,
+    '08'O,'09'O,'0A'O,'10'O,'11'O, 
+    '00 00 11'O,'1A'O,'7F'O, '30 31 32 33 39 3A 3B 7e 60'O, 'ABBA'O, ''O
+  }
+  var RoCS vl_cslist :=  {
+    "00","01","0001","02","03",
+    "04","05","06","07","08",
+    "08","09","0A","10","11", 
+    "000011","1A","7F", "30313233393A3B7E60","ABBA",""
+  }
+  var integer N := sizeof(vl_oslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(oct2str(vl_oslist[i])!=vl_cslist[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_cslist[i]," got:", oct2str(vl_oslist[i]));
+    }
+    //    log(oct2str(vl_oslist[i]))
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_oct2str_good2() runs on CT {
+  const RoOS vl_oslist := {
+    '00'O,'01'O,'0001'O,'02'O,'03'O,
+    '04'O,'05'O,'06'O,'07'O,'08'O,
+    '08'O,'09'O,'0A'O,'10'O,'11'O, 
+    '00 00 11'O,'1A'O,'7F'O, '30 31 32 33 39 3A 3B 7e 60'O, 'ABBA'O, ''O
+  }
+  var RoCS vl_cslist :=  {
+    "00","01","0001","02","03",
+    "04","05","06","07","08",
+    "08","09","0A","10","11", 
+    "000011","1A","7F", "30313233393A3B7E60","ABBA",""
+  }
+  var integer N := sizeof(vl_oslist);
+  for(var integer i:=0;i<N; i:=i+1){
+    if(oct2str(vl_oslist[i])!=vl_cslist[i]){
+      setverdict(fail, "expected (i=",i,") ", vl_cslist[i]," got:", oct2str(vl_oslist[i]));
+    }
+    //    log(oct2str(vl_oslist[i]))
+  }
+  setverdict(pass);
+}
+
+//================================================
+//============ replace() =========================
+//================================================
+
+//*********** Replace() for bitstring ************
+
+// remove 2 chars from the beginnining, compile time
+testcase tc_predef_replace_bitstring_1() runs on CT {
+  var bitstring vl_bs := replace('0000 1111'B,0,2,''B);
+  if(vl_bs != '00 1111'B){
+    setverdict(fail, "expected '001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//var pars
+testcase tc_predef_replace_bitstring_1a() runs on CT {
+  var integer vl_beginning :=0, vl_len := 2;
+  var bitstring vl_bs := replace('0000 1111'B,vl_beginning,vl_len,''B);
+  if(vl_bs != '00 1111'B){
+    setverdict(fail, "expected '001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//const pars
+testcase tc_predef_replace_bitstring_1b() runs on CT {
+  const integer vl_beginning :=0, vl_len := 2;
+  var bitstring vl_bs := replace('0000 1111'B,vl_beginning,vl_len,''B);
+  if(vl_bs != '00 1111'B){
+    setverdict(fail, "expected '001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining, run time
+testcase tc_predef_replace_bitstring_2() runs on CT {
+  var bitstring vl_bs0 := '0000 1111'B
+  var bitstring vl_bs := replace(vl_bs0,0,2,''B);
+  if(vl_bs != '00 1111'B){
+    setverdict(fail, "expected '001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining, run time
+//parameters are variables
+testcase tc_predef_replace_bitstring_2a() runs on CT {
+  var integer vl_beginning :=0, vl_len := 2;
+  var bitstring vl_bs0 := '0000 1111'B
+  var bitstring vl_bs := replace(vl_bs0,vl_beginning,vl_len,''B);
+  if(vl_bs != '00 1111'B){
+    setverdict(fail, "expected '001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining,insert 1 char compile time
+testcase tc_predef_replace_bitstring_3() runs on CT {
+  var bitstring vl_bs := replace('0000 1111'B,0,2,'1'B);
+  if(vl_bs != '100 1111'B){
+    setverdict(fail, "expected '1001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 1 char runtime
+testcase tc_predef_replace_bitstring_4() runs on CT {
+  var bitstring vl_bs0 := '0000 1111'B
+  var bitstring vl_bs := replace(vl_bs0,0,2,'1'B);
+  if(vl_bs != '100 1111'B){
+    setverdict(fail, "expected '1001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining,insert 2 char compile time
+testcase tc_predef_replace_bitstring_5() runs on CT {
+  var bitstring vl_bs := replace('0000 1111'B,0,2,'11'B);
+  if(vl_bs != '1100 1111'B){
+    setverdict(fail, "expected '11001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 2 char runtime
+testcase tc_predef_replace_bitstring_6() runs on CT {
+  var bitstring vl_bs0 := '0000 1111'B
+  var bitstring vl_bs := replace(vl_bs0,0,2,'11'B);
+  if(vl_bs != '1100 1111'B){
+    setverdict(fail, "expected '11001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining,insert 3 char compile time
+testcase tc_predef_replace_bitstring_7() runs on CT {
+  var bitstring vl_bs := replace('0000 1111'B,0,2,'111'B);
+  if(vl_bs != '11100 1111'B){
+    setverdict(fail, "expected '111001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 3 char runtime
+testcase tc_predef_replace_bitstring_8() runs on CT {
+  var bitstring vl_bs0 := '0000 1111'B
+  var bitstring vl_bs := replace(vl_bs0,0,2,'111'B);
+  if(vl_bs != '11100 1111'B){
+    setverdict(fail, "expected '111001111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the second char (index position 1), insert 3 char compile time
+testcase tc_predef_replace_bitstring_9() runs on CT {
+  var bitstring vl_bs := replace('0000 1111'B,1,2,'111'B);
+  if(vl_bs != '0 1110 1111'B){
+    setverdict(fail, "expected '011101111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the second char (index position 1), insert 3 char runtime
+testcase tc_predef_replace_bitstring_10() runs on CT {
+  var bitstring vl_bs0 := '0000 1111'B
+  var bitstring vl_bs := replace(vl_bs0,1,2,'111'B);
+  if(vl_bs != '011101111'B){
+    setverdict(fail, "expected '011101111'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// append 3 chars compile time
+testcase tc_predef_replace_bitstring_11() runs on CT {
+  var bitstring vl_bs := replace('0000 1111'B,8,0,'011'B);
+  if(vl_bs != '0000 1111 011'B){
+    setverdict(fail, "expected '00001111011'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// append 3 char runtime
+testcase tc_predef_replace_bitstring_12() runs on CT {
+  var bitstring vl_bs0 := '0000 1111'B
+  var bitstring vl_bs := replace(vl_bs0,8,0,'011'B);
+  if(vl_bs != '0000 1111 011'B){
+    setverdict(fail, "expected '00001111011'B got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace' is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_bitstring_13_bad() runs on CT {
+//  var bitstring vl_bs := replace('0000 1111'B,8,1,'011'B);
+
+//}
+
+//too long index: 8+1
+testcase tc_predef_replace_bitstring_14_bad() runs on CT {
+  var bitstring vl_bs0 := '0000 1111'B
+  @try {
+    var bitstring vl_bs := replace(vl_bs0,8,1,'011'B);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace' is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_bitstring_15_bad() runs on CT {
+//  var bitstring vl_bs := replace('0000 1111'B,7,2,'011'B);
+//}
+////Expected on-the-fly semantic marker:
+////The third operand of operation `replace' should not be negative
+//testcase tc_predef_replace_bitstring_15a_bad() runs on CT {
+//  var bitstring vl_bs := replace('0000 1111'B,7,-2,'011'B);
+//}
+//testcase tc_predef_replace_bitstring_15b_bad() runs on CT {
+//  var bitstring vl_bs := replace('0000 1111'B,7,-2,'11'H);
+//}
+
+//too long index: 7+2
+testcase tc_predef_replace_bitstring_16_bad() runs on CT {
+  var bitstring vl_bs0 := '0000 1111'B
+  @try {
+    var bitstring vl_bs := replace(vl_bs0,7,2,'011'B);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+//too long index: 9+0
+testcase tc_predef_replace_bitstring_18_bad() runs on CT {
+  var bitstring vl_bs0 := '0000 1111'B
+  @try {
+    var bitstring vl_bs := replace(vl_bs0,9,0,'011'B);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+
+//*********** Replace() for hexstring ************
+
+// remove 2 chars from the beginnining, compile time
+testcase tc_predef_replace_hexstring_1() runs on CT {
+  var hexstring vl_bs := replace('0000 1111'H,0,2,''H);
+  if(vl_bs != '00 1111'H){
+    setverdict(fail, "expected '001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//var pars
+testcase tc_predef_replace_hexstring_1a() runs on CT {
+  var integer vl_beginning :=0, vl_len := 2;
+  var hexstring vl_bs := replace('0000 1111'H,vl_beginning,vl_len,''H);
+  if(vl_bs != '00 1111'H){
+    setverdict(fail, "expected '001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//const pars
+testcase tc_predef_replace_hexstring_1b() runs on CT {
+  const integer vl_beginning :=0, vl_len := 2;
+  var hexstring vl_bs := replace('0000 1111'H,vl_beginning,vl_len,''H);
+  if(vl_bs != '00 1111'H){
+    setverdict(fail, "expected '001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining, run time
+testcase tc_predef_replace_hexstring_2() runs on CT {
+  var hexstring vl_bs0 := '0000 1111'H
+  var hexstring vl_bs := replace(vl_bs0,0,2,''H);
+  if(vl_bs != '00 1111'H){
+    setverdict(fail, "expected '001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining, run time
+//parameters are variables
+testcase tc_predef_replace_hexstring_2a() runs on CT {
+  var integer vl_beginning :=0, vl_len := 2;
+  var hexstring vl_bs0 := '0000 1111'H
+  var hexstring vl_bs := replace(vl_bs0,vl_beginning,vl_len,''H);
+  if(vl_bs != '00 1111'H){
+    setverdict(fail, "expected '001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining,insert 1 char compile time
+testcase tc_predef_replace_hexstring_3() runs on CT {
+  var hexstring vl_bs := replace('0000 1111'H,0,2,'1'H);
+  if(vl_bs != '100 1111'H){
+    setverdict(fail, "expected '1001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 1 char runtime
+testcase tc_predef_replace_hexstring_4() runs on CT {
+  var hexstring vl_bs0 := '0000 1111'H
+  var hexstring vl_bs := replace(vl_bs0,0,2,'1'H);
+  if(vl_bs != '100 1111'H){
+    setverdict(fail, "expected '1001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining,insert 2 char compile time
+testcase tc_predef_replace_hexstring_5() runs on CT {
+  var hexstring vl_bs := replace('0000 1111'H,0,2,'11'H);
+  if(vl_bs != '1100 1111'H){
+    setverdict(fail, "expected '11001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 2 char runtime
+testcase tc_predef_replace_hexstring_6() runs on CT {
+  var hexstring vl_bs0 := '0000 1111'H
+  var hexstring vl_bs := replace(vl_bs0,0,2,'11'H);
+  if(vl_bs != '1100 1111'H){
+    setverdict(fail, "expected '11001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining,insert 3 char compile time
+testcase tc_predef_replace_hexstring_7() runs on CT {
+  var hexstring vl_bs := replace('0000 1111'H,0,2,'111'H);
+  if(vl_bs != '11100 1111'H){
+    setverdict(fail, "expected '111001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 3 char runtime
+testcase tc_predef_replace_hexstring_8() runs on CT {
+  var hexstring vl_bs0 := '0000 1111'H
+  var hexstring vl_bs := replace(vl_bs0,0,2,'111'H);
+  if(vl_bs != '11100 1111'H){
+    setverdict(fail, "expected '111001111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the second char (index position 1), insert 3 char compile time
+testcase tc_predef_replace_hexstring_9() runs on CT {
+  var hexstring vl_bs := replace('0000 1111'H,1,2,'111'H);
+  if(vl_bs != '0 1110 1111'H){
+    setverdict(fail, "expected '011101111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the second char (index position 1), insert 3 char runtime
+testcase tc_predef_replace_hexstring_10() runs on CT {
+  var hexstring vl_bs0 := '0000 1111'H
+  var hexstring vl_bs := replace(vl_bs0,1,2,'111'H);
+  if(vl_bs != '011101111'H){
+    setverdict(fail, "expected '011101111'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// append 3 chars compile time
+testcase tc_predef_replace_hexstring_11() runs on CT {
+  var hexstring vl_bs := replace('0000 1111'H,8,0,'011'H);
+  if(vl_bs != '0000 1111 011'H){
+    setverdict(fail, "expected '00001111011'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// append 3 char runtime
+testcase tc_predef_replace_hexstring_12() runs on CT {
+  var hexstring vl_bs0 := '0000 1111'H
+  var hexstring vl_bs := replace(vl_bs0,8,0,'011'H);
+  if(vl_bs != '0000 1111 011'H){
+    setverdict(fail, "expected '00001111011'H got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace' is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_hexstring_13_bad() runs on CT {
+//  var hexstring vl_bs := replace('0000 1111'H,8,1,'011'H);
+
+//}
+
+//too long index: 8+1
+testcase tc_predef_replace_hexstring_14_bad() runs on CT {
+  var hexstring vl_bs0 := '0000 1111'H
+  @try {
+    var hexstring vl_bs := replace(vl_bs0,8,1,'011'H);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace' is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_hexstring_15_bad() runs on CT {
+//  var hexstring vl_bs := replace('0000 1111'H,7,2,'011'H);
+//}
+////Expected on-the-fly semantic marker:
+////The third operand of operation `replace' should not be negative
+//testcase tc_predef_replace_hexstring_15a_bad() runs on CT {
+//  var hexstring vl_bs := replace('0000 1111'H,7,-2,'011'H);
+//}
+//testcase tc_predef_replace_hexstring_15b_bad() runs on CT {
+//  var hexstring vl_bs := replace('0000 1111'H,7,-2,'11'H);
+//}
+
+//too long index: 7+2
+testcase tc_predef_replace_hexstring_16_bad() runs on CT {
+  var hexstring vl_bs0 := '0000 1111'H
+  @try {
+    var hexstring vl_bs := replace(vl_bs0,7,2,'011'H);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+//too long index: 9+0
+testcase tc_predef_replace_hexstring_18_bad() runs on CT {
+  var hexstring vl_bs0 := '0000 1111'H
+  @try {
+    var hexstring vl_bs := replace(vl_bs0,9,0,'011'H);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+
+//*********** Replace() for octetstring **********
+
+
+// remove 2 chars from the beginnining, compile time
+testcase tc_predef_replace_octetstring_1() runs on CT {
+  var octetstring vl_bs := replace('0000 1111'O,0,1,''O);
+  if(vl_bs != '00 1111'O){
+    setverdict(fail, "expected '001111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//var pars
+testcase tc_predef_replace_octetstring_1a() runs on CT {
+  var integer vl_beginning :=0, vl_len := 1;
+  var octetstring vl_bs := replace('0000 1111'O,vl_beginning,vl_len,''O);
+  if(vl_bs != '00 1111'O){
+    setverdict(fail, "expected '001111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//const pars
+testcase tc_predef_replace_octetstring_1b() runs on CT {
+  const integer vl_beginning :=0, vl_len := 1;
+  var octetstring vl_bs := replace('0000 1111'O,vl_beginning,vl_len,''O);
+  if(vl_bs != '00 1111'O){
+    setverdict(fail, "expected '001111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining, run time
+testcase tc_predef_replace_octetstring_2() runs on CT {
+  var octetstring vl_bs0 := '0000 1111'O
+  var octetstring vl_bs := replace(vl_bs0,0,1,''O);
+  if(vl_bs != '00 1111'O){
+    setverdict(fail, "expected '001111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining, run time
+//parameters are variables
+testcase tc_predef_replace_octetstring_2a() runs on CT {
+  var integer vl_beginning :=0, vl_len := 1;
+  var octetstring vl_bs0 := '0000 1111'O
+  var octetstring vl_bs := replace(vl_bs0,vl_beginning,vl_len,''O);
+  if(vl_bs != '00 1111'O){
+    setverdict(fail, "expected '001111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining,insert 1 char compile time
+testcase tc_predef_replace_octetstring_3() runs on CT {
+  var octetstring vl_bs := replace('0000 1111'O,0,1,'11'O);
+  if(vl_bs != '1100 1111'O){
+    setverdict(fail, "expected '11001111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 1 char runtime
+testcase tc_predef_replace_octetstring_4() runs on CT {
+  var octetstring vl_bs0 := '0000 1111'O
+  var octetstring vl_bs := replace(vl_bs0,0,1,'11'O);
+  if(vl_bs != '1100 1111'O){
+    setverdict(fail, "expected '11001111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 4 chars from the beginnining,insert 2 char compile time
+testcase tc_predef_replace_octetstring_5() runs on CT {
+  var octetstring vl_bs := replace('0000 1111'O,0,2,'11'O);
+  if(vl_bs != '11 1111'O){
+    setverdict(fail, "expected '111111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 2 char runtime
+testcase tc_predef_replace_octetstring_6() runs on CT {
+  var octetstring vl_bs0 := '0000 1111'O
+  var octetstring vl_bs := replace(vl_bs0,0,2,'11'O);
+  if(vl_bs != '11 1111'O){
+    setverdict(fail, "expected '111111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining,insert 3 char compile time
+testcase tc_predef_replace_octetstring_7() runs on CT {
+  var octetstring vl_bs := replace('0000 1111'O,0,2,'1111'O);
+  if(vl_bs != '1111 1111'O){
+    setverdict(fail, "expected '11111111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 3 char runtime
+testcase tc_predef_replace_octetstring_8() runs on CT {
+  var octetstring vl_bs0 := '0000 1111'O
+  var octetstring vl_bs := replace(vl_bs0,0,2,'1111'O);
+  if(vl_bs != '1111 1111'O){
+    setverdict(fail, "expected '11111111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the second char (index position 1), insert 3 char compile time
+testcase tc_predef_replace_octetstring_9() runs on CT {
+  var octetstring vl_bs := replace('0000 1111'O,1,2,'1111'O);
+  if(vl_bs != '00 1111 11'O){
+    setverdict(fail, "expected '00111111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the second char (index position 1), insert 3 char runtime
+testcase tc_predef_replace_octetstring_10() runs on CT {
+  var octetstring vl_bs0 := '0000 1111'O
+  var octetstring vl_bs := replace(vl_bs0,1,2,'1111'O);
+  if(vl_bs != '00111111'O){
+    setverdict(fail, "expected '00111111'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// append 4 chars compile time
+testcase tc_predef_replace_octetstring_11() runs on CT {
+  var octetstring vl_bs := replace('0000 1111'O,4,0,'0011'O);
+  if(vl_bs != '0000 1111 0011'O){
+    setverdict(fail, "expected '000011110011'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// append 3 char runtime
+testcase tc_predef_replace_octetstring_12() runs on CT {
+  var octetstring vl_bs0 := '0000 1111'O
+  var octetstring vl_bs := replace(vl_bs0,4,0,'0011'O);
+  if(vl_bs != '0000 1111 0011'O){
+    setverdict(fail, "expected '000011110011'O got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace' is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_octetstring_13_bad() runs on CT {
+//  var octetstring vl_bs := replace('0000 1111'O,8,1,'011'O);
+
+//}
+
+//too long index: 8+1
+testcase tc_predef_replace_octetstring_14_bad() runs on CT {
+  var octetstring vl_bs0 := '0000 1111'O
+  @try {
+    var octetstring vl_bs := replace(vl_bs0,4,1,'0011'O);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace' is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_octetstring_15_bad() runs on CT {
+//  var octetstring vl_bs := replace('0000 1111'O,3,2,'0011'O);
+//}
+////Expected on-the-fly semantic marker:
+////The third operand of operation `replace' should not be negative
+//testcase tc_predef_replace_octetstring_15a_bad() runs on CT {
+//  var octetstring vl_bs := replace('0000 1111'O,3,-2,'0011'O);
+//}
+//testcase tc_predef_replace_octetstring_15b_bad() runs on CT {
+//  var octetstring vl_bs := replace('0000 1111'O,3,-2,'11'O);
+//}
+
+//too long index: 7+2
+testcase tc_predef_replace_octetstring_16_bad() runs on CT {
+  var octetstring vl_bs0 := '0000 1111'O
+  @try {
+    var octetstring vl_bs := replace(vl_bs0,3,2,'0011'O);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+//too long index: 9+0
+testcase tc_predef_replace_octetstring_18_bad() runs on CT {
+  var octetstring vl_bs0 := '0000 1111'O
+  @try {
+    var octetstring vl_bs := replace(vl_bs0,5,0,'0011'O);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+
+
+//*********** Replace() for charstring ***********
+
+// remove 2 chars from the beginnining, compile time
+testcase tc_predef_replace_charstring_1() runs on CT {
+  var charstring vl_bs := replace("0000 1111",0,2,"");
+  if(vl_bs != "00 1111"){
+    setverdict(fail, "expected \"001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//var pars
+testcase tc_predef_replace_charstring_1a() runs on CT {
+  var integer vl_beginning :=0, vl_len := 2;
+  var charstring vl_bs := replace("0000 1111",vl_beginning,vl_len,"");
+  if(vl_bs != "00 1111"){
+    setverdict(fail, "expected \"001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//const pars
+testcase tc_predef_replace_charstring_1b() runs on CT {
+  const integer vl_beginning :=0, vl_len := 2;
+  var charstring vl_bs := replace("0000 1111",vl_beginning,vl_len,"");
+  if(vl_bs != "00 1111"){
+    setverdict(fail, "expected \"001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining, run time
+testcase tc_predef_replace_charstring_2() runs on CT {
+  var charstring vl_bs0 := "0000 1111"
+  var charstring vl_bs := replace(vl_bs0,0,2,"");
+  if(vl_bs != "00 1111"){
+    setverdict(fail, "expected \"001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining, run time
+//parameters are variables
+testcase tc_predef_replace_charstring_2a() runs on CT {
+  var integer vl_beginning :=0, vl_len := 2;
+  var charstring vl_bs0 := "0000 1111"
+  var charstring vl_bs := replace(vl_bs0,vl_beginning,vl_len,"");
+  if(vl_bs != "00 1111"){
+    setverdict(fail, "expected \"001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining,insert 1 char compile time
+testcase tc_predef_replace_charstring_3() runs on CT {
+  var charstring vl_bs := replace("0000 1111",0,2,"1");
+  if(vl_bs != "100 1111"){
+    setverdict(fail, "expected \"1001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 1 char runtime
+testcase tc_predef_replace_charstring_4() runs on CT {
+  var charstring vl_bs0 := "0000 1111"
+  var charstring vl_bs := replace(vl_bs0,0,2,"1");
+  if(vl_bs != "100 1111"){
+    setverdict(fail, "expected \"1001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining,insert 2 char compile time
+testcase tc_predef_replace_charstring_5() runs on CT {
+  var charstring vl_bs := replace("0000 1111",0,2,"11");
+  if(vl_bs != "1100 1111"){
+    setverdict(fail, "expected \"11001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 2 char runtime
+testcase tc_predef_replace_charstring_6() runs on CT {
+  var charstring vl_bs0 := "0000 1111"
+  var charstring vl_bs := replace(vl_bs0,0,2,"11");
+  if(vl_bs != "1100 1111"){
+    setverdict(fail, "expected \"11001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining,insert 3 char compile time
+testcase tc_predef_replace_charstring_7() runs on CT {
+  var charstring vl_bs := replace("0000 1111",0,2,"111");
+  if(vl_bs != "11100 1111"){
+    setverdict(fail, "expected \"11100 1111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 3 char runtime
+testcase tc_predef_replace_charstring_8() runs on CT {
+  var charstring vl_bs0 := "00001111"
+  var charstring vl_bs := replace(vl_bs0,0,2,"111");
+  if(vl_bs != "111001111"){
+    setverdict(fail, "expected \"111001111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the second char (index position 1), insert 3 char compile time
+testcase tc_predef_replace_charstring_9() runs on CT {
+  var charstring vl_bs := replace("00001111",1,2,"111");
+  if(vl_bs != "011101111"){
+    setverdict(fail, "expected \"011101111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the second char (index position 1), insert 3 char runtime
+testcase tc_predef_replace_charstring_10() runs on CT {
+  var charstring vl_bs0 := "00001111"
+  var charstring vl_bs := replace(vl_bs0,1,2,"111");
+  if(vl_bs != "011101111"){
+    setverdict(fail, "expected \"011101111\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// append 3 chars compile time
+testcase tc_predef_replace_charstring_11() runs on CT {
+  var charstring vl_bs := replace("00001111",8,0,"011");
+  if(vl_bs != "00001111011"){
+    setverdict(fail, "expected \"00001111011\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// append 3 char runtime
+testcase tc_predef_replace_charstring_12() runs on CT {
+  var charstring vl_bs0 := "00001111"
+  var charstring vl_bs := replace(vl_bs0,8,0,"011");
+  if(vl_bs != "00001111011"){
+    setverdict(fail, "expected \"00001111011\" got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace" is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_charstring_13_bad() runs on CT {
+//  var charstring vl_bs := replace("0000 1111",8,1,"011");
+
+//}
+
+//too long index: 8+1
+testcase tc_predef_replace_charstring_14_bad() runs on CT {
+  var charstring vl_bs0 := "00001111"
+  @try {
+    var charstring vl_bs := replace(vl_bs0,8,1,"011");
+    setverdict(fail,"DTE expected, got:", vl_bs)
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace" is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_charstring_15_bad() runs on CT {
+//  var charstring vl_bs := replace("0000 1111",7,2,"011");
+//}
+////Expected on-the-fly semantic marker:
+////The third operand of operation `replace" should not be negative
+//testcase tc_predef_replace_charstring_15a_bad() runs on CT {
+//  var charstring vl_bs := replace("00001111",7,-2,"011");
+//}
+//testcase tc_predef_replace_charstring_15b_bad() runs on CT {
+//  var charstring vl_bs := replace("00001111",7,-2,"11"H);
+//}
+
+//too long index: 7+2
+testcase tc_predef_replace_charstring_16_bad() runs on CT {
+  var charstring vl_bs0 := "00001111"
+  @try {
+    var charstring vl_bs := replace(vl_bs0,7,2,"011");
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+//too long index: 9+0
+testcase tc_predef_replace_charstring_18_bad() runs on CT {
+  var charstring vl_bs0 := "00001111"
+  @try {
+    var charstring vl_bs := replace(vl_bs0,9,0,"011");
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+//********** Replace for RoI *******************
+// remove 2 chars from the beginnining, compile time
+testcase tc_predef_replace_RoI_1() runs on CT {
+  const RoI vl_roi := {0,1,2,3,4,5,6,7};
+  const RoI vl_bs := replace(vl_roi,0,2,c_roi_empty);
+  if(vl_bs != {2,3,4,5,6,7}){
+    setverdict(fail, "expected {2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//var pars
+testcase tc_predef_replace_RoI_1a() runs on CT {
+  const RoI vl_roi := {0,1,2,3,4,5,6,7};
+  const integer vl_beginning :=0, vl_len := 2;
+  var RoI vl_bs := replace(vl_roi,vl_beginning,vl_len,c_roi_empty);
+  if(vl_bs != {2,3,4,5,6,7}){
+    setverdict(fail, "expected {2,3,4,5,6,7,} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+//const pars
+testcase tc_predef_replace_RoI_1b() runs on CT {
+  var RoI vl_roi := {0,1,2,3,4,5,6,7};
+  var integer vl_beginning := 0, vl_len := 2;
+  var RoI vl_bs := replace(vl_roi,vl_beginning,vl_len,c_roi_empty);
+  if(vl_bs != {2,3,4,5,6,7}){
+    setverdict(fail, "expected {2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining, run time
+testcase tc_predef_replace_RoI_2() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  var RoI vl_bs := replace(vl_bs0,0,2,c_roi_empty);
+  if(vl_bs != {2,3,4,5,6,7}){
+    setverdict(fail, "expected {2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 elements from the beginnining, run time
+//parameters are variables
+testcase tc_predef_replace_RoI_2a() runs on CT {
+  var integer vl_beginning :=0, vl_len := 2;
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  var RoI vl_bs := replace(vl_bs0,vl_beginning,vl_len,c_roi_empty);
+  if(vl_bs != {2,3,4,5,6,7}){
+    setverdict(fail, "expected {2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+// remove 2 chars from the beginnining,insert 1 char compile time
+testcase tc_predef_replace_RoI_3() runs on CT {
+  const RoI vl_roi := {0,1,2,3,4,5,6,7};
+  const RoI vl_bs := replace(vl_roi,0,2,c_roi_1);
+  if(vl_bs !=  {-1,2,3,4,5,6,7}){
+    setverdict(fail, "expected {-1,2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 1 char runtime
+testcase tc_predef_replace_RoI_4() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  var RoI vl_bs := replace(vl_bs0,0,2,c_roi_1);
+  if(vl_bs != {-1,2,3,4,5,6,7}){
+    setverdict(fail, "expected {-1,2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining,insert 2 char compile time
+testcase tc_predef_replace_RoI_5() runs on CT {
+  const RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  const RoI vl_bs := replace(vl_bs0,0,2,c_roi_2);
+  if(vl_bs != {-2,-1,2,3,4,5,6,7}){
+    setverdict(fail, "expected  {-2,-1,2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 2 char runtime
+testcase tc_predef_replace_RoI_6() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  var RoI vl_bs := replace(vl_bs0,0,2, c_roi_2);
+  if(vl_bs != {-2,-1,2,3,4,5,6,7}){
+    setverdict(fail, "expected {-2,-1,2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the beginnining,insert 3 char compile time
+testcase tc_predef_replace_RoI_7() runs on CT {
+  const RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  const RoI vl_bs := replace(vl_bs0,0,2, c_roi_2 & {-3} );
+  if(vl_bs != {-2,-1,-3,2,3,4,5,6,7}){
+    setverdict(fail, "expected {-2,-1,-3,2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the beginnining,insert 3 char runtime
+testcase tc_predef_replace_RoI_8() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  const RoI vl_roi3 := {-3,-2,-1}
+  var RoI vl_bs := replace(vl_bs0,0,2,vl_roi3);
+  if(vl_bs != {-3,-2,-1,2,3,4,5,6,7}){
+    setverdict(fail, "expected {-3,-2,-1,2,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// remove 2 chars from the second char (index position 1), insert 3 char compile time
+testcase tc_predef_replace_RoI_9() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  var RoI vl_bs := replace(vl_bs0,1,2,c_roi3);
+  if(vl_bs != {0,-3,-2,-1,3,4,5,6,7}){
+    setverdict(fail, "expected {0,-3,-2,-1,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// remove 2 chars from the second char (index position 1), insert 3 char runtime
+testcase tc_predef_replace_RoI_10() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  const RoI vl_roi3 := {-3,-2,-1}
+  var RoI vl_bs := replace(vl_bs0,1,2,vl_roi3);
+  if(vl_bs != {0,-3,-2,-1,3,4,5,6,7}){
+    setverdict(fail, "expected {0,-3,-2,-1,3,4,5,6,7} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+// append 3 chars compile time
+testcase tc_predef_replace_RoI_11() runs on CT {
+  const RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  const RoI vl_bs := replace(vl_bs0,8,0,c_roi3);
+  if(vl_bs != {0,1,2,3,4,5,6,7,-3,-2,-1}){
+    setverdict(fail, "expected {0,1,2,3,4,5,6,7,-3,-2,-1} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+
+}
+// append 3 char runtime
+testcase tc_predef_replace_RoI_12() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  var RoI vl_bs := replace(vl_bs0,8,0,c_roi3);
+  if(vl_bs != {0,1,2,3,4,5,6,7,-3,-2,-1}){
+    setverdict(fail, "expected {0,1,2,3,4,5,6,7,-3,-2,-1} got:", vl_bs);
+  } else {
+    setverdict(pass);
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace" is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_RoI_13_bad() runs on CT {
+//  const RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+//  @try {
+//    var RoI vl_bs := replace(vl_bs0,8,1,c_roi3);
+//    setverdict(fail,"DTE expected, got:", vl_bs)
+//  }
+//  @catch(e) {
+//    setverdict(pass,"Expected DTE catched")
+//  }
+//}
+
+//too long index: 8+1, runtime recognition
+testcase tc_predef_replace_RoI_14_bad() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  var integer vl_len := 1;
+  @try {
+    var RoI vl_bs := replace(vl_bs0,8,1,c_roi3);
+    setverdict(fail,"DTE expected, got:", vl_bs)
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+
+//Expected on-the-fly semantic marker:
+//The sum of the second operand (8) and the third operand (1) of operation `replace" is greater than the length of the first operand (8) 
+//testcase tc_predef_replace_RoI_15_bad() runs on CT {
+//  var RoI vl_bs := replace({0,1,2,3,4,5,6,7},7,2,"011");
+//}
+////Expected on-the-fly semantic marker:
+////The third operand of operation `replace" should not be negative
+//testcase tc_predef_replace_RoI_15a_bad() runs on CT {
+//  var RoI vl_bs := replace("00001111",7,-2,"011");
+//}
+//testcase tc_predef_replace_RoI_15b_bad() runs on CT {
+//  var RoI vl_bs := replace("00001111",7,-2,"11"H);
+//}
+
+//too long index: 7+2
+testcase tc_predef_replace_RoI_16_bad() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  @try {
+    var RoI vl_bs := replace(vl_bs0,7,2,c_roi3);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+//too long index: 9+0
+testcase tc_predef_replace_RoI_18_bad() runs on CT {
+  var RoI vl_bs0 := {0,1,2,3,4,5,6,7}
+  @try {
+    var RoI vl_bs := replace(vl_bs0,9,0,c_roi3);
+    setverdict(fail,"DTE expected")
+  }
+  @catch(e) {
+    setverdict(pass,"Expected DTE catched")
+  }
+}
+
+//======== str2bit ==========
+testcase tc_predef_str2bit_good1() runs on CT {
+  var RoCS vl_roc := {"","01","00001111","11110000111100001","1111000011110000111110000111100001"}
+  var RoBS vl_expected := {''B,'01'B,'0000 1111'B,'11110000111100001'B,'1111000011110000111110000111100001'B}
+  var integer N := sizeof( vl_roc );
+
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(str2bit(vl_roc[i])!=vl_expected[i]) {
+      setverdict(fail,"Expected(",i,"): ", vl_expected[i], "got:",str2bit(vl_roc[i]));
+    }
+  }
+  setverdict(pass);
+}
+//compile time cases
+testcase tc_predef_str2bit_good2() runs on CT {
+  const charstring vl_cs := "11110000111100001";
+  const bitstring vl_bs := '11110000111100001'B;
+  if(str2bit(vl_cs)!= vl_bs){
+    setverdict(fail,"expected:", vl_bs," got: ", str2bit(vl_cs));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_str2bit_good2a() runs on CT {
+  const charstring vl_cs := "";
+  const bitstring vl_bs := ''B;
+  if(str2bit(vl_cs)!= vl_bs){
+    setverdict(fail,"expected: ''B got: ", str2bit(vl_cs));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_str2bit_good3() runs on CT {
+  const charstring vl_cs := "11110000111100001";
+  const bitstring vl_bs := '11110000111100001'B;
+  var integer N := lengthof(vl_cs);
+  for( var integer i:=0;i<N;i:=i+1) {
+    if(str2bit(vl_cs[i])!= vl_bs[i]){
+      setverdict(fail,i,": expected:", vl_bs[i]," got: ", str2bit(vl_cs[i]));
+    }
+  }
+  setverdict(pass);
+}
+//str2float -- see at the beginning!
+
+//str2hex
+testcase tc_predef_str2hex_good1() runs on CT {
+  var RoCS vl_roc := {"","01","00001111","11110000111100001","1111000011110000111110000111100001"}
+  var RoHS vl_expected := {''H,'01'H,'0000 1111'H,'11110000111100001'H,'1111000011110000111110000111100001'H}
+  var integer N := sizeof( vl_roc );
+
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(str2hex(vl_roc[i])!=vl_expected[i]) {
+      setverdict(fail,"Expected(",i,"): ", vl_expected[i], "got:",str2hex(vl_roc[i]));
+    }
+  }
+  setverdict(pass);
+}
+//compile time cases
+testcase tc_predef_str2hex_good2() runs on CT {
+  const charstring vl_cs := "11110000111100001";
+  const hexstring vl_bs := '11110000111100001'H;
+  if(str2hex(vl_cs)!= vl_bs){
+    setverdict(fail,"expected:", vl_bs," got: ", str2hex(vl_cs));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_str2hex_good2a() runs on CT {
+  const charstring vl_cs := "";
+  const hexstring vl_bs := ''H;
+  if(str2hex(vl_cs)!= vl_bs){
+    setverdict(fail,"expected: ''H got: ", str2hex(vl_cs));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_str2hex_good3() runs on CT {
+  const charstring vl_cs := "11110000111100001";
+  const hexstring vl_bs := '11110000111100001'H;
+  var integer N := lengthof(vl_cs);
+  for( var integer i:=0;i<N;i:=i+1) {
+    if(str2hex(vl_cs[i])!= vl_bs[i]){
+      setverdict(fail,i,": expected:", vl_bs[i]," got: ", str2hex(vl_cs[i]));
+    }
+  }
+  setverdict(pass);
+}
+//str2int
+testcase tc_predef_str2int_good1() runs on CT {
+  var RoCS vl_roc := {"01","00001111","111100001111000010","1111000011110000111110000111100001"}
+  var RoI vl_expected := { 1, 1111,111100001111000010,1111000011110000111110000111100001}
+  var integer N := sizeof( vl_roc );
+
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(str2int(vl_roc[i])!=vl_expected[i]) {
+      setverdict(fail,"Expected(",i,"): ", vl_expected[i], "got:",str2int(vl_roc[i]));
+    }
+  }
+  setverdict(pass);
+}
+//compile time cases
+testcase tc_predef_str2int_good2() runs on CT {
+  const charstring vl_cs := "111100001111000010";
+  const integer vl_bs :=  111100001111000010;
+  if(str2int(vl_cs)!= vl_bs){
+    setverdict(fail,"expected:", vl_bs," got: ", str2int(vl_cs));
+  }
+  setverdict(pass);
+}
+// semantic error, as it is required!
+//testcase tc_predef_str2int_good2a() runs on CT {
+//  const charstring vl_cs := "";
+//  @try {
+//    const integer vl_bs := str2int(vl_cs);
+//    setverdict(fail,"expected: ''O got: ", str2oct(vl_cs));
+//  }
+//  @catch(e){
+//    setverdict(pass);
+//  }
+//}
+
+//str2oct
+testcase tc_predef_str2oct_good1() runs on CT {
+  var RoCS vl_roc := {"","01","00001111","111100001111000010","1111000011110000111110000111100001"}
+  var RoOS vl_expected := {''O,'01'O,'0000 1111'O,'111100001111000010'O,'1111000011110000111110000111100001'O}
+  var integer N := sizeof( vl_roc );
+
+  for(var integer i:=0;i<N; i:=i+1) {
+    if(str2oct(vl_roc[i])!=vl_expected[i]) {
+      setverdict(fail,"Expected(",i,"): ", vl_expected[i], "got:",str2oct(vl_roc[i]));
+    }
+  }
+  setverdict(pass);
+}
+//compile time cases
+testcase tc_predef_str2oct_good2() runs on CT {
+  const charstring vl_cs := "111100001111000010";
+  const octetstring vl_bs :=  '111100001111000010'O;
+  if(str2oct(vl_cs)!= vl_bs){
+    setverdict(fail,"expected:", vl_bs," got: ", str2oct(vl_cs));
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_str2oct_good2a() runs on CT {
+  const charstring vl_cs := "";
+  const octetstring vl_bs := ''O;
+  if(str2oct(vl_cs)!= vl_bs){
+    setverdict(fail,"expected: ''O got: ", str2oct(vl_cs));
+  }
+  setverdict(pass);
+}
+//=============================================
+//============ substring ======================
+//=============================================
+
+//--- bitstring ---
+//compile time
+testcase tc_predef_substring_bitstring1() runs on CT {
+  const bitstring vl_cs := ''B;
+  const bitstring vl_bs := substr(vl_cs, 0,0)
+  if(vl_bs!=''B){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_bitstring2() runs on CT {
+  var bitstring vl_cs := ''B;
+  var bitstring vl_bs := substr(vl_cs, 0,0);
+  log(vl_bs);
+  if( vl_bs!=''B){
+    setverdict(fail);
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_bitstring3() runs on CT {
+  //  const bitstring vl_cs := ''B;
+  const bitstring vl_bs := substr('00100110'B, 3, 4)
+  if(vl_bs!='0011'B){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_bitstring4() runs on CT {
+  var bitstring vl_cs := '00100110'B;
+  var bitstring vl_bs := substr(vl_cs, 3,4)
+  if(vl_bs!='0011'B){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_bitstring5() runs on CT {
+  const bitstring vl_cs := '00100110'B;
+  const bitstring vl_bs := substr(vl_cs, 3, 5)
+  if(vl_bs!='00110'B){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_bitstring6() runs on CT {
+  var bitstring vl_cs := '00100110'B;
+  var bitstring vl_bs := substr(vl_cs, 3,5)
+  if(vl_bs!='00110'B){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_bitstring7() runs on CT {
+//  const bitstring vl_cs := '00100110'B;
+//  const bitstring vl_bs := substr(vl_cs, 3, 6)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_bitstring8() runs on CT {
+  var bitstring vl_cs := '00100110'B;
+  @try {
+    var bitstring vl_bs := substr(vl_cs, 3,6)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_bitstring9() runs on CT {
+//  const bitstring vl_cs := '00100110'B;
+//  const bitstring vl_bs := substr(vl_cs, 9, 0)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_bitstring10() runs on CT {
+  var bitstring vl_cs := '00100110'B;
+  @try {
+    var bitstring vl_bs := substr(vl_cs, 9,0)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+
+//--- hexstring ---
+//compile time
+testcase tc_predef_substring_hexstring1() runs on CT {
+  const hexstring vl_cs := ''H;
+  const hexstring vl_bs := substr(vl_cs, 0,0)
+  if(vl_bs!=''H){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_hexstring2() runs on CT {
+  var hexstring vl_cs := ''H;
+  var hexstring vl_bs := substr(vl_cs, 0,0);
+  log(vl_bs);
+  if( vl_bs!=''H){
+    setverdict(fail);
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_hexstring3() runs on CT {
+  //  const hexstring vl_cs := ''H;
+  const hexstring vl_bs := substr('00100110'H, 3, 4)
+  if(vl_bs!='0011'H){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_hexstring4() runs on CT {
+  var hexstring vl_cs := '00100110'H;
+  var hexstring vl_bs := substr(vl_cs, 3,4)
+  if(vl_bs!='0011'H){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_hexstring5() runs on CT {
+  const hexstring vl_cs := '00100110'H;
+  const hexstring vl_bs := substr(vl_cs, 3, 5)
+  if(vl_bs!='00110'H){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_hexstring6() runs on CT {
+  var hexstring vl_cs := '00100110'H;
+  var hexstring vl_bs := substr(vl_cs, 3,5)
+  if(vl_bs!='00110'H){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_hexstring7() runs on CT {
+//  const hexstring vl_cs := '00100110'H;
+//  const hexstring vl_bs := substr(vl_cs, 3, 6)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_hexstring8() runs on CT {
+  var hexstring vl_cs := '00100110'H;
+  @try {
+    var hexstring vl_bs := substr(vl_cs, 3,6)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_hexstring9() runs on CT {
+//  const hexstring vl_cs := '00100110'H;
+//  const hexstring vl_bs := substr(vl_cs, 9, 0)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_hexstring10() runs on CT {
+  var hexstring vl_cs := '00100110'H;
+  @try {
+    var hexstring vl_bs := substr(vl_cs, 9,0)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+//--- octetstring ---
+//compile time
+testcase tc_predef_substring_octetstring1() runs on CT {
+  const octetstring vl_cs := ''O;
+  const octetstring vl_bs := substr(vl_cs, 0,0)
+  if(vl_bs!=''O){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_octetstring2() runs on CT {
+  var octetstring vl_cs := ''O;
+  var octetstring vl_bs := substr(vl_cs, 0,0);
+  log(vl_bs);
+  if( vl_bs!=''O){
+    setverdict(fail);
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_octetstring3() runs on CT {
+  //  const octetstring vl_cs := ''O;
+  const octetstring vl_bs := substr('00100110'O, 1, 2)
+  if(vl_bs!='1001'O){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_octetstring4() runs on CT {
+  var octetstring vl_cs := '00100110'O;
+  var octetstring vl_bs := substr(vl_cs, 1,2)
+  if(vl_bs!='1001'O){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_octetstring5() runs on CT {
+  const octetstring vl_cs := '00100110'O;
+  const octetstring vl_bs := substr(vl_cs, 1,3)
+  if(vl_bs!='100110'O){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_octetstring6() runs on CT {
+  var octetstring vl_cs := '00100110'O;
+  var octetstring vl_bs := substr(vl_cs, 1,3)
+  if(vl_bs!='100110'O){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_octetstring7() runs on CT {
+//  const octetstring vl_cs := '00100110'O;
+//  const octetstring vl_bs := substr(vl_cs,1,4)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_octetstring8() runs on CT {
+  var octetstring vl_cs := '00100110'O;
+  @try {
+    var octetstring vl_bs := substr(vl_cs,1,4)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_octetstring9() runs on CT {
+//  const octetstring vl_cs := '00100110'O;
+//  const octetstring vl_bs := substr(vl_cs, 5, 0)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_octetstring10() runs on CT {
+  var octetstring vl_cs := '00100110'O;
+  @try {
+    var octetstring vl_bs := substr(vl_cs, 5,0)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+
+//---charstring---
+testcase tc_predef_substring_charstring1() runs on CT {
+  const charstring vl_cs := "";
+  const charstring vl_bs := substr(vl_cs, 0,0)
+  if(vl_bs!=""){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_charstring2() runs on CT {
+  var charstring vl_cs := "";
+  var charstring vl_bs := substr(vl_cs, 0,0);
+  log(vl_bs);
+  if( vl_bs!=""){
+    setverdict(fail);
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_charstring3() runs on CT {
+  //  const charstring vl_cs := "";
+  const charstring vl_bs := substr("00100110", 3, 4)
+  if(vl_bs!="0011"){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_charstring4() runs on CT {
+  var charstring vl_cs := "00100110";
+  var charstring vl_bs := substr(vl_cs, 3,4)
+  if(vl_bs!="0011"){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_charstring5() runs on CT {
+  const charstring vl_cs := "00100110";
+  const charstring vl_bs := substr(vl_cs, 3, 5)
+  if(vl_bs!="00110"){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_charstring6() runs on CT {
+  var charstring vl_cs := "00100110";
+  var charstring vl_bs := substr(vl_cs, 3,5)
+  if(vl_bs!="00110"){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_charstring7() runs on CT {
+//  const charstring vl_cs := "00100110";
+//  const charstring vl_bs := substr(vl_cs, 3, 6)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_charstring8() runs on CT {
+  var charstring vl_cs := "00100110";
+  @try {
+    var charstring vl_bs := substr(vl_cs, 3,6)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_charstring9() runs on CT {
+//  const charstring vl_cs := "00100110";
+//  const charstring vl_bs := substr(vl_cs, 9, 0)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_charstring10() runs on CT {
+  var charstring vl_cs := "00100110";
+  @try {
+    var charstring vl_bs := substr(vl_cs, 9,0)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+//---RoI---
+// Semantic analyzer error
+//testcase tc_predef_substring_RoI1() runs on CT {
+//  const RoI vl_cs := {};
+//  const RoI vl_bs := substr(vl_cs, 0,0)
+//  if(vl_bs!={}){
+//    setverdict(fail);
+//  }
+//  log(vl_bs);
+//  setverdict(pass);
+//}
+
+testcase tc_predef_substring_RoI2() runs on CT {
+  var RoI vl_cs := {};
+  var RoI vl_bs := substr(vl_cs, 0,0);
+  log(vl_bs);
+  if( vl_bs!={}){
+    setverdict(fail);
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_RoI3() runs on CT {
+  const RoI vl_cs := {0,1,2,3,4,5,6,7};
+  const RoI vl_bs := substr(vl_cs, 3, 4)
+  if(vl_bs!={3,4,5,6}){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_RoI4() runs on CT {
+  var RoI vl_cs := {0,1,2,3,4,5,6,7};
+  var RoI vl_bs := substr(vl_cs, 3,4)
+  if(vl_bs!={3,4,5,6}){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_RoI5() runs on CT {
+  const RoI vl_cs := {0,1,2,3,4,5,6,7};
+  const RoI vl_bs := substr(vl_cs, 3, 5)
+  if(vl_bs!={3,4,5,6,7}){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_RoI6() runs on CT {
+  var RoI vl_cs := {0,1,2,3,4,5,6,7};
+  var RoI vl_bs := substr(vl_cs, 3,5)
+  if(vl_bs!={3,4,5,6,7}){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_RoI6a() runs on CT {
+  const RoI vl_cs := {0,1,2,3,4,5,6,7};
+  const RoI vl_bs := substr(vl_cs, 8,0)
+  if(vl_bs!={}){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_RoI6b() runs on CT {
+  var RoI vl_cs := {0,1,2,3,4,5,6,7};
+  var RoI vl_bs := substr(vl_cs, 8,0)
+  if(vl_bs!={}){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_RoI7() runs on CT {
+//  const RoI vl_cs := {0,1,2,3,4,5,6,7};
+//  const RoI vl_bs := substr(vl_cs, 3, 6)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_RoI8() runs on CT {
+  var RoI vl_cs := {0,1,2,3,4,5,6,7};
+  @try {
+    var RoI vl_bs := substr(vl_cs, 3,6)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_RoI9() runs on CT {
+//  const RoI vl_cs := {0,1,2,3,4,5,6,7};
+//  const RoI vl_bs := substr(vl_cs, 9, 0)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_RoI10() runs on CT {
+  var RoI vl_cs := {0,1,2,3,4,5,6,7};
+  @try {
+    var RoI vl_bs := substr(vl_cs, 9,0)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+//----SoI---
+//---RoI---
+// Semantic analyzer error
+//testcase tc_predef_substring_SoI1() runs on CT {
+//  const SoI vl_cs := {};
+//  const SoI vl_bs := substr(vl_cs, 0,0)
+//  if(vl_bs!={}){
+//    setverdict(fail);
+//  }
+//  log(vl_bs);
+//  setverdict(pass);
+//}
+
+testcase tc_predef_substring_SoI2() runs on CT {
+  var SoI vl_cs := {};
+  var SoI vl_bs := substr(vl_cs, 0,0);
+  log(vl_bs);
+  if( vl_bs!={}){
+    setverdict(fail);
+  }
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_SoI3() runs on CT {
+  const SoI vl_cs := {0,1,2,3,4,5,6,7};
+  const SoI vl_bs := substr(vl_cs, 3, 4)
+  if(vl_bs!={3,4,5,6}){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_SoI4() runs on CT {
+  var SoI vl_cs := {0,1,2,3,4,5,6,7};
+  var SoI vl_bs := substr(vl_cs, 3,4)
+  if(vl_bs!={3,4,5,6}){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_SoI5() runs on CT {
+  const SoI vl_cs := {0,1,2,3,4,5,6,7};
+  const SoI vl_bs := substr(vl_cs, 3, 5)
+  if(vl_bs!={3,4,5,6,7}){
+    setverdict(fail);
+  }
+
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_SoI6() runs on CT {
+  var SoI vl_cs := {0,1,2,3,4,5,6,7};
+  var SoI vl_bs := substr(vl_cs, 3,5)
+  if(vl_bs!={3,4,5,6,7}){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_SoI6a() runs on CT {
+  const SoI vl_cs := {0,1,2,3,4,5,6,7};
+  const SoI vl_bs := substr(vl_cs, 8,0)
+  if(vl_bs!={}){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+testcase tc_predef_substring_SoI6b() runs on CT {
+  var SoI vl_cs := {0,1,2,3,4,5,6,7};
+  var SoI vl_bs := substr(vl_cs, 8,0)
+  if(vl_bs!={}){
+    setverdict(fail);
+  }
+  log(vl_bs);
+  setverdict(pass);
+}
+
+
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_SoI7() runs on CT {
+//  const SoI vl_cs := {0,1,2,3,4,5,6,7};
+//  const SoI vl_bs := substr(vl_cs, 3, 6)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_SoI8() runs on CT {
+  var SoI vl_cs := {0,1,2,3,4,5,6,7};
+  @try {
+    var SoI vl_bs := substr(vl_cs, 3,6)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+
+//semantic error (before compile time)
+//testcase tc_predef_substring_SoI9() runs on CT {
+//  const SoI vl_cs := {0,1,2,3,4,5,6,7};
+//  const SoI vl_bs := substr(vl_cs, 9, 0)
+//  setverdict(fail);
+//}
+//runtime error
+testcase tc_predef_substring_SoI10() runs on CT {
+  var SoI vl_cs := {0,1,2,3,4,5,6,7};
+  @try {
+    var SoI vl_bs := substr(vl_cs, 9,0)
+    setverdict(fail,"DTE expected");
+  }
+  @catch(e){
+    setverdict(pass);
+  }
+}
+
+//unichar2char
+//unichar2int
+
+control{
+  execute(tc_predef_str2float_empty());
+  execute(tc_predef_str2float_empty2());
+  execute(  tc_predef_str2float_good1());
+  execute(  tc_predef_str2float_good2());
+  execute(  tc_predef_str2float_good2a());
+  execute(  tc_predef_str2float_good2b());
+  execute(  tc_predef_str2float_good2c());
+  execute(  tc_predef_str2float_good2d());
+  execute(  tc_predef_str2float_good3());
+  execute(  tc_predef_str2float_good3b());
+  execute(  tc_predef_str2float_good4());
+  execute(  tc_predef_str2float_good4b());
+  execute(  tc_predef_str2float_good4c());
+  execute(  tc_predef_str2float_good5());
+  execute(tc_predef_str2float_bad1());
+  //  execute(tc_predef_str2float_bad1b()); //semantic error
+  execute(tc_predef_str2float_bad2());
+  execute(tc_predef_str2float_bad3());
+  execute(tc_predef_str2float_bad4());
+  execute(  tc_predef_rnd());
+  execute(  tc_predef_bit2hex1());
+  execute(  tc_predef_bit2hex2());
+  execute(tc_predef_bit2oct0010());
+  execute(tc_predef_bit2oct00010());
+  execute(tc_predef_bit2oct1());
+  execute(tc_predef_bit2oct2());
+  execute(tc_predef_bit2int_good());
+  execute(tc_predef_bit2int_good_with_space());
+  execute(tc_predef_bit2int_good_long1());
+  execute(tc_predef_bit2int_good_long2());
+  execute(tc_predef_bit2int_good_long3());
+  execute(tc_predef_bit2int_good_long4());
+  //  execute(tc_predef_bit2int_good_with_whitespace());
+  execute(tc_predef_bit2int_good_empty());
+  execute(tc_predef_bit2oct_good());
+  execute(tc_predef_bit2oct_good_with_space());
+  execute(tc_predef_bit2str_good());
+  execute(tc_predef_bit2str_good_with_space());
+  execute(tc_predef_bit2str_good_empty());
+  execute(tc_predef_char2int_good());
+  execute(tc_predef_char2int_bad1());
+  execute(tc_predef_char2int_bad2());
+  execute(tc_predef_char2oct_good1());
+  execute(tc_predef_char2oct_good2());
+  execute(tc_predef_char2oct_good_empty());
+  execute(tc_predef_float2str_good0());
+  execute(tc_predef_float2str_good1());
+  execute(tc_predef_float2str_good2());
+  execute(tc_predef_float2str_good3());
+  execute(tc_predef_float2str_good4());
+  execute(tc_predef_float2str_good5());
+  execute(tc_predef_float2str_good6());
+  execute(tc_predef_float2str_good7());
+  execute(tc_predef_float2str_good8());
+  execute(tc_predef_float2str_good9());
+  execute(tc_predef_float2str_good10());
+  execute(tc_predef_float2str_good11());
+  execute(tc_predef_float2str_good12());
+  execute(tc_predef_float2str_good13());
+  execute(tc_predef_float2str_good14());
+  execute(tc_predef_float2str_good15());
+  execute(tc_predef_float2str_good16());
+  execute(tc_predef_hex2bit_empty1());
+  execute(tc_predef_hex2bit_empty2());
+  execute(tc_predef_hex2bit_unbound());
+  execute(tc_predef_hex2bit_good1());
+  execute(tc_predef_hex2bit_good2());
+  execute(tc_predef_hex2bit_good20());
+  execute(tc_predef_hex2bit_good21());
+  execute(tc_predef_hex2int_unbound());
+  execute(tc_predef_hex2int_empty());
+  execute(tc_predef_hex2int_good1());
+  execute(tc_predef_hex2int_good2());
+  execute(tc_predef_hex2int_good20());
+  execute(tc_predef_hex2oct_empty1());
+  execute(tc_predef_hex2oct_empty2());
+  execute(tc_predef_hex2oct_unbound());
+  execute(tc_predef_hex2oct_good1());
+  execute(tc_predef_hex2oct_good2());
+  execute(tc_predef_hex2oct_good3_bug());
+  execute(tc_predef_hex2oct_good4_bug()); 
+  execute(tc_predef_hex2oct_good20());
+
+  execute(tc_predef_hex2str_empty1());
+  execute(tc_predef_hex2str_unbound());
+  execute(tc_predef_hex2str_good1()); 
+  execute(tc_predef_hex2str_good2());
+  execute(tc_predef_hex2str_good1_bug());
+  execute(tc_predef_hex2str_good2_bug());
+  execute(tc_predef_hex2str_good3_bug());
+  execute(tc_predef_hex2str_good4_bug());
+  execute(tc_predef_hex2str_good20());
+  execute(tc_predef_hex2str_good21());
+
+  execute(tc_predef_int2bit_unbound());
+  execute(tc_predef_int2bit_wrongLength());
+  execute(tc_predef_int2bit_good1());
+  execute(tc_predef_int2bit_good2());
+  execute(tc_predef_int2bit_good3());
+  execute(tc_predef_int2char_good());
+  execute(tc_predef_int2char_list());
+  execute(tc_predef_int2char_bad1());
+  execute(tc_predef_int2char_bad2());
+  execute(tc_predef_int2float_good1());
+  execute(tc_predef_int2float_good2());
+
+  execute(tc_predef_int2hex_good1());
+  execute(tc_predef_int2hex_bad1());
+  execute(tc_predef_int2hex_bad2());
+  execute(tc_predef_int2hex_bad3());
+
+  execute(tc_predef_int2oct_good1());
+  execute(tc_predef_int2oct_good1a());
+  execute(tc_predef_int2oct_good2());
+  execute(tc_predef_int2oct_good3());
+  execute(tc_predef_int2oct_bad1());
+  execute(tc_predef_int2oct_bad2());
+  execute(tc_predef_int2oct_bad3());
+  execute(tc_predef_int2oct_bad4());
+  execute(tc_predef_int2str_good1());
+  execute(tc_predef_int2str_good2());
+  execute(tc_predef_int2unichar_good1());
+  execute(tc_predef_int2unichar_good2());
+  execute(tc_predef_int2unichar_bad1());
+  execute(tc_predef_int2unichar_bad2());
+  execute(tc_predef_int2unichar_bad3());
+  execute(tc_predef_oct2bit_good());
+  execute(tc_predef_oct2char_good1());
+  execute(tc_predef_oct2char_good2());
+  execute(tc_predef_oct2char_bad1());
+  execute(tc_predef_oct2char_bad2());
+  execute(tc_predef_oct2char_bad3());
+  execute(tc_predef_oct2hex_good1());
+
+  execute(tc_predef_oct2int_good1());
+  execute(tc_predef_oct2int_good1a());
+  execute(tc_predef_oct2int_good1b());
+  execute(tc_predef_oct2int_good2());
+  execute(tc_predef_oct2int_empty());
+
+  execute(tc_predef_oct2str_good1());
+  execute(tc_predef_oct2str_good2());
+
+  execute(tc_predef_replace_bitstring_1());
+  execute(tc_predef_replace_bitstring_1a());
+  execute(tc_predef_replace_bitstring_1b());
+  execute(tc_predef_replace_bitstring_2());
+  execute(tc_predef_replace_bitstring_2a());
+  execute(tc_predef_replace_bitstring_3());
+  execute(tc_predef_replace_bitstring_4());
+  execute(tc_predef_replace_bitstring_5());
+  execute(tc_predef_replace_bitstring_6());
+  execute(tc_predef_replace_bitstring_7());
+  //  execute(tc_predef_replace_bitstring_8());
+  execute(tc_predef_replace_bitstring_9());
+  //  execute(tc_predef_replace_bitstring_10());
+  execute(tc_predef_replace_bitstring_11());
+  //  execute(tc_predef_replace_bitstring_12());
+  execute(  tc_predef_replace_bitstring_14_bad());
+  execute(  tc_predef_replace_bitstring_16_bad());
+  execute(  tc_predef_replace_bitstring_18_bad());
+
+  //===
+  execute(tc_predef_replace_hexstring_1());
+  execute(tc_predef_replace_hexstring_1a());
+  execute(tc_predef_replace_hexstring_1b());
+  execute(tc_predef_replace_hexstring_2());
+  execute(tc_predef_replace_hexstring_2a());
+  execute(tc_predef_replace_hexstring_3());
+  execute(tc_predef_replace_hexstring_4());
+  execute(tc_predef_replace_hexstring_5());
+  execute(tc_predef_replace_hexstring_6());
+  execute(tc_predef_replace_hexstring_7());
+  execute(tc_predef_replace_hexstring_8());
+  execute(tc_predef_replace_hexstring_9());
+  execute(tc_predef_replace_hexstring_10());
+  execute(tc_predef_replace_hexstring_11());
+  execute(tc_predef_replace_hexstring_12());
+  execute(  tc_predef_replace_hexstring_14_bad());
+  execute(  tc_predef_replace_hexstring_16_bad());
+  execute(  tc_predef_replace_hexstring_18_bad());
+  //===
+  execute(tc_predef_replace_octetstring_1());
+  execute(tc_predef_replace_octetstring_1a());
+  execute(tc_predef_replace_octetstring_1b());
+  execute(tc_predef_replace_octetstring_2());
+  execute(tc_predef_replace_octetstring_2a());
+  execute(tc_predef_replace_octetstring_3());
+  execute(tc_predef_replace_octetstring_4());
+  execute(tc_predef_replace_octetstring_5());
+  execute(tc_predef_replace_octetstring_6());
+  execute(tc_predef_replace_octetstring_7());
+  execute(tc_predef_replace_octetstring_8());
+  execute(tc_predef_replace_octetstring_9());
+  execute(tc_predef_replace_octetstring_10());
+  execute(tc_predef_replace_octetstring_11());
+  execute(tc_predef_replace_octetstring_12());
+  execute(  tc_predef_replace_octetstring_14_bad());
+  execute(  tc_predef_replace_octetstring_16_bad());
+  execute(  tc_predef_replace_octetstring_18_bad());
+  //===
+  execute(tc_predef_replace_charstring_1());
+  execute(tc_predef_replace_charstring_1a());
+  execute(tc_predef_replace_charstring_1b());
+  execute(tc_predef_replace_charstring_2());
+  execute(tc_predef_replace_charstring_2a());
+  execute(tc_predef_replace_charstring_3());
+  execute(tc_predef_replace_charstring_4());
+  execute(tc_predef_replace_charstring_5());
+  execute(tc_predef_replace_charstring_6());
+  execute(tc_predef_replace_charstring_7());
+  execute(tc_predef_replace_charstring_8());
+  execute(tc_predef_replace_charstring_9());
+  execute(tc_predef_replace_charstring_10());
+  execute(tc_predef_replace_charstring_11());
+  execute(tc_predef_replace_charstring_12());
+  execute(  tc_predef_replace_charstring_14_bad());
+  execute(  tc_predef_replace_charstring_16_bad());
+  execute(  tc_predef_replace_charstring_18_bad());
+
+  execute(tc_predef_replace_RoI_1());
+  execute(tc_predef_replace_RoI_1a());
+  execute(tc_predef_replace_RoI_1b());
+  execute(tc_predef_replace_RoI_2());
+  execute(tc_predef_replace_RoI_2a());
+  execute(tc_predef_replace_RoI_3());
+  execute(tc_predef_replace_RoI_4());
+  execute(tc_predef_replace_RoI_5());
+  execute(tc_predef_replace_RoI_6());
+  execute(tc_predef_replace_RoI_7());
+  execute(tc_predef_replace_RoI_8());
+  execute(tc_predef_replace_RoI_9());
+  execute(tc_predef_replace_RoI_10());
+  execute(tc_predef_replace_RoI_11());
+  execute(tc_predef_replace_RoI_12());
+  execute(  tc_predef_replace_RoI_14_bad());
+  execute(  tc_predef_replace_RoI_16_bad());
+  execute(  tc_predef_replace_RoI_18_bad());
+  execute(tc_predef_str2bit_good1());
+  execute(tc_predef_str2bit_good2());
+  execute(tc_predef_str2bit_good2a());
+  execute(tc_predef_str2bit_good3());
+
+  execute(tc_predef_str2hex_good1());
+  execute(tc_predef_str2hex_good2());
+  execute(tc_predef_str2hex_good2a());
+  execute(tc_predef_str2hex_good3());
+
+  execute(tc_predef_str2int_good1());
+  execute(tc_predef_str2int_good2());
+
+  execute(tc_predef_str2oct_good1());
+  execute(tc_predef_str2oct_good2());
+  execute(tc_predef_str2oct_good2a());
+  execute(tc_predef_substring_bitstring1());
+  execute(tc_predef_substring_bitstring2());
+  execute(tc_predef_substring_bitstring3());
+  execute(tc_predef_substring_bitstring4());  
+  execute(tc_predef_substring_bitstring5());
+  execute(tc_predef_substring_bitstring6());
+  //    execute(tc_predef_substring_bitstring7()); //semantic error
+  execute(tc_predef_substring_bitstring8());
+  //    execute(tc_predef_substring_bitstring9()); //semantic error
+  execute(tc_predef_substring_bitstring10());
+  execute(tc_predef_substring_hexstring1());
+  execute(tc_predef_substring_hexstring2());
+  execute(tc_predef_substring_hexstring3());
+  execute(tc_predef_substring_hexstring4());  
+  execute(tc_predef_substring_hexstring5());
+  execute(tc_predef_substring_hexstring6());
+  //    execute(tc_predef_substring_hexstring7()); //semantic error
+  execute(tc_predef_substring_hexstring8());
+  //    execute(tc_predef_substring_hexstring9()); //semantic error
+  execute(tc_predef_substring_hexstring10());
+  execute(tc_predef_substring_octetstring1());
+  execute(tc_predef_substring_octetstring2());
+  execute(tc_predef_substring_octetstring3());
+  execute(tc_predef_substring_octetstring4());  
+  execute(tc_predef_substring_octetstring5());
+  execute(tc_predef_substring_octetstring6());
+  //    execute(tc_predef_substring_octetstring7()); //semantic error
+  execute(tc_predef_substring_octetstring8());
+  //    execute(tc_predef_substring_octetstring9()); //semantic error
+  execute(tc_predef_substring_octetstring10());
+  execute(tc_predef_substring_charstring1());
+  execute(tc_predef_substring_charstring2());
+  execute(tc_predef_substring_charstring3());
+  execute(tc_predef_substring_charstring4());  
+  execute(tc_predef_substring_charstring5());
+  execute(tc_predef_substring_charstring6());
+  //    execute(tc_predef_substring_charstring7()); //semantic error
+  execute(tc_predef_substring_charstring8());
+  //    execute(tc_predef_substring_charstring9()); //semantic error
+  execute(tc_predef_substring_charstring10());
+
+//  execute(tc_predef_substring_RoI1());//semantic error
+  execute(tc_predef_substring_RoI2());
+  execute(tc_predef_substring_RoI3());
+  execute(tc_predef_substring_RoI4());  
+  execute(tc_predef_substring_RoI5());
+  execute(tc_predef_substring_RoI6());
+  execute(tc_predef_substring_RoI6a());
+  execute(tc_predef_substring_RoI6b());
+  //    execute(tc_predef_substring_RoI7()); //semantic error
+  execute(tc_predef_substring_RoI8());
+  //    execute(tc_predef_substring_RoI9()); //semantic error
+  execute(tc_predef_substring_RoI10());
+
+//  execute(tc_predef_substring_SoI1()); //semantic error
+  execute(tc_predef_substring_SoI2());
+  execute(tc_predef_substring_SoI3());
+  execute(tc_predef_substring_SoI4());  
+  execute(tc_predef_substring_SoI5());
+  execute(tc_predef_substring_SoI6());
+  execute(tc_predef_substring_SoI6a());
+  execute(tc_predef_substring_SoI6b());
+  //    execute(tc_predef_substring_SoI7()); //semantic error
+  execute(tc_predef_substring_SoI8());
+  //    execute(tc_predef_substring_SoI9()); //semantic error
+  execute(tc_predef_substring_SoI10());
+}
+}
+