iSeries与C语言中的CLRSCR功能匹配
2018年12月4日 16:50

我曾用C语言尝试过一点手。我想所有对C有一点了解的人都必须熟悉CLRSCR功能。C程序中的CLRSCR功能即C程序中的清除屏幕功能会清除之前的交互式显示,并在再次调用程序时抛出一个新的空白屏幕。

我一直想在iSeries上模拟它,并想知道它是否可以在iSeries上实现。答案是肯定是可能的。在iSeries上,该交互式显示是“显示程序消息”屏幕。

假设您正在运行RPG程序,并且想要检查控件是否到达程序中的特定子例程/语句no。您可以在RPG程序中使用DSPLY操作码进行检查。DSPLY操作码在“显示程序消息”屏幕上显示特定变量的值。

假设您有一个名为EMPINF的PF,其记录格式为REC,并且数据如下所示。

iSeries与C语言中的CLRSCR功能匹配

然后,您有一个RPG程序REMP,它从该文件中读取记录。您只想检查您的程序是否正在读取EMPINF文件中的所有记录。为此,您可以在Do While循环中使用因子1中的员工姓名字段(ENAME)的DSPLY操作码,如下所示。

iSeries与C语言中的CLRSCR功能匹配

CLRSCR是一个CL程序,如下所示:

iSeries与C语言中的CLRSCR功能匹配

首先,在RPG程序中注释掉CALL'CLRSCR'12中的语句,然后编译并运行该程序。您将看到所有员工的姓名都显示在“显示程序消息”屏幕上的物理文件EMPINF中。现在,再次运行RPG程序。您会注意到,所有员工的姓名再次显示在“显示程序消息”屏幕上的物理文件EMPINF中,但之前调用RPG程序显示的值仍显示在“显示程序消息”屏幕上。

但是你希望每次调用你的程序时,都应该刷新“显示程序消息”屏幕,即它应该被清除,并且不应该有先前程序调用抛出的任何值或消息。

你怎么做到这一点?

只需取消注释RPG程序中的CALL'CLRSCR'12语句,然后编译并运行该程序。现在,每次运行程序时,首先刷新“显示程序消息”屏幕,即没有先前的值或消息,您将看到所有员工的姓名都显示在物理文件EMPINF中目前的节目电话。

CL程序CLRSCR清除“显示程序消息”屏幕。实际上,“显示程序消息”屏幕显示发送到作业的所有值和消息(即您登录的会话)外部消息队列,即* EXT。当从RPG程序REMP调用CL程序CLRSCR时,它会清除作业的外部消息队列,因此每次显示Fresh“显示程序消息”屏幕时。

请注意,CL程序中使用的RMVMSG命令无法在命令行中输入,因为不允许以交互方式输入它。这就是我制作这个3行CL程序的原因。

786 157

上一篇:在Mac OSX上配置TCP / IP和代理设置

下一篇:Windows Server 2008 R2

相关文章

旗下产品

软件IP代理 企业HTTP代理 开放HTTP代理 高速硬件IP代理
@ 2016 - 2024.猎鹰网安IP代理, All rights reserved. 鄂ICP备18017015号-4
禁止利用本站资源从事任何违反本国(地区)法律法规的活动
新闻中心 | 其他新闻 | 帮助文档