最近发现了ILE C source之类的通过多记录显示文件读写物理文件的东西,所以尝试自己创建一个。
因此,有可能用 RPG 和某些指标来做到这一点。
看起来像:
C Exfmt Screen
C If *In25 = *Off
C ...enter key pressed
C Else
C ...function key pressed
C EndIf
我们在哪里
d Cmd_Enter c Const(x'F1')
但是,当我尝试用 C 做完全相同的事情时,编译失败了。
这里是示例的一部分:
#define ENTER 0xF1;
...
_SYSindara indicator_area;
do
{
if(somevar != NULL)
{
indicator_area[ENTER] == IND_OFF;
//do stuff
if (indicator_area[EXIT] == IND_ON)
{
break;
}
}
while(indicator_area[ENTER] != IND_ON);
我在包含 ENTER
的每一行上都遇到了错误:
MYLIB/PGMSRC(SRC),113.27:CZM0275(30) 意外文本“;”遇到了。
我尝试将 ENTER
定义为 0xD
(输入 ASCII 码)、0xF1
、24
( *in25 就像在上面的源代码中一样)- 没有任何帮助使此代码正常工作。
欢迎任何提示。
最佳答案
在我看来,您的困惑在于您正在尝试使用 AID 字节 x'F1'
的 ENTER 值来索引您定义的 indicator_area
与
_SYSindara indicator_area;
这将不起作用,因为 _SYSindara
被定义为 char[99]
。您可以将显示文件中的指示器区域检索到那里,但是您将看不到驻留在显示文件 I/O 反馈区域中的 AID 字节。这是使用
#include <xxfdbk.h>
_XXIOFB_T *iofb; /* Pointer to the file's feedback area */
_XXIOFB_DSP_ICF_T *dspfb; /* Pointer to display file specific feedback area */
iofb = _Riofbk ( fp );
dspfb = iofb + iofb->file_dep_fb_offset;
if (dspfb->AID_byte_indic == ENTER) {
// do something
}
您可以找到更多信息here和 here在 IBM i 的 IBM 知识中心。在 IBM i
上的 QSYSINC/H(XXFDBK.C)
中。
关于c - 按回车键在多个显示记录格式之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50157055/