informix - 将 Informix 4gl 转换为 Genero 以创建并写入 .4gl - 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 方法的使用。这是继续读/写文件的首选方式,特别是对于非分页输出,但老式的 START REPORT ... 没有改变,应该像以前一样工作。
您看到的错误消息告诉您它在包装盒上显示的内容。我可以通过删除对 p_prog.4gl 的写访问权来获取它,因此请检查文件是否存在以及您的用户是否具有写权限。
另一个可能的陷阱、fglcomp、fglrun 功能与它们的 Informix 等效项关于当前工作目录的功能相同,并且在同一目录中混合源和编译对象。如果使用 Genero Studio,默认情况下它会将源和编译对象保存在不同的目录中,因此要么将 TargetDirectory 更改为不使用 bin,要么注意使用您的权限、文件位置等,在运行时您可能位于 bin 目录中。
推荐阅读
- java - 为什么“i”的值打印 3 次,在插入排序算法中应该只打印 1 次
- python - 模糊匹配 R 或 Python 中的两列
- java - 这个 UML 图中的这个包外观图标是什么意思?
- android - AdRequest isTestDevice 在 Android 8 上的发布版本中返回 false
- hadoop - 文件未使用 Streamsets 从本地加载到 HDFS(已成功验证!)
- javascript - 是否可以将 IE 配置为允许 XHR 从 HTTPS 访问“http://127.0.0.1”?
- powershell - 自动生成字段变量
- html - 我希望我的网站适合屏幕高度,尽管内容太少
- google-app-engine - 如何迁移ndb模型中新增的python类属性?
- git - git 远程更新失败。但是更改遥控器顺序后成功