如何在同一屏幕上控制多个子文件?
How can I control multiple subfiles on the same screen?
我在同一屏幕上遇到多个子文件的问题。我水平显示两个子文件,我只能在第二个加载的子文件上使用向上翻页和向下翻页。我在某处读到您可以更改 "active" 子文件,但没有找到任何进一步的信息。
RPG代码:
// display screen
if #rrn02 <> 0 and #rrn03 <> 0;
write msgctlw;
write win01;
write ctl03;
write ctl02;
read ctl02;
read ctl03;
else;
*in02 = *on;
@err00 = *on;
@errmsg = '*Error: No Records Retrieved';
@errmsgs1(@errmsg);
ENDIF;
第一个子文件:
A R SFL02 SFL
A WINCD1 5 2 1
A COLOR(YLW)
A WINST1 2 2 7
A COLOR(YLW)
A WINCITY1 15 2 11
A COLOR(YLW)
A 3 1'*-----------------------*'
A R CTL02 SFLCTL(SFL02)
A N61 SFLDSPCTL
A N60 SFLDSP
A SFLPAG(5)
A SFLSIZ(500)
A WINDOW(4 8 13 25)
A OVERLAY
A N60 SFLEND(*MORE)
A 62 SFLCLR
A SFLCSRRRN(&#CSR02)
A SFLFOLD(CA11)
A CF06
A CF15
A WDWBORDER((*DSPATR ND))
A
A #RRN02 4S 0H SFLRCDNBR(CURSOR)
A #CSR02 5S 0H
A @CURRCD 10A H
A @CURFLD 10A H
A @CURPOS 4S 0H
A 1 1'Zip '
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
A 1 7'St'
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
A 1 11'City '
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
第二个子文件:
A R SFL03 SFL
A WINCD2 5 2 1
A COLOR(YLW)
A WINST2 2 2 7
A COLOR(YLW)
A WINCITY2 15 2 11
A COLOR(YLW)
A 3 1'*-----------------------*'
A R CTL03 SFLCTL(SFL03)
A N61 SFLDSPCTL
A N60 SFLDSP
A SFLPAG(5)
A SFLSIZ(500)
A WINDOW(4 41 13 25)
A OVERLAY
A N60 SFLEND(*MORE)
A 62 SFLCLR
A SFLCSRRRN(&#CSR03)
A SFLFOLD(CA11)
A CF06
A CF15
A WDWBORDER((*DSPATR ND))
A
A #RRN03 4S 0H SFLRCDNBR(CURSOR)
A #CSR03 5S 0H
A @CURRCD 10A H
A @CURFLD 10A H
A @CURPOS 4S 0H
A 1 1'Zip '
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
A 1 7'St'
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
A 1 11'City '
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
不要READ
特定格式...
改为阅读文件。您可以设置指示器来告诉您用户按下命令键时所处的 subf 格式。
经过更多的研究,我发现了问题的根源。当 OS 只能处理垂直堆叠的两个子文件时,我试图并排放置两个子文件。
摘自 this 博客 post:
Side by side subfile has to be handled by programming as OS/400 will not handle it automatically.
为了达到我想要的结果(两个并排的列表),我将把我的数据放入一个子文件中,并在我的 DDS 中使用 SFLLN(2) 将其分成两行。
我在同一屏幕上遇到多个子文件的问题。我水平显示两个子文件,我只能在第二个加载的子文件上使用向上翻页和向下翻页。我在某处读到您可以更改 "active" 子文件,但没有找到任何进一步的信息。
RPG代码:
// display screen
if #rrn02 <> 0 and #rrn03 <> 0;
write msgctlw;
write win01;
write ctl03;
write ctl02;
read ctl02;
read ctl03;
else;
*in02 = *on;
@err00 = *on;
@errmsg = '*Error: No Records Retrieved';
@errmsgs1(@errmsg);
ENDIF;
第一个子文件:
A R SFL02 SFL
A WINCD1 5 2 1
A COLOR(YLW)
A WINST1 2 2 7
A COLOR(YLW)
A WINCITY1 15 2 11
A COLOR(YLW)
A 3 1'*-----------------------*'
A R CTL02 SFLCTL(SFL02)
A N61 SFLDSPCTL
A N60 SFLDSP
A SFLPAG(5)
A SFLSIZ(500)
A WINDOW(4 8 13 25)
A OVERLAY
A N60 SFLEND(*MORE)
A 62 SFLCLR
A SFLCSRRRN(&#CSR02)
A SFLFOLD(CA11)
A CF06
A CF15
A WDWBORDER((*DSPATR ND))
A
A #RRN02 4S 0H SFLRCDNBR(CURSOR)
A #CSR02 5S 0H
A @CURRCD 10A H
A @CURFLD 10A H
A @CURPOS 4S 0H
A 1 1'Zip '
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
A 1 7'St'
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
A 1 11'City '
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
第二个子文件:
A R SFL03 SFL
A WINCD2 5 2 1
A COLOR(YLW)
A WINST2 2 2 7
A COLOR(YLW)
A WINCITY2 15 2 11
A COLOR(YLW)
A 3 1'*-----------------------*'
A R CTL03 SFLCTL(SFL03)
A N61 SFLDSPCTL
A N60 SFLDSP
A SFLPAG(5)
A SFLSIZ(500)
A WINDOW(4 41 13 25)
A OVERLAY
A N60 SFLEND(*MORE)
A 62 SFLCLR
A SFLCSRRRN(&#CSR03)
A SFLFOLD(CA11)
A CF06
A CF15
A WDWBORDER((*DSPATR ND))
A
A #RRN03 4S 0H SFLRCDNBR(CURSOR)
A #CSR03 5S 0H
A @CURRCD 10A H
A @CURFLD 10A H
A @CURPOS 4S 0H
A 1 1'Zip '
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
A 1 7'St'
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
A 1 11'City '
A COLOR(GRN)
A DSPATR(RI)
A DSPATR(UL)
不要READ
特定格式...
改为阅读文件。您可以设置指示器来告诉您用户按下命令键时所处的 subf 格式。
经过更多的研究,我发现了问题的根源。当 OS 只能处理垂直堆叠的两个子文件时,我试图并排放置两个子文件。
摘自 this 博客 post:
Side by side subfile has to be handled by programming as OS/400 will not handle it automatically.
为了达到我想要的结果(两个并排的列表),我将把我的数据放入一个子文件中,并在我的 DDS 中使用 SFLLN(2) 将其分成两行。