В моем TACL я пытаюсь создать переменную, используемую в качестве входных данных для команды SQLCI. Я хочу использовать предложение LIKE с% в качестве подстановочного знака. Каждый раз, когда он заменяет% на? в результате чего оператор SQL не возвращает желаемых результатов.
Кодовый фрагмент кода:
?TACL macro
#Frame
#Set #informat plain
#Set #outformat pretty
#Push stoprun DC fidata var1 mailmast sqlvol sqlsvol IsOpen EMLFile ans emlline
#Push mailfile mfile likeit charaddr sqlin sqlout test
[#Def True text |body|-1]
[#Def False text |body|0]
Промежуточный код вырезан, чтобы уменьшить длину - вырезанный код работает
== select <program name> from <full mailmast filename> where mm_file_prefix
== like "<likename>%" for browse access;
[#If Not [StopRun]
|then|
#Setv test "~%"
#Set #trace -1
#Set SqlIn select mm_program_name from [mailmast] where mm_file_prefix
#appendv sqlin "like ""[LikeIt]~%"" for browse access;"
SQLCI/Inv Sqlin,outv sqlout/
] == end of if
Когда я запускаю код, я отображаю переменные, и он заменяет% на?
-TRACE-
-19-й 1 в
Вызывающая переменная: MAILMAST.1
#Set SqlIn выберите mm_program_name из $ DATA5.SQL2510.MAILMAST, где mm_file_p
refix
-TRACE-
-20-
#appendv sqlin "like" "[LikeIt]
^
-TRACE-
-20-
Вызывающая переменная: LIKEIT.1
#appendv sqlin "like" "ED?" "для доступа;"
-TRACE-
-20-й тест
?
-22-й 1 в
SQLCI / Inv Sqlin, outv sqlout /
-TRACE-
-23-й квлин
выберите mm_program_name из $ DATA5.SQL2510.MAILMAST, где mm_file_prefix
как "ED?" для просмотра доступа;
-24
Поскольку% отсутствует в качестве подстановочного знака, этот оператор SQL не может вызвать правильную запись.
Вопрос в том, как поместить% в переменную TACL и не изменить его на a?
Отредактировано для замены дублирующего кода при запуске макроса TACL - MEH