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

Ibm midrange 如何在CL编程中使用CHGDTA?(as400),ibm-midrange,Ibm Midrange,请注意这是学校的任务 我正在尝试创建一个CL计划,这是我收集的需求分解: CL程序调用DFU程序 将弹出一个带有选项的菜单 - Enter CIF data - Edit CIF data - Exit 当用户选择一个选项时,将显示一条消息,说明已采取了一项操作,例如:“CIF数据输入程序正在执行” 我对CL编程非常陌生,我尝试过各种事情,在语句0000000 50中不断遇到未受CIFCL99(我的CL程序

请注意这是学校的任务

我正在尝试创建一个CL计划,这是我收集的需求分解:

  • CL程序调用DFU程序
  • 将弹出一个带有选项的菜单

                 - Enter CIF data
    
                 - Edit CIF data
    
                 - Exit
    
  • 当用户选择一个选项时,将显示一条消息,说明已采取了一项操作,例如:“CIF数据输入程序正在执行”

我对CL编程非常陌生,我尝试过各种事情,在语句0000000 50中不断遇到未受CIFCL99(我的CL程序)监控的错误CPF0001(应用程序错误),我不知道这意味着什么,我查找了它,变得更加困惑

这是我的CL程序的屏幕截图,我知道,
SNDPGMMSG
没有任何作用,因为我非常确定我需要设置弹出消息的条件。但我甚至无法启动DFU计划。我甚至不知道我的语法是否错误,我没有声明任何变量,所以我不需要更正?我看了几十个例子,并试图从中有所收获

这是图书馆的结构。QCLSRC内部是CLLE程序CIFCL99的源代码,QDDSRC内部是CIFFILE和CIFFILE1的源代码


感谢您的时间。

仅供参考:屏幕截图不仅是矫枉过正的,还可以防止将源语句从文本版本的描述复制到基于文本的5250屏幕中,或使用复制\粘贴到后续回复中,并防止搜索潜在相关文本以发现类似问题;总皮塔岛

无论如何,问题似乎很可能是更改数据(CHGDTA)上指定的文件不是预期的文件类型;名为CIF的文件可能是设备文件[属性DFU],而不是数据库文件,后者是以下文件之一:CIFFILE[属性PF-DTA]或CIFFILE1[属性LF-DTA;虽然PDM省略了*DTA,好像LF不能有*SRC属性,但他们显然不知道更好的;-)


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

DFU程序影响“调用DFU程序”的要求(DFUPGM)更改数据(CHGDTA)命令语句的参数规范;即完全删除“调用PGM(CIF)”,因为直接调用DFU程序不是调用DFU程序的正确方式,“CHGDTA DFUPGM(CIF)”是调用DFU程序的正确方式。学校作业可能需要显示文件(DSPF)将在其中创建选项(输入数据、编辑数据、退出)将出现;这将与提供日期输入\更新的DFU显示文件分开;请参阅SNDRCVF。但是,我不知道DFU更改数据功能是否能够提供仅插入或仅更新功能。消息传递也很棘手,如果不是中断的话[延迟一定的时间或直到用户干预,如按enter键继续…这将是奇怪的]或者是暂时的,可能永远不会被注意到。这是惊人的和超级信息非常感谢你,我现在不是在一台可以访问as400的计算机上,但一旦我完成了工作,我就会马上开始。只是一个简单的问题,你提到的显示文件,是我可以在CL中创建的东西,还是我只能通过SDA和这也需要从CL程序调用?我删除了
调用PGM(CIF)
line,现在它可以编译了,我可以运行它,但什么也没有发生。它只是停留在同一个屏幕上。程序没有出现。我尝试用CIFFILE和CIFFILE1替换CIF,但到目前为止什么都没有发生。我是否需要额外的值来运行CHGDTA?或者需要额外的命令来启动DFU程序?DSPF对象是从sour创建的ce;屏幕设计辅助(SDA)只是一个交互式实用程序,用于帮助生成数据描述规范(DDS)源和DSPF。创建显示文件(CRTDSPF)命令从命名源成员(SRCMBR)和源文件(SRCFILE)创建文件,而不考虑DDS源的来源。发送/接收文件(SNDRCVF)是要求CL程序打开\显示显示文件并与用户交互以进行输入(接收)和输出(发送)的运行时请求。关于假定已更正的CHGDTA调用,“保持在同一屏幕上”,该功能存在一个不幸的问题,实际上是一个缺陷,失败的调用不会发出转义消息。呃。因此,与之前的CPF0001转义消息不同,根据消息CPD0172,“调用时传递的参数与所需参数不匹配。”当调用失败时,一个失败的CHGDTA请求很可能正好进入CLP:-(按F10=包含详细消息或发出显示作业日志(DSPJOBLOG))中的下一条语句要查看CHGDTA request.CRPence之后记录的错误,您真的很出色,非常感谢您的帮助。当我查看DSPJOBLOG后,它变得清晰起来,我只是没有说明DFU程序在哪里lol,现在我让它完美地运行,并显示一条消息,说明程序正在执行。我发现我将是