В своем 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-st 1 v Вызов переменной :MAILMAST.1 #Set SqlIn select mm_program_name from $DATA5.SQL2510.MAILMAST где mm_file_p refix -TRACE- -20- #appendv sqlin "like""[LikeIt] ^ -TRACE- -20- Вызов переменной :LIKEIT.1 #appendv sqlin "как ""ED?"" для доступа к просмотру; -TRACE- -20-d test ? -22-st 1 v SQLCI/Inv Sqlin,outv sqlout/ -TRACE -23-d sqlin выберите mm_program_name из $DATA5.SQL2510.MAILMAST, где mm_file_prefix типа "ED?" для доступа к просмотру; -24-
Поскольку % не используется в качестве подстановочного знака, эта инструкция SQL не может вызвать правильную запись.
Вопрос в том, как поместить % в переменную TACL и не изменить ее на ?
Отредактировано, чтобы заменить дублирующийся код запуском макроса TACL - MEH