process main { var("0123456789") str; concat(str) external_str; call("do_test", {"_caller.str"}); call("do_test", {"_caller.external_str"}); exit("0"); } template do_test { alias(_arg0) str; substr(str, "0") sub; val_equal(sub, "0123456789") a; assert(a); substr(str, "2") sub; val_equal(sub, "23456789") a; assert(a); substr(str, "3", "0") sub; val_equal(sub, "") a; assert(a); substr(str, "3", "6") sub; val_equal(sub, "345678") a; assert(a); substr(str, "3", "7") sub; val_equal(sub, "3456789") a; assert(a); substr(str, "3", "8") sub; val_equal(sub, "3456789") a; assert(a); }