我有一个在Informix4GL中创建和写入.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我该如何解决这个问题呢?
发布于 2020-11-14 06:30:32
从Informix-4gl迁移到Genero时需要更改的唯一代码是下面这行
let run_stmt = "fglpc ",p_prog clipped至
let run_stmt = "fglcomp ",p_prog clipped因此,您的程序在生成过程中使用Genero编译器,而不是Informix4GL编译器。
不需要介绍base.Channel方法的使用。这是向前推进读/写文件的首选方式,特别是对于非分页输出,但旧的学校开始报告……是不变的,应该像以前一样工作。
您看到的错误消息将告诉您它在框上显示的内容。我可以通过删除对p_prog.4gl的写访问权限来获取它,因此请检查该文件是否存在,以及您的用户是否具有写权限。
另一个可能的问题是,fglcomp、fglrun的功能与Informix中当前工作目录的等价物相同,并在同一目录中混合源代码和编译后的对象。如果使用Genero Studio,默认情况下,它会将源代码和编译后的对象放在不同的目录中,因此要么更改TargetDirectory以不使用bin,要么注意,根据您的权限、文件位置等,在运行时您可能在bin目录中。
https://stackoverflow.com/questions/64784789
复制相似问题