如何在 CL 编程中使用 CHGDTA? (as400)

How to use CHGDTA in CL Programming ? (as400)

请注意这是学校的任务

我正在尝试创建一个 CL 程序,这是我收集到的要求的细分:

我是 CL 编程的新手,我尝试过各种方法,并不断遇到 CIFCL99(我的 cl 程序)未监控的错误 CPF0001(应用程序错误)在语句 000000050,我不知道是什么那就是说,我查了一下,更加困惑了。

这是我的 CL 程序的屏幕截图,我知道 SNDPGMMSG 不会执行任何操作,因为我很确定我需要设置条件才能弹出该消息。但我什至无法启动 DFU 程序。我什至不知道我的语法是否错误,我没有声明任何变量,所以我不需要对吗?我已经查看了数十个示例并尝试从中得到一些东西。

这是图书馆的结构。 QCLSRC里面是CLLE程序CIFCL99的源码,QDDSSRC里面是CIFFILE和CIFFILE1

的源码

感谢您的宝贵时间。

仅供参考:屏幕截图不仅矫枉过正,它们还阻止将源语句从 text 版本的描述复制到基于文本的 5250 屏幕,或用于 copy\paste 进入后续回复,并防止搜索可能相关的 text 以查找类似问题;一个完整的 PITA IMO。

无论如何,问题似乎可能是在更改数据 (CHGDTA) 上指定的 file 不是 expected 文件类型;名为 CIF 的文件大概是 Device File [attribute DFU] 而不是 Database File任一文件:CIFFILE [属性 PF-DTA] 或 CIFFILE1 [属性 LF-DTA;虽然 PDM 省略了 *DTA,就好像 LF 不能有 *SRC 属性一样,但他们显然不知道更好 ;-)

至于消息CPF0001,来源很容易确定。当该消息出现时,按 F1=Help [将光标定位在消息文本 "Error found on &1 command." 上,然后按 F10=Display Messages In Job Log 查看作业日志中前面的错误消息是什么。对于在请求 之后 出现的消息 [即CALL 调用] 和 "Error found..." 之前,再次按 F1=帮助,然后阅读问题和原因文本。 [编辑] 更正将 CALL 语句命令命名为语句 50 上的错误所标识的问题,该错误几乎肯定对应于 00005.00 行,并且在 CRTCLPGM 生成的编译器列表中可见[或 CRTBNDCL].[/edit]