将 Informix 4gl 转换为 Genero 以创建和写入 .4gl - Permission denied to write to .4gl 错误
Convert Informix 4gl to Genero to create and write to .4gl - error of Permission denied to write to .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
我该如何解决这个问题?
从 Informix-4gl 迁移到 Genero 所需的唯一代码是行
let run_stmt = "fglpc ",p_prog clipped
至
let run_stmt = "fglcomp ",p_prog clipped
以便您的程序在其生成时使用 Genero 编译器,而不是 Informix 4gl 编译器。
不需要介绍base.Channel方法的使用。这是转向 read/write 文件的首选方式,尤其是非分页输出,但老式的 START REPORT ... 没有改变,应该像以前一样运行。
您看到的错误消息告诉您盒子上的内容。我可以通过删除对 p_prog.4gl 的写入权限来获取它,因此请检查该文件是否存在以及您的用户是否具有写入权限。
另一个可能的陷阱,fglcomp,fglrun 的功能与其 Informix 等价物相同,涉及当前工作目录,并且在同一目录中混合源和编译对象。如果使用 Genero Studio,它默认将源代码和编译对象保存在不同的目录中,因此要么将 TargetDirectory 更改为不使用 bin,要么请注意,根据您的权限、文件位置等,在运行时您可能位于 bin 目录中。
我在 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
我该如何解决这个问题?
从 Informix-4gl 迁移到 Genero 所需的唯一代码是行
let run_stmt = "fglpc ",p_prog clipped
至
let run_stmt = "fglcomp ",p_prog clipped
以便您的程序在其生成时使用 Genero 编译器,而不是 Informix 4gl 编译器。
不需要介绍base.Channel方法的使用。这是转向 read/write 文件的首选方式,尤其是非分页输出,但老式的 START REPORT ... 没有改变,应该像以前一样运行。
您看到的错误消息告诉您盒子上的内容。我可以通过删除对 p_prog.4gl 的写入权限来获取它,因此请检查该文件是否存在以及您的用户是否具有写入权限。
另一个可能的陷阱,fglcomp,fglrun 的功能与其 Informix 等价物相同,涉及当前工作目录,并且在同一目录中混合源和编译对象。如果使用 Genero Studio,它默认将源代码和编译对象保存在不同的目录中,因此要么将 TargetDirectory 更改为不使用 bin,要么请注意,根据您的权限、文件位置等,在运行时您可能位于 bin 目录中。