Преобразуйте Informix 4gl в Genero для создания и записи в .4gl - ошибка разрешения на запись в .4gl
У меня есть код в Informix 4gl, который создает и записывает в файл.4gl. Короче говоря, это код, который генерирует новую программу. Он отлично работает в Informix:**
let p_output = p_prog clipped,".4gl"
start report rpt1 to p_output
output to report rpt1()
finish report rpt1
let run_stmt = "fglpc ",p_prog clipped
run run_stmt returning p_status
if p_status != 0 then
error " Program Compilation failed "
sleep 1
end if
end if
Я пытаюсь преобразовать код Genero для создания и записи в файл.4gl.
let p_output = "vi ",p_prog clipped,".4gl"
let p_binoutput = p_prog clipped,".4gl"
LET ch_in = base.Channel.create()
CALL ch_in.openFile(p_binoutput,"w")
start report rpt1 TO p_output
output to report rpt1()
finish report rpt1
--let run_stmt = "fglpc ",p_prog clipped
let run_stmt = "fglcomp ",p_prog clipped
run run_stmt returning p_status
if p_status != 0 then
error " Program Compilation failed "
sleep 1
end IF
CALL ch_in.close()
end if
Но я продолжаю получать сообщение об ошибке в sqlca.sqlerrm:
p_prog.4gl: Permission denied.
или же
vi p_prog.4gl: Permission denied
Как я могу это исправить?
1 ответ
Единственный код, который вам нужно было изменить при переходе с Informix-4gl на Genero, - это строка
let run_stmt = "fglpc ",p_prog clipped
к
let run_stmt = "fglcomp ",p_prog clipped
чтобы ваша программа использовала компилятор Genero в своем поколении, а не компилятор Informix 4gl.
Не было необходимости вводить использование методов base.Channel. Это предпочтительный способ продвижения к файлам чтения / записи, особенно с невыгружаемым выводом, но старый ОТЧЕТ НАЧАЛА... остается неизменным и должен работать как раньше.
Сообщения об ошибках, которые вы видите, говорят вам, что написано на коробке. Я могу получить его, удалив доступ на запись к p_prog.4gl, поэтому проверьте, существует ли файл и есть ли у вашего пользователя права на запись.
Другая возможная проблема, fglcomp, fglrun, такая же, как и их эквиваленты в Informix, в отношении текущего рабочего каталога и смешивает исходные и скомпилированные объекты в одном каталоге. При использовании Genero Studio он по умолчанию сохраняет исходные и скомпилированные объекты в разных каталогах, поэтому либо измените TargetDirectory, чтобы не использовать bin, либо имейте в виду, что с вашими разрешениями, местоположениями файлов и т. Д. Во время выполнения вы, возможно, находитесь в каталоге bin.